简单拖拽即生成网页 VvvebJs
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单拖拽即生成网页 VvvebJs相关的知识,希望对你有一定的参考价值。
参考技术A
VvvebJs是一个开源的网页拖拽自动生成的JavaScript库,你可以以简单拖拽的方式生成自己需要的网页样式,内置jquery和Bootstrap,你可以拖拽相关的组件进行网页的构建,非常的方便,而且可以实时修改代码,功能丰富,使用简单,界面友好,特别适合一些专注于展示的网页设计,需要的朋友不可错过!
在线演示:http://www.vvveb.com/vvvebjs/editor.html
相关特性
1、组件和块/片段拖放;
2、撤销/重做操作;
3、一个或两个面板界面;
4、文件管理器和组件层次结构导航添加新页面;
5、实时代码编辑器;
6、包含示例php脚本的图像上传;
7、页面下载或导出html或保存页面在服务器上包含示例PHP脚本;
8、组件/块列表搜索;
9、Bootstrap 4组件等组件。
默认情况下,编辑器附带Bootstrap 4和Widgets组件,可以使用任何类型的组件和输入进行扩展。
使用方式
要初始化编辑器,调用Vvveb.Builder.init。第一个参数是要加载以进行编辑的URL,它必须位于相同的子域中才能进行编辑。第二个参数是页面加载完成时调用的函数,默认情况下调用编辑器Gui.init();
结构
Component Group是一个组件集合,例如Bootstrap 4组由Button和Grid等组件组成,该对象仅用于在编辑器左侧面板中对组件进行分组。例如,Widgets组件组只有两个组件视频和地图,并被定义为如下
Component是一个对象,它提供可以在画布上放置的html以及在选择组件时可以编辑的属性,例如Video Component,具有Url和Target属性的html链接Component定义为:
在Component属性集合中使用Input对象来编辑属性,例如文本输入,选择,颜色,网格行等。例如,TextInput扩展Input对象并定义为:
输入还需要一个在编辑器html(在editor.html中)定义为 以上是借助浏览器翻译工具,对官网的文档进行简单的翻译,可能会有些不够准确的地方,感兴趣的小伙伴可以直接查看相关文档!
设计界面预览
总结
VvvebJs是一个非常强大的网页可视化生成构建工具,让不懂网页设计的小伙伴们也能够通过拖拽来生成美观大方的网页出来,让设计网页就像设计图片一样,VvvebJs特别适合展示型网页,甚至可以不需要代码就能完成一项复杂的网页设计,总体来说,VvvebJs是一个值得尝试的工具!
原文来自:https://www.linuxprobe.com/?p=155868
H5 拖拽操作
H5 拖拽操作
前言
在原生H5中,可以通过提供的api实现在网页内元素的拖拽操作。相对于传统的写法更加的简单。
而想要实现拖拽,主要需要进行两个方面的工作,第一是给元素设置draggable=‘true‘
属性,img和a标签是默认允许拖拽的。第二是编写拖拽相关的事件处理函数。
拖拽主要的过程
在整个拖拽的过程中,可以把行为分成两个部分,一部分是关于拖拽元素的操作,另外一个部分是关于拖拽元素最终放置的容器上的操作。
当拖拽元素时,拖拽事件执行的流程如下:
dragstart -> drag -> dragend
dragstart
事件的触发时机是在按住鼠标开始拖动的时候,只会触发一次。
drag
事件是在按住鼠标拖动的过程中触发,是属于持续触发的状态。
dragend
事件是在释放鼠标之后触发,此时无论是已经将目标放在了有效的位置还是放在了无效的位置上,都会触发这个事件。
放置元素主要经历的过程
当我们放置元素时,需要经历的事件变化流程如下:
dragenter -> dragover -> drop
dragenter
事件,当拖拽元素被拖拽到了目标元素上,就会被触发
dragover
事件,当拖拽的元素被拖拽到了目标元素上并且在目标元素上移动时,就会持续性的触发。
drop
事件,拖拽的元素放在了目标元素身上的时候会被触发。
tip: 这当中在
dragover
事件之后还包含了dragleave
事件,当元素离开了目标元素时触发。
整体的拖拽流程如下:
dragstart->drag->dragenter->dragover->dragleave->drop->dragend
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.box {
width:100px;
height: 100px;
background-color: lightblue;
}
#content {
width:300px;
height: 300px;
border:2px solid #222;
position: absolute;
right:0;
top:0;
}
</style>
</head>
<body>
<div class="box" draggable='true'></div>
<div id="content"></div>
</body>
<script type="text/javascript">
var box = document.getElementsByTagName('div')[0];
var content = document.getElementById('content');
box.ondragstart = function() {
console.log(1111)
event.dataTransfer.setData('Text',this.className);
}
box.ondrag = function() {
console.log(2222)
}
box.ondragend = function() {
console.log(3333)
}
content.ondragenter = function() {
console.log('enter')
}
content.ondragover = function() {
console.log('over')
event.preventDefault();
}
content.ondrop = function() {
console.log('drop')
var data = event.dataTransfer.getData('Text');
this.appendChild(document.getElementsByClassName(data)[0])
}
</script>
</html>
实现的效果:
tip: 想要顺利的完成拖拽,需要在
dragover
事件里阻止默认行为,event.preventDefault();
火狐的兼容问题
在火狐浏览器里,如果仅仅给元素设置draggable=‘true‘
这个属性,是无法完成拖拽的[谷歌没有问题]。
要解决这个问题必须为拖拽元素绑定dragstart事件处理函数,并且在该函数中调用event.dataTransfer.setData函数
// box 是拖拽的元素
box.ondragstart = function() {
console.log(1111)
event.dataTransfer.setData('Text',this.className);
}
同时,在火狐浏览器当中,当我们直接进行拖拽的时候,发现会产生打开新选项卡的现象,解决办法是在所有的容器代码里,都加上阻止默认行为的代码:
event.preventDefault();
event.stopPropagation();
以上是关于简单拖拽即生成网页 VvvebJs的主要内容,如果未能解决你的问题,请参考以下文章