可扩展的环线连接线

时间:2017-06-21 12:13:15

标签: css transform

我想通过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;
&#13;
&#13;

1 个答案:

答案 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 widthheightborder-radius属性。