如果你有两个这样的规则:
.foo {
background-image: url(foo.gif);
}
.foo {
background-image: url(bar.gif);
}
并拥有<div class='foo'>Foobar</div>
您的浏览器会同时缓存两者,还是仅显示实际显示的内容(在这种情况下为bar.gif
)?
在所有设置中都是如此吗? (规则在不同的文件中,!important
应用于一个,等等)
答案 0 :(得分:3)
我假设“缓存”在这里,你的意思是“预加载”。实际的“缓存”与过期标题等有关。
它完全基于浏览器的行为以及它选择做什么。但是,我的经验是,现代浏览器无需加载CSS文件中定义的图像,除非实际调用该图像。
这是一些选择将元素的默认状态和悬停状态都设置为一个图像,然后使用background-position
属性来更改可见内容的原因之一。有更多的开销,但悬停和显示悬停状态之间也没有延迟,从而使体验更加顺畅。
答案 1 :(得分:3)
浏览器在读取css时不会加载图像,只是记住它们。当它开始渲染页面时,它开始加载图像。
因此,在您的情况下,您已经覆盖了css规则,当浏览器呈现页面时,它会忽略您的css规则,并且自然不会加载您的第一张图片。
答案 2 :(得分:1)
我可以告诉他(使用FireBug),它只会提取您显示的图像,而不是已定义的图像。
答案 3 :(得分:1)
在我的本地apache日志中使用tail -f,我发现了以下内容:
::1 - - [21/Jul/2010:13:28:50 -0700] "GET /test.html HTTP/1.1" 200 127
::1 - - [21/Jul/2010:13:28:50 -0700] "GET /test.css HTTP/1.1" 304 -
::1 - - [21/Jul/2010:13:28:50 -0700] "GET /bar.gif HTTP/1.1" 404 205
使用firefox,浏览器只尝试加载“bar.gif”(由于我没有该图像,因此未找到404)。
如果您对其他浏览器感兴趣,我也可以测试它们。
答案 4 :(得分:0)
如果两个规则具有相同的特异性,则稍后将应用。 在此处详细了解specificity。