连续CSS类的样式不同

Tus*_*ada 7 html javascript css

我正在尝试为具有连续css类的div使用不同的css样式,并为同一类的单个div使用不同的css样式。

如果解释令人困惑,这就是我想要实现的目标。

.row {
  display: flex;
  margin: 20px;
}

.number {
  width: 32px;
  height: 32px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.number.bg {
  background-color: #e24381;
  color: #ffffff;
  border-radius: 24px 0 0 24px;
}

.number.bg ~ .number.bg {
  border-radius: 0 24px 24px 0;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row">
  <div class="number">1</div>
  <div class="number bg">2</div>
  <div class="number bg">3</div>
  <div class="number bg">4</div>
  <div class="number">5</div>
  <div class="number">6</div>
  <div class="number bg">7</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这应该是输出:

输出量

可以仅通过CSS完成,还是也需要JavaScript

kuk*_*kuz 4

对于普通 CSS 解决方案,您可以使用伪元素来为您执行此操作:

  • 设置border-radius: 25pxbg元素,

  • bg使用伪元素填充连续元素中的边框间隙,该伪元素绝对定位并堆叠在bg元素后面,并使用负 margin进行移动

请参阅下面的演示:

.row {
  display: flex;
  margin: 20px;
}

.number {
  width: 32px;
  height: 32px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.number.bg {
  background-color: #e24381;
  color: #ffffff;
  border-radius: 25px;
  position: relative;
}

.number.bg+.bg:before {
  content: '';
  display: block;
  background-color: #e24381;
  margin-left: -50%;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  position: absolute;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row">
  <div class="number">1</div>
  <div class="number bg">2</div>
  <div class="number bg">3</div>
  <div class="number bg">4</div>
  <div class="number">5</div>
  <div class="number">6</div>
  <div class="number bg">7</div>
</div>
Run Code Online (Sandbox Code Playgroud)