很久没有写博客了,自从工作忙了就忘了学习新东西,真是越大越懒。

做项目中,需要一个process流程的UI组件,翻遍公司组件和业界框架,都没有满足自适应要求的现成的process组件,只能自己实现。实现的过程中,发现有两个有意思的地方,特此分享出来。

首先看看最后需要的效果:=> 点我查看demo

实现

流程组件中,两个hr构成圆点之间的连接线。

圆点用span 通过 border-raduis: 50%实现。

接下来,第一个难点来了,如何实现 居中 并且 自适应。

自适应的意思是,拉伸浏览器的时候,流程组件也跟着变化长度,并且不变型。那么,我们自然的想到了用百分数设置宽度。

第一张方案:

用 outer 居中, inner平分内部,即每个inner占用 1/7 = 14.2%。内部原点span和文字通过每个inner的text-align:center;居中。

接下来就连接线hr的宽度的计算就成了问题。比如连接线hr的起始位置怎么计算?inner的1/2,也就是1/14=0.071?

第一次inner的1/7就有省略小数点的误差,再一半肯定更有误差,hr的宽度会再乘以2,乘以3,误差会更大,很有可能出现下面的情况:

第二种方案:

要解决节点span长度计算的问题,就必须让其乘以的倍数是精确可计算的。于是:

通过外层outer实现居中,inner+左侧等宽的空白 平分内部宽度,即 1/8=12.5%。

这里又来了另一个问题:如何使下方文字左移自身宽度一半?

父元素设置 text-align: center; ?? 不行,我们的圆点span只能从最左边开始。

自身position: absolute; left: 50%; margin-left: -宽度?不行,自身宽度不知道,变化的。

position: relative; left: -50%?不行,left 百分比是以最近已定位父元素的宽度为参照。

最后解决办法是,增加一层父元素,使父元素宽度为自身宽度。这样left百分比就可以相当于以自身宽度。

最后的效果:

02.06更新

由于是跨部门合作,对方返回的流程状态总是在变,从7个变到5个,从5个变到6个。

7个状态有8个span,这样 1/8 = 12.5

5个是加3个变8,也是12.5。通过margin-left微调。

6个同理,加2变8,通过margin-left微调。

最新文章

  1. 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
  2. liunux 修改hostname
  3. nginx 支持laravel 5.3配置
  4. 网页边框样式与style样式部分总结
  5. excel快速复制大量公式的方法
  6. mysql更改数据文件目录及my.ini位置| MySQL命令详解
  7. docker 挂在本地目录
  8. Java中可变长参数的方法
  9. American tour(If you have a chance)
  10. ssh "openssh-daemon is stopped"操作之伤+sftp访问“-bash: /dev/null: Permission denied”
  11. Fragment总结
  12. ios中判断控制台Log输出控制,是否是iphone5,自动调整尺寸
  13. netty对http协议解析原理解析
  14. MySQL系统变量sql_safe_updates总结
  15. SpringMVC+JWT+Swagger UI+RestFul
  16. SVN:linux下搭建svn服务器
  17. android 解决连接电视机顶盒失败的方法
  18. Ueditor使用笔记
  19. MRP备忘
  20. Rails 5 Test Prescriptions 第10章 Unit_Testing JavaScript(新工具,learn曲线太陡峭,pass)

热门文章

  1. 【算法题12 解码方法decode way】
  2. html基本标签介绍及应用
  3. PAT 天梯赛 L1-021. 重要的话说三遍 【水】
  4. mybatis 复习笔记02
  5. linux 基础知识总结2
  6. Lightroom’s Clarity Slider – What Does It Do?
  7. C语言单元测试框架--EmbedUnit
  8. 通过自动回复机器人学Mybatis:原始版本(包括JDBC、pom.xml等)
  9. RBAC权限控制
  10. RAID独立冗余磁盘阵列