纯CSS实现一个简单步骤条的示例代码


Posted in HTML / CSS onJuly 15, 2022

前言

HTML中的input是一个十分强大的标签,配合上CSS,在一定程度上基本可以代替部分JS控制。
最近在搞一个步骤条,于是乎,想着使用CSS给做出来,本文记叙实现的基本思路。

效果

纯CSS实现一个简单步骤条的示例代码

代码

  • 首先,使用<input type="checkbox" />实现作为步骤的元素,然后,按照顺序将每一个步骤排好位置,接着借用其他元素对checkbox进行美化;都是比较常规的处理,这部分不再赘述。 整体布局如下:
<div class="steps">
    <input type="checkbox" class="step-node" data-name="step-1" />
    <input type="checkbox" class="step-node" data-name="step-2" />
    <input type="checkbox" class="step-node" data-name="step-3" />
    <input type="checkbox" class="step-node" data-name="step-4" />
    <input type="checkbox" class="step-node" data-name="step-5" />
 </div>

加上css,结果如下(步骤节点可以纵放或者横放)

纯CSS实现一个简单步骤条的示例代码

  • 然后就是链接每两个步骤节点之间的部分,链接部分的前后步骤节点都完成的话,那么相应的链接部分也应该亮起。假如step-2完成了,那么step-1step-2之间的链接部分也应该改变颜色,与其他未完成部分分开。
  • 也就是说,每个步骤完成时,与上一个步骤的链接部分需要改变颜色;链接部分受控于链接末端的步骤,所以最好使用label标签或者末端步骤的伪元素实现,本文使用before实现:
.step-node::before {
  content: '';
  position: absolute;
  /* 向上方移动,确定链接两个步骤 */
  top: -17px;
  left: 25px;
  height: 18px;
  width: 10px;
  background-color: #a3a3a3;
}

纯CSS实现一个简单步骤条的示例代码

  • 然后就是当末端步骤完成(被选中)时,改变自身和与上一个步骤链接部分的颜色:
/* 链接部分 */
.step-node:checked:before {
  background-color: #ca8a04;
}
/* 自身样式更改 */
.step-node:checked::after {
  background-color: #fbbf24;
  color: #ca8a04;
}

至此就基本实现步骤的功能

纯CSS实现一个简单步骤条的示例代码

然而,步骤必须按顺序完成,不能跳过某个步骤完成下一个步骤。

纯CSS实现一个简单步骤条的示例代码

现在是可以跳过第二步step-2完成第三步step-3,这显然不对,需要对步骤的点击事件进行处理。一般这种逻辑都得JS帮忙进行处理,但CSS其实也可以模拟。
只要添加一个z-index较高的遮罩,挡住所有的步骤节点,就可以实现无法点击的功能;然后将当前可以点击的步骤节点的z-index设置为最高,就可以恢复点击效果。 添加遮罩如下:

.steps::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9;
}

添加完遮罩之后,就无法再点击任何步骤节点了。
接下来,就是可以点击的节点样式,可以点击的步骤节点就是所有被选中checkbox之后的第一个没有被选中的checkbox:

.step-node:checked + .step-node:not(:checked)::after {
  z-index: 10;
}

但是一开始并没有的被选中的步骤节点,上面的样式自然也就不会生效;那么一开始自然就是第一个步骤节点可以点击了:

.step-node:first-of-type:after {
  z-index: 10;
}

/* 被选中之后,取消层级,变会不可点击 */
.step-node:checked:after {
  z-index: 0;
}

 到此这篇关于纯CSS实现一个简单步骤条的示例代码的文章就介绍到这了,更多相关CSS步骤条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
Nov 11 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
Jun 22 HTML / CSS
html5 利用canvas手写签名并保存的实现方法
Jul 12 HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
Jun 08 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
Nov 16 HTML / CSS
html5简介_动力节点Java学院整理
Jul 07 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
Oct 16 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
Jan 22 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
HTML+CSS制作心跳特效的实现
May 26 HTML / CSS
关于html选择框创建占位符的问题
Jun 09 HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 15 #HTML / CSS
如何解决flex文本溢出问题小结
Jul 15 #HTML / CSS
使用HBuilder制作一个简单的HTML5网页
使用CSS定位HTML元素的实现方法
CSS实现背景图片全屏铺满自适应的3种方式
Jul 07 #HTML / CSS
HTML实现仿Windows桌面主题特效的实现
Jun 28 #HTML / CSS
CSS 实现角标效果的完整代码
Jun 28 #HTML / CSS
You might like
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jQuery链使用指南
2015/01/20 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
python+django+sql学生信息管理后台开发
2018/01/11 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python的移位操作实现详解
2019/08/21 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
软件项目实施计划书
2014/05/02 职场文书
离职保密承诺书
2014/05/28 职场文书
文案策划专业自荐信
2014/07/07 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
七年级作文之我的梦想
2019/10/16 职场文书