我有这段代码:

label.control-label{
    font-weight: bold;
}
label.control-label::after{
    content: ":";
}


这会使输入的Bootswatch Paper's标签变为粗体,并在标签后添加:,效果很好。然后,我找到了一种创建浮动标签的方法:Paper description and example of floating labels,并且为了防止其他形式的行为更改,我将类.floating-labels添加到一种形式中,并创建了以下CSS:

/* Based on Ryan Walters solution http://jsfiddle.net/RyanWalters/z9ymd852/

*/

/* --- material floating label --- */

form.floating-labels .form-group {
    display: flex;
    height: 55px;
}

form.floating-labels .control-label {
    font-size: 16px;
    font-weight: 400;
    opacity: 0.4;
    pointer-events: none;
    position: absolute;
    transform: translate3d(0, 22px, 0) scale(1);
    transform-origin: left top;
    transition: 240ms;
}

form.floating-labels .form-group.focused .control-label {
    opacity: 1;
    transform: scale(0.75);
}

form.floating-labels .form-control {
    align-self: flex-end;
}

form.floating-labels .form-control::-webkit-input-placeholder {
    color: transparent;
    transition: 240ms;
}

form.floating-labels .form-control:focus::-webkit-input-placeholder {
    transition: none;
}

form.floating-labels .form-group.focused .form-control::-webkit-input-placeholder {
    color: #bbb;
}


它也可以正常工作,并且不会使没有.floating-labels类的表单变得一团糟,除了一个错误-:也被添加到浮动标签中,这看起来有点不可思议。所以我想创建一个CSS选择器,该选择器将所有label.control-label分配给form中的class .floating-labels。我创建了此CSS,但是解决方案无法正常工作:

label.control-label:not(form.floating-labels label.control-label){
    font-weight: bold;
}
label.control-label:not(form.floating-labels label.control-label)::after {
    content: ":";
}


如果有人帮助我实现CSS选择器,我将非常高兴,该选择器将在label.control-label类中包含除form之外的所有.floating-labels-谢谢您。
程式码片段:



label.control-label:not(form.floating-labels label.control-label){
  font-weight: bold;
}

label.control-label:not(form.floating-labels label.control-label)::after{
  content: ":";
}

<form>
  <label class='control-label'>Should has ':' and be bold</label>
    <input>
 </form>
<form class='floating-labels'>
  <label class='control-label'>Should NOT be bold</label>
    <input>
 </form>




解决方案基于@DiegoLópez的答案:

form:not(.floating-labels) label.control-label{
    font-weight: bold;
}
form:not(.floating-labels) label.control-label::after{
    content: ":";
}

最佳答案

尝试将>选择器用于已经使用的:not()

form:not(.floating-labels) > label.control-label{
  font-weight: bold;
}

form:not(.floating-labels) > label.control-label::after{
  content: ":";
}

10-07 15:42