我想通过CSS中的一行连接圆圈。感谢Stackoverflow的回答,我已经实现了这一点。但是我希望在悬停时将圆圈缩放到两倍。但是当我这样做时,圆圈前面的线也会缩放。
以下是我的造型
li {
width: 2em;
height: 2em;
text-align: center;
line-height: 2em;
border-radius: 1em;
background: dodgerblue;
margin: 0 1em;
display: inline-block;
color: white;
position: relative;
}
li:hover {
transform: scale(3);
}
li::before {
content: '';
position: absolute;
top: .9em;
left: -4em;
width: 4em;
height: .2em;
background: red;
z-index: -1;
}
li:first-child::before {
display: none;
}
.active {
background: dodgerblue;
}
.active~li {
background: lightblue;
}
.active~li::before {
background: lightblue;
}

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
&#13;
答案 0 :(得分:1)
在元素(此处为li
)上使用::before
时,动态添加的内容将成为该元素的第一个子。因此,当您将缩放应用于li
时,缩放也将应用于添加了::before
的行。
解决方案:将数字包含在其他元素中,例如span
,然后缩放span
而不是li
。这样,该线路将不再受到影响。
li {
display: inline-block;
position: relative;
margin: 0 1em;
}
li span {
display: inline-block;
position: relative;
width: 2em;
height: 2em;
text-align: center;
line-height: 2em;
color: white;
background: dodgerblue;
border-radius: 1em;
}
li span:hover {
transform: scale(3);
}
li::before {
content: '';
position: absolute;
top: .9em;
left: -4em;
width: 4em;
height: .2em;
background: red;
z-index: -1;
}
li:first-child::before {
display: none;
}
<ul>
<li><span>1</span></li>
<li><span>2</span></li>
<li><span>3</span></li>
<li><span>4</span></li>
<li><span>5</span></li>
<li><span>6</span></li>
<li><span>7</span></li>
</ul>
或者,如果您不能或不想使用其他标记,除了li:hover::before
之外,您还可以使用li::before
以创建适当大小和定位的行徘徊的圈子。不过,在这种情况下,我建议不要使用transform
,而只是覆盖li
s width
,height
和border-radius
属性。