css - 删除最后一个孩子 li
问题描述
我想在 li 元素之前添加一行,但不包括在最后一个 li 之后。我该怎么办?
这是我的CSS:
ul.timeline {
list-style-type: none;
position: relative
}
ul.timeline:before {
content: '';
background: #d4d9df;
display: inline-block;
position: absolute;
left: 29px;
width: 2px;
height: 100%;
z-index: 400
}
ul.timeline > li {
margin-bottom: 10px 0;
padding-left: 10px
}
ul.timeline > li:not(:last-child):after {
content: '';
background: white;
display: inline-block;
position: absolute;
border-radius: 50%;
border: 2px solid #22c0e8;
left: 20px;
width: 20px;
height: 20px;
z-index: 400
}
解决方案
:before
使用您当前的设置,您可以将线的高度设置为100% - li height
. 或者最后一个li height
。这不是很敏感,但不知道您在项目中真正拥有什么,这是最好的(imo)解决方案。
你也有margin-bottom: 10px 0
. 这是不正确的。我把它改成margin-bottom: 10px;
/* Timeline Changelogs */
ul.timeline {
list-style-type: none;
position: relative
}
ul.timeline:before {
content: '';
background: #d4d9df;
display: inline-block;
position: absolute;
left: 31px;
width: 2px;
height: calc(100% - 52px);
z-index: 400
}
ul.timeline > li {
margin-bottom: 10px;
padding-left: 10px
}
ul.timeline > li:not(:last-child):after {
content: '';
background: white;
display: inline-block;
position: absolute;
border-radius: 50%;
border: 2px solid #22c0e8;
left: 20px;
width: 20px;
height: 20px;
z-index: 400
}
<div class="col-12">
<ul class="timeline">
<li>
<p><b>20 Sept 2018</b></p>
<p>This is 20 Sept 2018</p>
</li>
<li>
<p><b>17 Sept 2018</b></p>
<p>This is 17 Sept 2018</p>
</li>
<li>
<p><b>11 Sept 2018</b></p>
<p>This is 11 Sept 2018</p>
</li>
<li>
<p><b>8 Sept 2018</b></p>
<p>This is 8 Sept 2018</p>
</li>
</ul>
</div>
选项 2. 您可以将前行设置为li
除 last-child 之外的元素,而不是ul
. 并将其设置为 height 100% + 1em
。因为在jsfiddle和snippet里面,p
里面默认li
有margin: 1em 0
。如果您更改默认边距,则在设置高度时应考虑这一点。
此外,您需要position:relative
onli
所以:before
高度是相对于li
not 的ul
。因此,您需要更改left
直线和圆的值。但它很容易调整。
/* Timeline Changelogs */
ul.timeline {
list-style-type: none;
position: relative
}
ul.timeline > li {
margin-bottom: 10px;
padding-left: 10px;
position:relative;
}
ul.timeline > li:not(:last-child):after {
content: '';
background: white;
display: inline-block;
position: absolute;
border-radius: 50%;
border: 2px solid #22c0e8;
left: -21px;
width: 20px;
height: 20px;
z-index: 401
}
ul.timeline > li:not(:last-child):before {
content: '';
background: red;
display: inline-block;
position: absolute;
left: -10px;
width: 2px;
height: calc(100% + 1em);
z-index: 400;
top:0;
}
<div class="col-12">
<ul class="timeline">
<li>
<p><b>20 Sept 2018</b></p>
<p>This is 20 Sept 2018</p>
</li>
<li>
<p><b>17 Sept 2018</b></p>
<p>This is 17 Sept 2018</p>
</li>
<li>
<p><b>11 Sept 2018</b></p>
<p>This is 11 Sept 2018</p>
</li>
<li>
<p><b>8 Sept 2018</b></p>
<p>This is 8 Sept 2018</p>
</li>
</ul>
</div>
推荐阅读
- ruby-on-rails - 在 coalesce-d id 上使用自定义联接时访问关联记录
- python - 使用 *arg in 为 pandas 列赋值
- android - 应用程序在从 Play 商店首次启动时崩溃
- visual-studio - 连接 Windows 和 Mac 的 Visual Studio 问题
- bash - 在管道代码中为另一个 bash 调用设置导出变量
- android - 如何为 PdfRenderer 启用暗模式
- javascript - 当我尝试在 Angular 中将字符串格式化为日期时出现奇怪的问题
- sql - SQL:根据不同的 WHERE 条件选择相同的表列两次
- angular7 - 错误类型错误:jit_nodeValue_2(...).grElementList 不是函数
- c# - .net core 3 , MVC , Using 'UseMvcWithDefaultRoute' to configure MVC is not supported while using Endpoint Routing