博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
伪类元素实现可伸缩时间轴
阅读量:7049 次
发布时间:2019-06-28

本文共 947 字,大约阅读时间需要 3 分钟。

   需求:需要实现纵向列表左边的一条时间轴,时间轴中间除穿插具体的时间节点外不可间断,单击右边信息盒子里的图标,向下弹出子盒子并撑开列表,时间轴相应的延长。再单击图标,子盒子隐藏,时间轴收缩。看图来直观的了解一下这个需求,为便于观察,使用了醒目的红色线段和紫色边框如图a、图b所示:

        

图a   初始状态下的时间轴                                                       图b  弹出子元素后的时间轴

      实现:方案一,每一个列表为一个item,在单个item左边的时间盒子里使用绝对定位,使用div加border实现两条纵向直线,但是这种方案使用到的标签较多,意味着创建的dom节点很多并且所需要的css代码很繁琐,不利于提升页面性能和开发效率,后经同事指点,采用伪类元素加绝对定位成功的实现了这个需求。

方案二:伪类元素+绝对定位。以单个item为例,用基本的伪类元素实现线段后并使用绝对定位定位到UI要求的位置如图所示,

由于当子盒子弹出时伸长的是底部纵轴线段,故需要着重考虑的是底部纵轴线段长度的控制。使用绝对定位,底部元素长度控制的代码为:

content: '';    border-left: 1px solid red;    position: absolute;    left: .39rem;    width: 1px;    bottom:.1rem;    top:.9rem;     height:auto;

top属性设置此直线距离顶部的位置,即要留出一段空白显示具体的时间18:48,bottom属性设置元素长度底部的位置,要想上下间的item无缝对接显示成一条不间断的直线,故设置bottom:0非常重要。最关键的还是要设置父元素position:relative了,即设置此直线位置是相对于哪个父元素而言,w3school介绍的是,生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位,若父元素没有相对定位position:relative,则该子级元素会相对于body来定位。故此处设置单个item元素的定位position:relative即可,除此之外,还需要设置包裹伪类元素的父元素高度为:100%,因为子类元素需要从父类元素那里继承高度。若父元素设置的不恰当,可能会引起时间轴不出现或者长度不对。

转载地址:http://ujdol.baihongyu.com/

你可能感兴趣的文章
专访ThoughtWorks王磊:从单块架构到微服务架构
查看>>
JetBrains大力推广Kotlin为哪般?
查看>>
IBM首家发布了公有云中的裸机Kubernetes
查看>>
火掌柜iOS端基于CocoaPods的组件二进制化实践
查看>>
Zabbix Agent端配置文件说明
查看>>
2.10环境变量PATH;2.11cp命令;2.12mv命令;2.13文档查看cat_more...
查看>>
mysql使用索引优化查询效率
查看>>
Salt Syndic配置
查看>>
优秀的开源系统恢复软件
查看>>
IE浏览器低版本判断及升级提示
查看>>
乳腺增生的早期症状?乳腺增生做什么检查最好
查看>>
java B2B2C springmvc mybatis仿淘宝电子商城系统-Hystrix服务容错
查看>>
android学习笔记2 单位
查看>>
[SQL Server][FILESTREAM] -- FileTable Feature in SQL Server 2012
查看>>
svn命令在linux下的使用
查看>>
dig 命令大全 linux
查看>>
我的友情链接
查看>>
在js中如何获取地址栏上的参数呢
查看>>
ELK日志分析单机系统详解
查看>>
MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)...
查看>>