javascript - 连续 CSS 类的不同样式

标签 javascript html css

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

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

.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;
}
<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>

这应该是输出:

Output

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

最佳答案

对于 vanilla CSS 解决方案,您可以使用伪元素为您完成此操作:

  • bg元素设置border-radius: 25px

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

请看下面的演示:

.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;
}
<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>

关于javascript - 连续 CSS 类的不同样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55709889/

相关文章:

javascript - JS : sort array by two fields

javascript - 有没有办法使用 jQuery 选择具有特定内部值的特定类

html - C编程任务,html源文件

jquery - 如何使用CSS设置元素的响应式背景图像?

jquery - 无法关闭我的覆盖登录表单

javascript - 函数返回未定义中的 this.variable 有什么问题

javascript - 如何在 nightwatch.js 中查看鼠标当前位置?

html - 如何更改悬停框中的图像

html - 用于打开 URL 的 Google Apps 脚本

html - 只有中间的div固定宽度,三个div如何展开父元素?