纯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 相关文章推荐
纯DOM+CSS3实现简单的小风车动画
Sep 27 HTML / CSS
css3 iphone玻璃透明气泡完美实现
Mar 20 HTML / CSS
HTML5实现的震撼3D焦点图动画的示例代码
Sep 26 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
Jul 25 HTML / CSS
HTML5计时器小例子
Oct 15 HTML / CSS
html5使用canvas画一条线
Dec 15 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
Mar 25 HTML / CSS
详解HTML5中表单验证的8种方法介绍
Dec 19 HTML / CSS
amazeui时间组件的实现示例
Aug 18 HTML / CSS
CSS3 制作的悬停缩放特效
Apr 13 HTML / CSS
如何使用 resize 实现图片切换预览功能
Aug 23 HTML / CSS
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
Apr 19 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php实现文件下载更能介绍
2012/11/23 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
比较完整的微信开发php代码
2016/08/02 PHP
PHP与以太坊交互详解
2018/08/24 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
js实现登录与注册界面
2017/11/01 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
python 测试实现方法
2008/12/24 Python
Python自动扫雷实现方法
2015/07/25 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
EM算法的python实现的方法步骤
2018/01/02 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
简单了解python数组的基本操作
2019/11/26 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
教书育人演讲稿
2014/09/11 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
道歉信范文
2015/05/12 职场文书
祝寿主持词
2015/07/02 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python