【发布时间】:2014-11-19 12:59:30
【问题描述】:
在 CSS 中,我希望能够为给定的选择器指定背景图像,而无需实际下载或呈现它。然后,我希望能够使用 javascript 读取图像 URL,在 js 中对其进行修改,然后将修改后的 URL 真正应用于选择器,以便实际下载和显示。 (我想最后一部分必须通过 jQuery 直接更改每个元素的样式来完成,但这不是这个问题的意义所在。)这是我试图制作非常简单的响应式图像的一些狡猾的事情的一部分。
我试过了:
.sneaky {
background: url("youcantseemeyet.jpg");
background-image: url("blank.jpg");
}
但我找不到让 javascript 了解原始背景属性的方法。
也试过了:
.sneaky:after {
background: url("youcantseemeyet.jpg");
}
但我不认为 javascript 可以看到伪元素。
也试过了:
.sneaky {
x-background: url("youcantseemeyet.jpg");
}
和:
.sneaky {
background: x-url("youcantseemeyet.jpg");
}
但我认为 javascript 只是将自定义属性/值扔出窗口。
CSS Polyfills 是如何工作的?因为它们允许您使用通常在浏览器中无效的 CSS 属性和值,那么 javascript 是如何访问 CSS 的呢?
另一个想法:我不认为有办法用 javascript 抢占 CSS,阅读 url() 但阻止文件下载,是吗?
【问题讨论】:
-
最简单的解决方案:在 JavaScript 中生成一个新的
<style>标签,用你想要的任何东西填充它,然后把它塞进<head>。无需阅读 CSS 或特别偷偷摸摸,除非您有其他理由。否则,这是一个 XY 问题。如果你真的,真的想阅读 CSS 规则,stackoverflow.com/questions/324486/… -
我希望能够在您通常声明背景图像的位置或附近使用 CSS 声明 URL。
标签: javascript css responsive-design