LowCode
Это эффективная и высокопроизводительная платформа разработки с низким кодом и перетаскиванием. Это также направление, которое автор исследует в последнее время. Я написал много статей о плане реализации платформы визуального построения. Здесь я приведет вас к изучению нового направления -Визуальная строительная платформа на основе схемы естественного потока.
достигнуто до насh5-dooringПри создании платформы мы используем метод компоновки сетки для создания перетаскивания.H5页面
илиWeb app
, преимущество в том, что он гибкий и простой, у пользователя в принципе нет никаких затрат на использование, а также он может делать определенное горизонтальное расширение во внешнем слое, но есть несколько недостатков:
- Реализация вложенных компонентов более сложна
- нет понятия слоев
Хотя проблема слоев и вложенности может быть решена путем преобразования, в последнее время также предпринимаются усилия для достижения этого направления (хотя и вопреки первоначальному замыслу дизайна,Первоначальная цель создания дверей состоит в том, чтобы стереть концепцию слоев и вложенности и сделать здание плоским и интеллектуальным, поэтому свободной схемы планировки не существует.)
Но если должны быть реализованы функции вложенности и слоев, есть ли другое более простое решение?В настоящее время автор думает о двух решениях:
- Измените умную раскладку на свободную, то есть вы можете использовать что-то вроде
react-resizable
эта схема - Реализовано на основе естественного потока, то есть стирания концепции позиционирования, полностью на основе порядка элементов в документе, выбор иерархии и позиционирования предоставляется пользователю
Потому что автор первой схемы находится вdooring
Версия была реализована в первые дни, и макет сетки окончательно устарел, поэтому давайте обсудим реализацию второго решения.
Перетащите и отпустите, чтобы создать страницы на основе макета естественного потока
Преимущество макета естественного потока заключается в том, что нам не нужно использовать позиционирование для ограничения положения элементов и другой информации, а нужно размещать элементы по пути потока html-документа, и пользователи могут гибко задавать уровень элементов (layer
) и смещение (transform
), давайте взглянем на простой эффект реализации.
1. демонстрационный эффект
Из приведенной выше демонстрации видно, что компоновка компонентов на холсте полностью является методом потока документов по умолчанию, поэтому у нас более гибкая реализация компоновки.
2. Идеи реализации
Конкретные идеи реализации в основном делятся на следующие части:
- Перетащите область компонента на холст
- Перетаскивание области холста
- Редактор компонентов и механизм обновления
По первому и третьему пунктам мы находимся вH5-dooringЭто было реализовано в , и если вам интересно, вы можете прочитать мою предыдущую статью, Здесь мы сосредоточимся на реализации перетаскивания в области холста, которая также является относительно основной ссылкой.
2.1 Базовое введение в API перетаскивания H5
перетащите (Drag
а такжеdrop
)ДаHTML5
Стандартный компонент, уже поддерживаемый большинством браузеров Плагин перетаскивания, который мы сейчас используем, в основном основан наH5
перетащитьAPI
Добиться, собственно, добиться первой точки перетаскивания области компонента на холст, мы можем сделать это нативно, здесь автор вкратце вводит следующее.
Сначала давайте взглянем на полный процесс перетаскивания:
- Первое, что нужно сделать, это сделать элемент перетаскиваемым (например,
<img draggable="true" />
) - Спроектируйте, что происходит, когда вы перетаскиваете (необходимо использовать
ondragstart
событие иsetData(你要传递的数据)
) - Куда его поместить, то есть целевой контейнер (обычно привязанный к целевому контейнеру
ondragover
а такжеondrop
мероприятие)
С помощью вышеуказанных 3 шагов мы можем выполнить первое требование.Автор пишет простую демонстрацию для вашей справки:
<script type="text/javascript">
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev){
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev){
ev.preventDefault();
let data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<div id="box" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<img id="drag" src="dooring.png" draggable="true" ondragstart="drag(event)" width="336" height="69" />
То есть соответствующая область перетаскивания наших компонентов, как показано на следующем рисунке:
2.2 Реализация макета перетаскивания в области холста
Поскольку в предыдущей версии мы использовали макет сетки для реализации интеллектуального перетаскивания, поскольку внутренний механизм позиционирования использовал абсолютное позиционирование (absolute
), поэтому сложнее реализовать иерархические и фиксированные компоненты. Если представление компонентов полностью выходит за рамки ограничений позиционирования, мы можем решить вышеуказанную дилемму. Итак, здесь мы ищем решение -Механизм сортировки с помощью перетаскивания.
Закон компоновки естественного потока заключается в том, что по умолчаниюhtml
страница основана наdom
Порядок появления устроен, что мы называем укладкой.
Мы можем следовать этому дизайну,Измените положение компонентов путем сортировки, чтобы добиться естественного макета страницы..
Затем вернемся к проблеме компоновки, упомянутой выше.Например, чтобы получить сеточную компоновку, нам нужно только определитьflex
Контейнер, просто перетащите компонент в контейнер, что решает проблему вложенности.В то же время мы также можем спроектировать номер сетки вложенного контейнера, чтобы можно было достичь следующих эффектов:
Библиотека сортировки перетаскиванием, которую мы можем использовать:
- sortable
- Vue.Draggable
- react-dnd
Есть много отличных библиотек, поэтому я не буду перечислять их все здесь.
3. Как реализовать иерархию и вложенность
По сути, в приведенных выше идеях реализации мы решили проблему вложенности, то есть предоставить компонент-контейнер для перетаскивания и использовать перетаскивание, введенное автором выше.api
Это может быть достигнуто. На уровне компонентов, поскольку мы используем компоновку естественного потока, мы можем легко установить свойства позиционирования элемента. Например, мы предоставляем настройку позиционирования:
О том, как спроектировать редактор динамических свойств, автор также подробно рассказал в предыдущей статье, вы можете обратиться к:
Вышеприведенное является базовой реализацией компоновки естественного потока, и автор такжеgithub
Синхронизируйте наши последние результаты.
H5-Dooring
редакторwiki: GitHub.com/Mr X U соус/Также…
наконец
найти его полезным? Любимый, если хотите, кстатиотличныйЧто ж, ваша поддержка - моя самая большая поддержка! Поиск в WeChat »Интересный разговор о фронтенде», откройте для себя больше интересных игр H5, webpack, node, gulp, css3, javascript, nodeJS, визуализацию данных Canvas и другие знания о интерфейсе и реальных боях.