css - 在 Sass 中选择一个类

标签 css sass css-selectors

我有一个表单,每个输入都有一个标签:

<label>My Label</label>

我的风格是:

label {
   &:before {
        background-color: red;
    }
}

我为每个标签添加一个类:

<label class="blue">My Label</label>
<label class="yellow">My Label</label>

如何在 Sass 中为每个类选择 before?

label {
   &:before {
        background-color: red;
        &.blue {
              background-color: blue; //???????
        }
    }
}

请注意,我使用 ::before 选择器的原因是为了比更改标签背景颜色更复杂的事情,我只是用它作为一个简单的例子。

最佳答案

这里有几种编写 SASS 的方法,它们将生成 label:beforelabel.blue:beforelabel.yellow:before

  label { 
        &:before{ 
            background-color:red; 
        }
        &.blue:before{
            background-color: blue;
        }
        &.yellow:before{
            background-color:yellow;
        }
    }


    label { 
        &:before{ 
            background-color:red; 
        }
        &.blue{
            &:before{
                    background-color: blue;
                }
            }
        &.yellow{
            &:before{
                background-color:yellow;
            }
        }
    }

一般来说,伪元素需要放在选择器的末尾,并且本身没有类。 Sass 会在你写的时候渲染它。我不确定浏览器会做什么。

伪元素通常也有一个content属性,就是应用样式的。除非在您的 css 中的其他地方设置了“content”属性,否则不会应用上面的 css。

通过对 ::before::after 的操作,您可以在 bootstrap 中找到标准的 clearfix 解决方案[ http://getbootstrap.com/css/#helper-classes-clearfix]

// Mixin itself
.clearfix() {
  &:before,
  &:after {
    content: " ";
    display: table;
  }
  &:after {
    clear: both;
  }
}

// Usage as a Mixin
.element {
  .clearfix();
}

关于css - 在 Sass 中选择一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001207/

相关文章:

javascript - 如何以不止一种方式设置 bootstrap popover 的样式?

html - 元素上边距似乎没有改变

html - 覆盖 child 的 parent z-index

css - 有什么我们只能用 SASS 而不能用 css 实现的吗?

html - 获取元素的第一次出现,独立于 parent

html - Adam Freeman 书中的 CSS 特异性查询

css - 什么键盘快捷键可以转到 sublime text 3 中单词的开头和结尾

CSS:顶部与边距顶部

reactjs - 在 React 中迁移到具有全局 SASS 变量的样式组件

html - 使 Div 开关 float