纯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 相关文章推荐
全面总结使用CSS实现水平垂直居中效果的方法
Mar 10 HTML / CSS
html5+css3之动画在webapp中的应用
Nov 21 HTML / CSS
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
Dec 20 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
Jan 05 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
Jul 19 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
Jan 01 HTML / CSS
解析HTML5中的新功能本地存储localStorage
Mar 01 HTML / CSS
canvas实现图片镜像翻转的2种方式
Jul 22 HTML / CSS
CSS3点击按钮圆形进度打钩效果的实现代码
Mar 30 HTML / CSS
如何在CSS中绘制曲线图形及展示动画
May 24 HTML / CSS
html+css实现滚动到元素位置显示加载动画效果
Aug 02 HTML / CSS
CSS使用伪类控制边框长度的方法
Jan 18 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
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
JS 动态加载脚本的4种方法
2009/05/05 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
JavaScript DOM基础
2015/04/13 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
react结合bootstrap实现评论功能
2020/05/30 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
方法名是否可以与构造器的名字相同
2012/06/04 面试题
如何打开WebSphere远程debug
2014/10/10 面试题
怎么处理XML的中文问题
2015/03/26 面试题
邀请函格式范文
2015/02/02 职场文书
2015教师节通讯稿
2015/07/20 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
Vue2.0搭建脚手架
2022/03/13 Vue.js
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL