Html 在CSS文件中使用相对URL,它相对于什么位置?
当在CSS文件中定义背景图像URL之类的内容时,当使用相对URL时,它相对于什么位置?例如: 假设文件Html 在CSS文件中使用相对URL,它相对于什么位置?,html,css,Html,Css,当在CSS文件中定义背景图像URL之类的内容时,当使用相对URL时,它相对于什么位置?例如: 假设文件/stylesheets/base styles.css包含: div#header { background-image: url('images/header-background.jpg'); } 如果我通过将此样式表包含到不同的文档中,CSS文件中的相对URL是否会相对于/stylesheets/中的样式表文档,或者相对于包含它的当前文档?可能的路径如下: /item/det
/stylesheets/base styles.css
包含:
div#header {
background-image: url('images/header-background.jpg');
}
如果我通过
将此样式表包含到不同的文档中,CSS文件中的相对URL是否会相对于/stylesheets/
中的样式表文档,或者相对于包含它的当前文档?可能的路径如下:
/item/details.html
/关于/index.html
/关于/extra/other.html
/index.html
它是相对于CSS文件的。
(其他任何东西都会被打破,IMNSHO)根据:
部分URL的解释是相对于样式表的源,而不是相对于文档
因此,在回答您的问题时,它将与/stylesheets/
相关
如果您考虑一下,这是有意义的,因为CSS文件可以添加到不同目录中的页面,因此将其标准化为CSS文件意味着URL将在链接样式表的任何地方工作
为了创建不依赖于资源绝对位置的模块化样式表,作者可以使用相对URI。使用基本URI将相对URI(如中所定义)解析为完整URI。RFC 3986第5节定义了该过程的标准算法。对于CSS样式表,基本URI是样式表的URI,而不是源文档的URI
例如,假设以下规则:
body{background:url(“黄色”)}
位于URI指定的样式表中:
http://www.example.org/style/basic.css
源文档正文的背景将与URI指定的资源所描述的任何图像平铺
http://www.example.org/style/yellow
用户代理处理无效URI或指定不可用或不适用资源的URI的方式可能有所不同
取自。它是相对于样式表的,但我建议将URL设置为相对于您的URL:
div#header{
背景图像:url(/images/header background.jpg);
}
通过这种方式,您可以在不需要重构的情况下移动文件。一个可能出现的问题似乎打破了这一点,那就是使用css的自动最小化。缩小包的请求路径可以具有与原始css不同的路径。这可能会自动发生,因此可能会造成混乱 缩小包的映射请求路径应为“/originalcsfolder/minifiedbundlename”,而不仅仅是“minifiedbundlename” 换句话说,将包命名为具有与原始文件夹结构相同的路径(带/),这样任何外部资源(如字体、图像)都将通过浏览器映射到正确的URI。另一种方法是在css中使用绝对url(参考),但这通常不可取。尝试使用:
body {
background-attachment: fixed;
background-image: url(./Images/bg4.jpg);
}
Images
是一个文件夹,其中包含您要发布的图片。这对我很有效。添加两个点和斜线
body{
background: url(../images/yourimage.png);
}
前面额外的“/”有什么区别?就像命令行上的路径名一样,路径前面的前导/意味着它指向当前web服务器上的绝对资源。实际上,在某种情况下,相对于CSS文件使用URI更好。在我的情况下,我有一个目录“/CSS/”我把所有CSS数据放在那里。现在,我想在一个单独的文件夹中测试网站上的新功能。这变得很难测试,例如,测试文件夹中的新背景图像。这完全取决于您的需要…绝对路径使解决方案很难放在域的子文件夹中。您希望支持子文件夹的原因有很多。我t使测试更容易(正如迭戈提到的)您可以将以前的版本/预发行版与prod放在同一个域中。将来的更改是将公司代理服务器设置为支持SSO,将所有解决方案移动到一个域中,等等。特别是使用SSL,您可能希望避免维护多个域名的开销。对我来说,这些注意事项比n“更容易移动我的.css文件”。图像和类似的东西无论如何都会转到cdn,因此这是完美的。看起来IE中的规则有一个例外:
-ms behavior
:(还有一个例外:当url是自定义属性的默认值时。假设您定义.banner{background image:var(--bgimgURL('images/default.jpg')); }
,但不要为--bgimg
定义一个值。然后在/index.html
页面上,一个.banner
将查找/images/default.jpg
,但在另一个页面上/about/index.html
将查找/about/images/default.jpg
。非常糟糕。更正:默认值上面的错误在Chrome v60中已经修复。如果你的css在一个捆绑包中,路径真的不重要。它不是你认为它会在哪里,没有什么是相对的。我在使用属性时遇到了问题:background:var(--原色背景)没有重复的中心url(“maps.jpg”);
这在IOS和Safari中不起作用。只有绝对路径/resources/maps.jpg
与css属性一起在Safari中起作用。这为我节省了大量时间!谢谢。应该有更多的文档说明,它只适用于从根目录向下一个目录的页面。对于根目录或向下两个目录的任何页面,它都可以我会失败的。