我有这样的设计:
它已经使用 html/css 创建,但我需要删除 1 和 5 的额外线条。这是通过添加位置绝对元素来创建灰线来实现的,但容器点的大小是响应式的。
我的想法是为每个容器创建一个背景线性渐变,如下所示:
对全部:
background: linear-gradient(to right, grey 100%, transparent 0);
Run Code Online (Sandbox Code Playgroud)
对于第一个:
background: linear-gradient(to left, grey 50%, transparent 0);
Run Code Online (Sandbox Code Playgroud)
对于最后一个:
background: linear-gradient(to right, grey 50%, transparent 0);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何让它变小:
假设所有项目具有相同的宽度,则渐变应从 1 的中点开始,到 5 的中点结束,这意味着它应该从 10% 标记开始,到 90% 标记结束,类似于linear-gradient(to right, transparent 10%, grey 10%, grey 90%, transparent 90%)。
要限制背景的大小,可以使用background-size: 100% [DESIRED_HEIGHT]控制它。假设您希望栏的厚度为 16px,那么您可以使用background-size: 100% 16px. 将其与background-repeat: no-repeat避免渐变重复并将background-position: center center其居中相结合。
请参阅概念验证示例:
body {
font-family: Arial, sans-serif;
}
ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
align-items: center;
justify-content: space-around;
background-image: linear-gradient(to right, transparent 10%, grey 10%, grey 90%, transparent 90%);
background-size: 100% 8px;
background-repeat: no-repeat;
background-position: center center;
}
ul.colors {
background-image: linear-gradient(
to right,
transparent 10%,
red 10%,
red 30%,
orange 30%,
orange 50%,
green 50%,
green 70%,
blue 70%,
blue 90%,
transparent 90%
);
}
ul li {
display: block;
width: 48px;
height: 48px;
border: 1px solid #999;
border-radius: 50%;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
}Run Code Online (Sandbox Code Playgroud)
<strong>Plain</strong>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<br /><br />
<strong>Colors</strong>
<ul class="colors">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |