自定义vant ui steps组件效果实现
记录个问题,当作笔记吧:因为vue项目的移动端vant ui 的step组件跟ui设计图有差别,研究了半天还是没法使用step组件,只能手动设置一个
先上效果图和代码:

(1)HTML部分
<div class="rxlc-step">
<div class="rxlc-content">
<div class="content-list" v-for="(item, index) in rxlc_content" :key="index">
<div class="content-list-lt">
<div class="list-icon-title">
<div class="lt-icon">
<div class="lt-icon-box"></div>
</div>
<div class="lt-text">{{item.title}}</div>
</div>
<div class="white-line"></div>
</div>
<div class="content-list-rt">
<div class="list-rt-content">{{item.text}}</div>
<div class="cat-line"></div>
</div>
</div>
</div>
</div>
(2)CSS部分
.rxlc-step {
width: 100%;
padding: 16px 18px 20px 17px;
box-sizing: border-box;
.rxlc-content {
width: 100%;
box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.15);
border-radius: 10px;
position: relative;
.content-list {
width: 100%;
display: table;
.content-list-lt {
display: table-cell;
background: #3db8ba;
padding-left: 10px;
position: relative;
color: #ffffff;
font-family: Noto Sans S Chinese Medium;
font-size: 16px;
.list-icon-title {
display: table;
.lt-icon {
display: table-cell;
.lt-icon-box {
width: 5px;
height: 5px;
border-radius: 3px;
background: #ffffff;
margin-right: 7px;
z-index:;
}
}
.lt-text {
display: table-cell;
padding-right: 10px;
font-weight:;
font-size: 16px;
line-height: 18px;
}
}
.white-line {
width: 1px;
height: 100%;
position: absolute;
top: 34px;
left: 12px;
background: #ffffff;
opacity: 0.2;
z-index:;
}
}
.content-list-rt {
width: 70%;
display: table-cell;
.list-rt-content {
padding: 22px 14px 0px 14px;
color: #333333;
font-size: 14.5px;
line-height: 18px;
}
.cat-line {
margin-left: 24px;
margin-top: 20px;
border-bottom: 1px solid #efefef;
}
}
&:first-child {
.content-list-lt {
border-radius: 10px 0 0 0;
}
}
&:last-child {
.content-list-lt {
border-radius: 0 0 0 10px;
.white-line {
width: 0px;
}
}
.content-list-rt {
.cat-line {
margin-left: 10px;
margin-top: 20px;
border-bottom: none;
}
}
}
}
}
}
(3)JS部分
rxlc_content: [
{
title: '注册',
text: '家长手机号注册账号'
},
{
title: '新生信息采集',
text: '报名信息采集,包括新生基础信息、监护人信息和个人相关图片资料上传;提交资料进入审核阶段'
},
{
title: '网上审核',
text: '网上报名资料提交至区教育局或下属单位进行审核确认'
},
{
title: '现场审核',
text: '网上报名资料审核通过,根据现场审核要求携带资料到指定地点审核确认'
},
{
title: '录取',
text: '新生现场审核通过,报读 学校发布录取通知。'
}
]
说一下原理吧,其实我刚开始的时候想的是先给每一行的div(类名content-list)设置用display:table布局,先将标题和内容放在两个display:table-cell的子div(类名content-list-lt和content-list-rt)中,然后用绝对定位将白线定位到白色圆形的中心位置,后面发现白线位置好控制,但是会出现一个问题,就是因为每一行的高度是由内容的长度撑开的,白线的总长度就很难控制了,没办法,只能请教鹏哥了,他叫我参照下vant 的steps的样式,打开F12查看了下,发现了些好玩的东西,如下:


通过上面的两张图可以看到,vant的steps组件的线条也是利用绝对定位来实现的,只是它的定位是相对于每个类名为vant-step的div(每一行内容所在的div),且它的高度为每一行内容的高度,即height:100%设置,这样各行的白色线条就连成一条竖直的线,那么步骤条的长度问题也得到解决。
需要注意的是我们最后一行的内容的白色线条是不需要展示出来的,因为实际我们要的线条段数为内容行数减1,所以最后一个div的线条的高度必须隐藏掉,所以给最后一个div的线条设置了width:0,其实设置height:0也是可以的。
这样我们将之前的代码改动一下,把白色线条放在每一行的div(类名content-list)下的左边子div(即类名content-list-lt)中,让线条相对这个类名为content-list-lt的div进行绝对定位,就能实现steps组件效果了
自定义vant ui steps组件效果实现的更多相关文章
- React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发
React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发 2016/09/23 | React Native技术文章 | Sky丶清| 4 条评论 | 1 ...
- vue 专题 vue2.0各大前端移动端ui框架组件展示
Vue 专题 一个数据驱动的组件,为现代化的 Web 界面而生.具有可扩展的数据绑定机制,原生对象即模型,简洁明了的 API 组件化 UI 构建 多个轻量库搭配使用 请访问链接: https://ww ...
- 自定义view实现水波纹效果
水波纹效果: 1.标准正余弦水波纹: 2.非标准圆形液柱水波纹: 虽说都是水波纹,但两者在实现上差异是比较大的,一个通过正余弦函数模拟水波纹效果,另外一个会运用到图像的混合模式(PorterDuffX ...
- iOS 端的 UI 聊天组件ChatKit及代码实现
ChatKit 是一个免费且开源的 UI 聊天组件,自带云服务器,自带推送,支持消息漫游,消息永久存储.底层聊天服务基于LeanCloud(原名 AVOS ) 的 IM 实时通信服务「LeanMess ...
- Combo( 自定义下拉框) 组件
本节课重点了解 EasyUI 中 Combo(自定义下拉框)组件的使用方法,这个组件依赖于ValidateBox(验证框)组件 一. 加载方式自定义下拉框不能通过标签的方式进行创建.<input ...
- 第17讲- UI常用组件之ImageView图片浏览
第17讲 UI常用组件之ImageView图片浏览 二.图片浏览ImageView ImageView就是一个用来显示图片的视图: ImageView常见属性 常见属性 对应方法 说明 android ...
- VSTO之旅系列(三):自定义Excel UI
原文:VSTO之旅系列(三):自定义Excel UI 本专题概要 引言 自定义任务窗体(Task Pane) 自定义选项卡,即Ribbon 自定义上下文菜单 小结 引言 在上一个专题中为大家介绍如何创 ...
- Vue.use自定义自己的全局组件
通常我们在vue里面使用别人开发的组件,第一步就是install,第二步在main.js里面引入,第三步Vue.use这个组件.今天我简单的也来use一个自己的组件. 这里我用的webpack-sim ...
- [转]vue Element UI走马灯组件重写
https://blog.csdn.net/u013750989/article/details/82885482 1.element ui走马灯组件 -- carousel分析一波源代码:carou ...
随机推荐
- c# 自定义控件之 ComboBox
winform 自带的 combobox 无法支持根据输入文本匹配列表中的项目,需要使用自定义控件. public class MyCombobox : ComboBox { //初始化数据项 pri ...
- 字符串格式的Url的截取
一,我们先在看在页面上获取的URL的处理,如下方法: //获取全部URL string Url = Request.Url.ToString(); Url += "</br>&q ...
- nginx的原理
Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程 (cache loader)和缓存管理器进程(cache manager) ...
- 初始 vue
1.js,jQuery编程范式:命令式编程 vue编程范式:声明式编程 v-for 遍历数组内容 v-on: click 监听点击事件,语法糖 @click el: 类型:string | H ...
- WPF 基本图形
一.WPF的基本图形 WPF图形的基类是Shape,所有的wpf图形类都是继承于Shape.Height,Width等决定它所处的面积,位置等,在没有设置图形宽高的情况,坐标位置为所在的容器的坐标,设 ...
- 如何将excel表格中的纯数字删掉 空白行,然后删除
excel里如何删除一列中全部数字 1.选择目标区域2.按“F5”,定位条件如下设置,即可选中值为数字的单元格,在按Del. 空白行删除 选择空值,确定,就会将所有空白行选定,然后删除
- HashMap不能使用基本数据类型作为key
HashMap存储元素采用的是hash表存储数据,每存储一个对象的时候,都会调用其hashCode()方法,算出其hash值,如果相同,则认为是相同的数据,直接不存储,如果hash值不同,则再调用其e ...
- zabbix监控nginx status页面
在需要添加监控的nginx配置文件中添加下列配置 #zabbix监控nginx配置 location /nginx_status { stub_status on; access_log off; a ...
- sublime-1
1.提示找不到margo go get github.com/DisposaBoy/MarGo(该工具已经被作者清空了,大部分人在这一步就被卡住了) 如果你也是在第二步卡住了,那么可以按照我的方法进行 ...
- 【Dart学习】--Dart之字符串(String)的相关方法总结
字符串定义使用单引号或双引号 String a = "abcdefg"; String b = '; 创建多行字符串,保留内在格式使用三个单引号或三个双引号 创建多行字符串,保留内 ...