我有HTML像这样

<element1 class="class__1">
   <element2 removePadding></element2>
   <element3 class="class-3"></element3>
</element>

我只想在element2有removePadding属性的情况下修改class—3的边缘底部,我试过这样做

element1 element2[removePadding] element1 element3.class-3 {
    margin-top: 20px;
}

但这不管用

我想要目标class-3 only when element2有removePadding属性

推荐答案

element1 element2[removePadding] element1—最后一个element1不应该在那里,CSS Select 器只能向下,不能向上.此外,element3不是element2的子,而是一个sibling ,所以你可以使用+(next-sibling) Select 器

div div[data-removePadding] + div.class-3 {
    margin-top: 20px;
    background: red;
}

div {
  border: 1px solid #020202;
  padding: 5px;
  box-sizing: border-box;
}
<div class="class__1">
   <div data-removePadding=""></div>
   <div class="class-3"></div>
</div>

Css相关问答推荐

通过使溢出的子元素具有其宽度的100%来防止Flex元素溢出

如何在css中从圆中切出1/n?

在AND设计令牌上使用不同的主题

响应的Megamenu位置css

为什么align-content:start应用于单行项目?

为什么 :focus 会覆盖 :focus-visible ?

如何使用props 为 Vue 中的组件创建动态背景图像?

如何在 konvajs 中居中放置项目?

在 React Native 中创建背景

如何将 CSS 样式应用于 Quarto 输出

CSS Stepper - LI After Overlaying LI Before

Twitter Bootstrap:进度条居中文本

如何强制 div 出现在下方而不是旁边?

将一行文本保留为单行 - 换行或不换行

在表格中使用自动换行:断词

纯 CSS 复选框图像替换

如何始终在浏览器中显示垂直滚动条?

如何对齐标签和文本区域?

是否允许在链接中嵌套链接?

背景图像可以大于 div 本身吗?