【问题标题】:Serving CSS from a static domain从静态域提供 CSS
【发布时间】:2011-01-30 02:38:10
【问题描述】:

我想从静态无 cookie 域提供我的 css 和图像。现在我的问题是如何从我的 css 文件中指向图像。

我不想在 css 文件中对我的域进行硬编程,例如:

http://static.com/image.png

我宁愿有一个指向图像的变量,所以它适用于我使用的每个静态域。

实现这一目标的最佳方法是什么。我是否应该通过 php 运行整个 css 文件并将静态域添加到所有 png 引用的前面。这样做的一个缺点是我必须将整个 css 放在 html 中。

或者是否有另一种更优化的方式来做到这一点。

【问题讨论】:

    标签: css static cookieless


    【解决方案1】:

    只要图像来自样式表中的同一服务器,使用相对 URI 就足够了。

    来自CSS Spec

    为了创建模块化风格 不依赖于的工作表 资源的绝对位置, 作者可以使用相对 URI。 相对 URI(定义见 [RFC3986]) 被解析为完整的 URI 使用基本 URI。 RFC 3986,第 5 节, 定义了规范算法 这个流程。对于 CSS 样式表, 基本 URI 是样式的 工作表,而不是来源的工作表 文件。

    Bert Bos(CSS 规范的作者之一)有一篇关于样式表中变量的有趣文章。你可以阅读它here

    【讨论】:

    • 同意 - 只需将 CSS 表单本身托管在静态域上,然后引用您的图像,如 url(images/image.gif) 等。浏览器从上下文的上下文发出 CSS 图像请求托管 CSS 表。
    • 不错!谢谢你们的帮助。这几天我一直在为此头疼。我应该只是测试一下,我只花了几分钟就设置好了。太好了!
    【解决方案2】:

    当您从静态域中提取 CSS 时,CSS 中的相对 URL 将指向同一个域。因此,您可以只使用相对路径并提供来自该域的 css 和图像。

    【讨论】:

    • 所以如果我理解正确的话。如果我的主域是maindomain.com,静态域是staticdomain.com。当我从静态域加载 CSS 文件时,我在其中引用 backgorund:url('/somepng.png');它将在静态域中查找,而不是在主域中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多