javascript - 使用 JavaScript 获取 CSS 声明

标签 javascript jquery css stylesheet

我正在编写一个复杂的视觉效果,它会改变“box-shadow”属性。

简而言之,只需命名阴影的值 (1pt 1pt 3pt rgba(...)),例如“shadow”。

我有一个样式表和有问题的 HTML 元素。

例如,元素为正常状态定义了“shadow1”值,为悬停状态定义了“shadow2”:

.elem {
    box-shadow: #333 1pt 1pt 3pt; /* shadow1 */
 }
.elem:hover {
    box-shadow: #666 3pt 3pt 5pt; /* shadow2 */
 }

我的脚本将它自己的影子添加到现有的影子中。所以:

box-shadow: shadow1, shadow2

这很容易实现。我只需要使用 jQuery 执行以下操作:

var defaultShadow = elem.css("box-shadow");
elem.css("box-shadow", defaultShadow + ", " + anotherShadow);

因此,算法如下:

  1. var defaultShadow = elem.css("box-shadow");
  2. 在 setInterval 中做一些事情。为默认阴影添加另一个阴影

问题出现了,当元素悬停时,效果脚本正在运行。在这种情况下,效果已经与在步骤 1 中获得的“defaultShadow”一起使用。

这更难,因为脚本中声明的阴影出现在“style”属性中,并且所有使用外部 CSS 声明的规则都将被覆盖。

有没有办法使用 JavaScript 为相关元素获取在 .css 文件中声明的 CSS 样式。我还需要元素状态的样式,例如“:hover”、“:active”等。

最佳答案

Is there a way to get CSS styles, declared in a .css file, for element in question, using JavaScript. I need also styles for states of the element, like "hover", "active" etc.

您应该能够修改 cssRules使用 JavaScript 对象创建您自己的规则,而不是依赖内联样式。

查看此 blog post了解更多信息。

IE 示例:

document.styleSheets[0].addRule("p .myclass", "font-size: 120%");

Firefox 示例:

document.styleSheets[0].insertRule("p{font-size: 20px;}", 0);

引用 doc这些被发现了。

关于javascript - 使用 JavaScript 获取 CSS 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197012/

相关文章:

javascript - 使用 JavaScript 单击按钮删除 div

javascript - 当用户选择文件时执行 javascript 函数

php - 使用 jQuery 发布屏幕宽度

javascript - 从 Facebook 拉取给定 URL 的共享缩略图

javascript - React Router 渲染空 div

javascript - 从 xterm js 隐藏助手文本框

jquery - 按钮图像 - 图像堆栈在原始 HTML 按钮之上

javascript - 提交表单时 AJAX Jquery 验证不起作用

HTML 表格使单元格高度适合内容 valign top

html - 如何摆脱PNG按钮的白色阴影