我有一个asp.net按钮,它根据一些c#代码条件被禁用。按钮,调用它btnPrevious设置为使用以下css类:
.btnBlue{
background: rgb(40, 108, 244); /* Old browsers */
background:linear-gradient(to bottom, rgb(40, 108, 244) 0%, rgb(0, 68, 204) 50%, rgb(40, 108, 244) 100%) repeat scroll 0% 0% transparent; /* W3C */
background: -moz-linear-gradient(top, rgb(40, 108, 244) 0%, rgb(0, 68, 204) 50%, rgb(40, 108, 244) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(40, 108, 244)), color-stop(50%,rgb(0, 68, 204)), color-stop(100%,rgb(40, 108, 244))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgb(40, 108, 244) 0%,rgb(0, 68, 204) 50%,rgb(40, 108, 244) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgb(40, 108, 244) 0%,rgb(0, 68, 204) 50%,rgb(40, 108, 244) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgb(40, 108, 244) 0%,rgb(0, 68, 204) 50%,rgb(40, 108, 244) 100%); /* IE10+ */
-ms-filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=rgb(40, 108, 244), endColorstr=rgb(40, 108, 244),GradientType=0 ); /* IE6-9 */}
当按钮处于禁用状态时,即btnPrevious.disabled = true; css属性不起作用。 我哪里错了。感谢。
编辑:只是提出更多关于主题的问题:
我的CSS为什么或如何被默认框架覆盖?
答案 0 :(得分:0)
您可以将:disabled
用于应该工作的按钮。试试下面的css
.btnBlue:disabled{
background: rgb(40, 108, 244); /* Old browsers */
background:linear-gradient(to bottom, rgb(40, 108, 244) 0%, rgb(0, 68, 204) 50%, rgb(40, 108, 244) 100%) repeat scroll 0% 0% transparent; /* W3C */
background: -moz-linear-gradient(top, rgb(40, 108, 244) 0%, rgb(0, 68, 204) 50%, rgb(40, 108, 244) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(40, 108, 244)), color-stop(50%,rgb(0, 68, 204)), color-stop(100%,rgb(40, 108, 244))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgb(40, 108, 244) 0%,rgb(0, 68, 204) 50%,rgb(40, 108, 244) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgb(40, 108, 244) 0%,rgb(0, 68, 204) 50%,rgb(40, 108, 244) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgb(40, 108, 244) 0%,rgb(0, 68, 204) 50%,rgb(40, 108, 244) 100%); /* IE10+ */
-ms-filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=rgb(40, 108, 244), endColorstr=rgb(40, 108, 244),GradientType=0 ); /* IE6-9 */}
答案 1 :(得分:0)
听起来像Specificity的情况。一些规则可以适用于相同的元素。您的规则不是非常具体,会尽早应用(因此很容易被覆盖)。
在良好的浏览器中打开网页(我使用Chrome),然后打开开发标签(F12)。 Inspect
按钮并查看Styles
标签。您应该能够看到不需要的样式来自哪里(它将显示文件和应用不需要的样式的选择器/规则)。
如果您不想(或可以)追踪(并删除)负责搞乱禁用状态的样式,您可以尝试让您的规则更重要。检查特定性的链接,但提示是尝试通过定位按钮(不仅仅是类)以及可能是这样的容器来使规则更具体:
#container button.btnBlue {
...
}
您也可以选择使用反叛标志!important
将您的规则置于其他未使用!important
标志的规则之前:
#container button.btnBlue {
background: rgb(40, 108, 244) !important;
...
}
一般情况下 - 如链接中所述 - 您应该尽量不要使用!important
,因为它有点打破了CSS
的美感。除非asp.net
按钮也使用!important
(或内联样式属性),否则应该很容易制定比asp.net
规则更具体的规则,因为只有您知道按钮的位置在文件中。您始终可以使您的规则比asp.net
规则更具体。
我不知道如何应用不需要的样式 - 我只希望它不是带有style
标志的内联(!important
属性);)