【发布时间】:2011-04-18 22:14:35
【问题描述】:
我只是在为 Web 应用程序编写一个 javascript UI 对话框。问题是用户可以为 Web 应用程序创建自己的主题,其中可能包括元素 css 选择器(h1 {...}, div {...} 等),它会覆盖我的 UI 对话框的 css 格式。该对话框是一个 div 元素,它在类选择器上格式化(id 不起作用,因为此对话框可能会出现多次)。有没有办法停止影响 UI 对话框的用户模板样式的元素选择器,而不必使用巨大的 css 重置样式并为 UI 对话框的每种样式使用!important?像jQuery UI这样的UI库怎么会有对话框样式?
例如用户主题包括:
input {color:nuts; height:bananas; width:crazy; background:morenuts; }
UI 的 css:
.ui_modal_wrap input {color:red; border:1px solid black;}
UI 的 html:
<div class="ui_modal_wrap>
<input type="text" name="#" />
</div>
问题仍然是我必须为 .ui_modal_wrap 使用一个巨大的 css 休息,因为你不能真正编写具有用户可以应用的所有属性的 css(在这个例子中,height 和 width 元素仍然会破坏样式,因为 UI 的不包括高度和宽度)。
【问题讨论】:
-
请展示一些 CSS 代码,尤其是你的对话框是如何定义的。
-
你能不限制他们可以改变的选择器吗?例如只允许他们改变颜色或字体样式?如果您允许他们打开所有 css,有什么办法阻止他们搞砸您的所有标记?从本质上讲,这将使您为控制 UI 的某些部分所做的任何尝试都毫无意义,因为它们为整个 div 提供了绝对位置并将其向左移动了 30000px。
-
UI 是自定义使用 CMS 的一部分,它允许用户模板,但前端 UI 应该看起来相同,即使模板设计者决定使用元素选择器来完成所有样式。
标签: css css-selectors css-specificity