Css 更少的编译器神奇地将不需要的类添加到我的选择器中
这是我的LESS文件的重要部分:Css 更少的编译器神奇地将不需要的类添加到我的选择器中,css,twitter-bootstrap,twitter-bootstrap-3,less,Css,Twitter Bootstrap,Twitter Bootstrap 3,Less,这是我的LESS文件的重要部分: input.ng-invalid { color: #e74c3c; border-color: #e74c3c; } 它可归纳为: input.ng-invalid .form-control { color: #e74c3c; border-color: #e74c3c; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } 表单控件类来自
input.ng-invalid {
color: #e74c3c;
border-color: #e74c3c;
}
它可归纳为:
input.ng-invalid .form-control {
color: #e74c3c;
border-color: #e74c3c;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
表单控件
类来自引导,如果LESS没有插入空格(input.ng无效。表单控件
工作正常),则不会破坏选择器
问题是浏览器正在使用类表单控件查找输入的子项。显然,在我的HTML中没有input
的孩子。
bootstrap的LESS文件中是否有一个设置将
表单控件
类绑定到每个输入
?这不是一个真正的答案,而是对您的问题的调查,它不适合放在注释框中。我没有检查你的一组较少的文件,因为我这里没有7z解压器,但也许我可以给你一些想法来帮助你解决问题或破解它
获得如下上下文关系的一种方法:
input.ng-invalid .form-control { ... }
在Less文件中的某个地方有这样的块:
input.ng-invalid {
...
.form-control { ... }
...
}
现在,这种关联可能是通过mixin实现的,所以您可能无法找到上面的确切模式,但您可能希望发现.form控件的声明位置(可能是mixin)
现在,如果你想要这个:
input.ng-invalid.form-control { ...}
您可以在.form控件
选择器之前添加一个&
块,这样就不用从嵌套块中获取上下文关系,而是添加一个类。&
表示父块中的选择器。可能是这样的:
input.ng-invalid {
...
&.form-control { ... }
...
}
查看是否发现了.form控件的定义位置,然后进行尝试
(请注意,如果您的代码的其他部分使用此mixin或选择器,它们可能无法像以前那样工作-这只是对可能使用较少的解决方案的分析,而不是引导框架;在您的问题中添加一个Bootstrap
标记,您可能会吸引一些可能有更好解决方案的引导专家。)我查看了您提供的邮政编码包,您的输入被定义为(self-made.less:L97
):
它将编译为您实际获得的内容(即,附加.form control validation
中定义的嵌套类)。这正是这个混血儿应该做的
-
bootstrap的LESS文件中是否有将表单控件
类绑定到每个输入的设置
我看不到(至少在Bootstrap 3.1.1中),所以我只能建议以下技巧:
.danger_ {
.form-control-validation
(@brand-danger, @brand-danger);
}
input.ng-invalid.form-control
:extend(.danger_ .form-control all) {}
将编译为(假设为bs-3.1.1)
-
或者还有.has error
类,您可以用同样的方法扩展该类:
input.ng-invalid.form-control
:extend(.has-error .form-control all) {}
并获得更紧凑的输出,但颜色略有不同(@state danger text
而不是@brand danger
)。您不能只添加。表单控件代码>全局到所有输入?圣公会。像input{.form control;color:red;}
?我将在我的原始问题中进一步解释,请包括您的实际来源。
input.ng-invalid.form-control
:extend(.has-error .form-control all) {}