取消重置由外部样式表定义的样式
Un-reset Styles Defined by External Style-Sheet
假设我的页面上定义了两个样式表:
-
site.css:
.modal { position: absolute; width: 200px; ... } ...
-
reset.css:
.reset * { position: static; width: auto; ... }
不幸的是,我无法控制reset.css样式表的内容。现在假设页面的全部内容都封装在一个div块中,并应用了一个"reset"类。在这个div块的深处,我需要定义一个代码块,它将忽略这个类定义的样式。
例如,如果我有一个应用了"modal"类的模态对话框,我需要它具有宽度为200px的绝对定位。我知道我可以重新定义所有的样式,但这需要我维护相同样式的两个版本。
我一直在绞尽脑汁思考如何做到这一点,我唯一能想到的方法是通过javascript(可选地使用jQuery)。如果有人知道如何做到这一点,或者可以分享一些示例代码来让我继续工作,那就太好了。
您可以使用javascript动态地提供内联css。您首先需要将"对话框元素"放入一个变量中,比如myDialogElement
。然后您需要使用以下代码:
myDialogElement.style.position='absolute';
myDialogElement.style.width='200px';
一个选项是在site.css
中覆盖reset.css
中的样式。你只需要包括你想更改的样式,因为其他样式仍然有效。有两种方法可以做到这一点:
- 使用
!important
.something{ color:red; } /* in reset.css */
.something{ color:blue !important; } /* in site.css */
- 增加特异性
p{ color:red; } /* in reset.css */
div p{ color:blue; } /* in site.css */
如果可能的话,使用特异性可能是最好的方法,但使用!important
也会起作用。以下是关于css 中特异性的MDN文档
- CKEditor自定义样式下拉列表,带有预览但没有内联
- 使用css类将自定义样式应用于上下文按钮的Highcharts
- Fancybox的多个实例的自定义样式
- 具有自定义工具栏和自定义样式的CKEDITOR
- Angular Google Map的自定义样式
- 自定义/样式提示窗口
- 将自定义标记添加到自定义样式的 Google Maps API v3 for Wordpress 网站
- 将自定义样式的按钮添加到CKEditor
- TinyMCE 4自定义样式
- 谷歌地图API v3自定义样式地图和多个标记不显示
- 检查元素是否已定义样式,而不是来自默认样式表
- 如何让用户保存自定义样式表设置
- 改变JavaScript对象定义样式会导致画布保持空白
- 使用自定义样式从过滤器中剥离HTML标记
- 当我检查两个密码是否匹配时,没有定义样式属性
- 不能用React和Bootstrap创建自定义样式
- 编辑器自定义样式的img不显示在下拉列表中
- 在组件内部定义样式,但不要内联
- 自定义样式的Html5文件上传表单可以使用ie10触发提交按钮
- 没有应用TinyMCE自定义样式(尽管技术上可行)