0

我有一个bookmarklet,最近我使用cleanslate cssCSS更改了属性,因为使用时第三方网站上的书签设计不一样。

这个 CSS 文件应该重置特定标签内所有标签的所有属性,它会这样做,但是当我需要操作设置时,我不能;

<div class="mainclass">
<div id="login">a</div>
<div id="form">b</div>
<div id="details">c</div>
</div>

我有很多表单,我在特定操作中隐藏和取消隐藏,例如:我显示登录表单,如果用户未登录,我显示详细表单,如果用户登录并且我是否知道历史URL 和其他形式;

因此,如果我将div id details display属性设置为block,其余设置为none,然后尝试将所有属性设置为,none它不会执行任何操作,但我可以看到运行操作div id form displayblockcssjavascript

这个 CSS 应该可以完成这项工作,但是因为我在所有标签属性上都使用了 !important 属性,所以我无法将 JavaScript 新值设置为属性,例如:

document.getElementById("form").style.display = "none";

在此处输入图像描述

在这张图片中,我使用了旧的 CSS,使用了重置方法,并且 js 代码运行良好,但是在第三方网站上的设计不一样

实际项目中,所有第三方网站的设计都是一样的,但是js代码不能设置CSS属性

4

1 回答 1

1

重要的是一般来说是一个非常糟糕的主意,应该尽量避免,因为它违反了 css 中的特异性规则。有没有办法让你的css更具体地覆盖当前样式而不是使用!importnat。

你仍然可以通过做这样的事情来申请重要

element.style.setProperty("display", "none", "important");

或者 jquery 让它变得很容易

element.css("display","none !important");

但最好还是不要使用重要的

于 2012-11-09T13:21:29.393 回答