html - 如何以渐变样式为我的列表制作带有自定义项目符号的边框?
问题描述
这就是我想要实现的目标:
白色背景的项目是我的列表项目。在左侧,我想要一个带有自定义项目符号的边框(自定义,因为我们无法更改默认列表项目符号颜色 -black- AFAIK)。边框的上部应具有渐变色,例如从透明到灰色。正如您在图片中看到的那样,边框的长度应该比实际的列表高度长(直到加号按钮,直到最后一个项目结束。)
我实际上已经完成了一些部分,但我想知道一种更好、更清洁的方法。
这是我到目前为止所拥有的:https ://jsfiddle.net/6esLm8q1/
.list {
list-style: none;
border-width: 2px;
border-style: solid;
border-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(179,179,179)) 0 0 0 1;
}
.item {
margin-bottom: 1em;
margin-left: -1.7em;
}
.item::before {
content: "\2022";
color: grey;
font-weight: bold;
display: inline-block;
width: 1em;
margin-left: -1em;
}
<ul class="list">
<li class="item">
Test1
</li>
<li class="item">
Test2</li>
</ul>
<button>Plus
</button>
问题仍然存在:项目符号与项目文本对齐,即使我在边框上对齐项目符号,当我调整窗口大小时,项目符号也会稍微向左或向右滑动。
渐变线在开始时更加透明,实际上不像“目标”图片中那样。边框在列表项结束的地方结束,所以直到按钮才到达。
我很感激任何帮助,直到我得到接近我的目标图片的东西!
解决方案
你在那里得到了 99%。对于linear-gradient
,如果您将端点定义为低于100%
,那么您会使其更早褪色。否则,它会计算出终点100%
,因此一半的边框看起来会褪色。
对于before
伪元素,因为在你的标记中你p
在 each 中放置了一个标签li
,你应该把伪元素放在p
标签本身上。
请参阅下面的片段。
.list {
list-style: none;
border-width: 2px;
border-style: solid;
border-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(179,179,179) 40%) 0 0 0 1; /* add % to have gradient end earlier than end */
}
/* add before pseudo-element on p tag (since you include it in your markup */
.item>p:before {
content: "\2022";
color: grey;
font-weight: bold;
margin-left: -2.7em;
}
<ul class="list">
<li class="item">
<p>
Test1
</p>
</li>
<li class="item">
<p>
Test2
</p>
</li>
</ul>
<button>Plus</button>
推荐阅读
- c++ - 在 Linux 中无需拔出即可软重置 USB 设备
- java - 带有 '\\?' 的正则表达式 符号在我的代码中不起作用
- sql - 雪花结宁三桌
- docker - Dockerfile:未找到 Python3
- perl - 如何检查对象是否重载 XS 中的运算符?
- angular - 在 Angular 中嵌套组件时,我可以在应用程序选择器函数中指定额外的参数吗?
- java - Java:Swing:Nimbus:JComboBox editable box looks different from not editable box
- sql - Count Distinct 小于 Sum(Count Distinct)
- javascript - State set with useState not passing down through props
- unit-testing - Method (with optional parameter) mocked with mockito return null on unit test. Dart Flutter