【问题标题】:How do I override the style for a specific element in JQueryUI如何覆盖 JQueryUI 中特定元素的样式
【发布时间】:2011-11-30 00:13:16
【问题描述】:

我正在维护一个使用 JQueryUI 构建的小型内部 Web 应用程序。

我希望 textarea 使用与生成的 jquery-ui-1.8.2.custom.css 中指定的主题范围字体样式不同的字体样式。

我当然可以编辑 css 文件并全局指定 textarea 的样式,但这会使主题难以维护,因为如果使用 themeroller 编辑主题,则必须再次修补该样式。

所以我认为向本地 style.css 添加一个新类并让 textarea.testscript 覆盖全局 textarea 样式,然后在 textarea 上使用 class="testscript" 会起作用,但不是......

由于某种原因,JQueryUI 在类应用样式之上添加了默认样式,根据 chrome 中的 DOM Inspector 其适用的以下层次结构:

元素样式 {
}

匹配的 CSS 规则
jquery-ui-1.8.2.custom.css:52
.ui-widget 输入、.ui-widget 选择、.ui-widget textarea、.ui-widget 按钮 {
字体系列:Helvetica、Arial、无衬线字体;
字体大小:1em;
}

style.css:101
textarea.testscript {
font-family: "Courier New", Courier, monospace;
font-size: 12px;
背景颜色:灰色;
宽度:100%;
高度:50%;
}

在 DOM Hierarchy 中,textarea 元素上唯一活动的类是 class="testscript",DOM 中较高的父元素具有 ui-widget 类,但我认为元素类指定的样式会覆盖从父类继承的样式,我错了吗?

编辑

修复它,更改 HTML 标头中包含样式表的顺序修复它,现在 style.css 中声明的 class="testscript" 样式优先于 jquery-ui- 中声明的 ui-widget .textarea 1.8.2.custom.css。

这没用

<link rel="stylesheet" type="text/css" href="style.css" >
<link rel="stylesheet" type="text/css" href="jquery-ui-1.8.2.custom.css"/>

这行得通

<link rel="stylesheet" type="text/css" href="jquery-ui-1.8.2.custom.css"/>
<link rel="stylesheet" type="text/css" href="style.css" >

【问题讨论】:

    标签: jquery jquery-ui dom


    【解决方案1】:

    只是具体问题(http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html)。出于这个原因,您确实应该始终在任何框架文件之后包含您的自定义样式。这样,覆盖样式就变得更容易、更直观。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      相关资源
      最近更新 更多