css+vue实现流程图
主要用css+flex布局实现样式部分,vue实现组件逻辑。首先看下效果吧:

当空间不够时还可以使用拖拽功能

接下来说明下实现思路
1.首先是实现单个节点样式,这个很简单不谈了,节点后都跟有一小段连接线,只有叶子节点没有连接线。使用伪元素after实现连接线,子节点添加额外样式来取消连接线。

2.然后是父子节点之间的连接线,因为有两种情况(a.只有一个子节点的;b.有多个子节点),所以要分情况实现

2.1子节点公共样式process-tree-childNodes设置为inline-block;vertical-align: middle;以此来实现与父节点的样式对齐; 紧跟的div设置为flex竖排布局
2.2单个子节点添加额外样式single-node,设置他的伪元素before为横向连接线,;多个子节点添加额外样式multiply-node,设置伪元素before为竖向的连接线
2.3多个子节点时的竖向连接线会多出来一部分,通过设置第一个子树节点的after伪元素和最后一个子树节点的after伪元素来遮盖住超出部分,其余的横向连接线都通过设置子树节点的before伪元素实现

好了样式部分的大体思路就是这样了。
然后是vue部分的实现,主要是各种样式的添加,树结构的数据要求组件应该可以递归使用

最后是拖拽功能,通过指令实现
首先在外部包装一层,设置overflow:hidden,内部的流程树组件设置scrolll


initDomwidth方法用来设置树的宽度,通过获取所有叶子节点的距离根节点左边的距离,取最大值做为树的宽度,防止宽度不够导致树变形。为了能够拖拽,在乘以一个系数作为最终的树宽度。

我已经上传了组件到npm,感兴趣的盆友可以试试看,npm install process-tree-vue。
最后,这个只是试验性质的demo,因为流程图多用于做展示,展示要求各种各样,可以在此基础上做调整修改来适应要求。
css+vue实现流程图的更多相关文章
- 记录近期面试题,面试总结 (从css - vue 全面面试题)
记录近期换工作时遇到的面试题和面试题答案 css 部分 盒模型 问题:说一下 css 的盒模型 盒模型分为标准模型和怪异盒模型(IE 盒模型) 标准盒模型:盒模型的宽高只是内容(content)的宽高 ...
- css+vue实现添加购物车效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- animate.css VUE 使用
1.安装 npm i animate.css --save 2.引用 main.jsimport 'animate.css' 3.使用 <img v-show="welcomeinde ...
- vue中使用animate.css动画库
1.安装: npm install animate.css --save 2.引入及使用: //main.js中 import animated from 'animate.css' Vue.use( ...
- Vue项目零碎知识(全局js,css配置,element-UI,bs使用, img动态配置,js数组)
全局css样式,首先在静态assets中写好文件,然后要在main.js中配置 // 配置全局css样式 // import '@/assets/css/global.css' require('@/ ...
- vue中使用transition和animate.css动画效果
一.单个动画中,使用div中引用animate动画 1.下载依赖 npm install animate.css –save 2.main.js中全局引用 import animate from 'a ...
- vue 项目如何使用animate.css
Animate.css是一款酷炫丰富的跨浏览器动画库,它在GitHub上的star数至今已有5.3万+. 在vue项目中我们可以借助于animate.css,用十分简单的代码来实现一个个炫酷的效果!( ...
- day 87 Vue学习六之axios、vuex、脚手架中组件传值
本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...
- day 84 Vue学习六之axios、vuex、脚手架中组件传值
Vue学习六之axios.vuex.脚手架中组件传值 本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...
随机推荐
- Windows系统中环境变量不展开的问题
Windows系统中环境变量不展开的问题 问题现象:Windows.System32等系统目录里命令,无法通过Path搜索路径来执行.查看Path环境变量结果如下: D:\>echo %Path ...
- 【洛谷 P4052】 [JSOI2007]文本生成器(AC自动机,DP)
题目链接 AC自动机上dp第一题嗷. 如果直接求可读文本的数量,显然要容斥,不好搞. 于是考虑求不可读文本的数量,再用\(26^m\)减去其即可. 建出AC自动机,如果一个节点为单词结尾或其fail链 ...
- Expanded, SingleChildScrollView, CustomScrollView, container, height, width
SingleChildScrollView, CustomScrollView, container, init: double.inifinity. then use Expanded to con ...
- Ubuntu linux安装完成后隐藏linux磁盘挂载点
方案1 打开注册表 , 找到这个位置: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explore ...
- iOS - 适配iOS 11
http://www.10tiao.com/html/330/201707/2653579210/1.html 存档 导语:iOS 11 为整个生态系统的 UI 元素带来了一种更加大胆.动态的新风格. ...
- vue项目启动报错You may use special comments to disable some warnings.
在build/webpack.base.conf.js文件中,注释或者删除掉:...(config.dev.useEslint ? [createLintingRule()] : []),
- ElementUI 源码定制防坑指南
背景 我司OA系统公文管理模块Office在线编辑使用的是金格IWebOffice中间件[PPAPI插件,通过<object>标签加载],IWebOffice在chrome中设置div盒子 ...
- tp5模板中js方法中url函数传参的解决办法
代码如下: layer.msg(data.msg, {icon: 1,time:1500,shade: 0.1}, function(index){ layer.close(index); var s ...
- Django Redis配置
Django Redis配置 # Django默认不支持redis,需要第三方插件来支持 pipenv install django-redis pipenv install hiredis # 不是 ...
- Twitter分布式自增ID算法snowflake原理解析(Long类型)
Twitter分布式自增ID算法snowflake,生成的是Long类型的id,一个Long类型占8个字节,每个字节占8比特,也就是说一个Long类型占64个比特(0和1). 那么一个Long类型的6 ...