繁体   English   中英

有没有办法在扩展名不是 .css 的样式表中进行链接?

[英]Is there a way to link in a stylesheet where the extension is not .css?

我需要在 CSS(和 JS,如果你知道 - 还没有测试)中动态链接,但是当我这样做时,浏览器没有呈现样式?

这是我的代码:

<link rel="stylesheet" href="css/test"/>

如果我手动上传文件并将其保存为 test.css,那么它就可以工作了。

<link rel="stylesheet" href="css/test.css"/>

有没有办法对浏览器说,“这是一个 CSS 文件。请忽略它没有 css 扩展名”?

更多的
原因是我正在设置一个允许用户动态创建自己的 CSS 的服务器。 我将此信息存储在数据库中,并且不想在每次用户更新 css 或新用户创建他们的帐户时创建物理(数字)文件。 因此,URL 可能是 href="http://somedomain.com/home.php?user=453&css=true" 或类似的内容,如果放置在浏览器的 URL 中,将返回原始 CSS。

浏览器首先查看他们接收的内容的 MIME 类型,这原则上与文件的扩展名无关。 MIME 类型由 Web 服务器作为 HTTP 标头(文件的信封,如果您愿意)的一部分发送。

CSS 样式表的正确 MIME 类型是text/css 如果样式表文件具有 text/css MIME 类型(在 HTTP 标头中定义),则无论扩展名是什么,您的浏览器都将使用它们来应用样式。

如果 MIME 类型错误,则结果未定义:它取决于浏览器和 HTML 版本以及是否呈现样式的严格性。 您可以使用浏览器的调试器检查 MIME 类型。

有关 Chrome 中的示例,请参阅此屏幕截图

这个截图

每个段落都有color: red规则在相应的文件中,但没有应用。 如您所见,text/plain 文件中的样式确实得到了呈现,尽管其 MIME 类型不正确。 浏览器确实给出了警告。 PHP 生成的 text/html 文件中的样式未呈现(并给出警告。)

然而,PHP 和其他脚本引擎允许操作 MIME 类型,就像我在 test.css.fixed.php 文件(下面的代码)中所做的那样。如您所见,浏览器不再抱怨并应用样式而不管其扩展名.

在 PHP 中,MIME 类型可以设置如下(这里是 test.css.fixed.php):

<?php 
    header("Content-Type: text/css");
?>

    p.test_css_fixed_php {
        color: red;
    }

header函数更改服务器发送的 HTTP 标头。

如果您不使用脚本引擎,您可以配置您的 Web 服务器以正确设置 MIME 类型(参见例如Apache mod_mime 配置)。

请注意,HTML 版本和严格性也会对此产生影响。 在 Chrome 中,当 HTML 类型不严格时,text/html 文件中的样式似乎无论如何都会呈现。 但是你不能指望它,所以它充其量只是一个快速而肮脏的修复。

我认为扩展不是问题 - 它可以是任何扩展。 尝试添加一个点 - 也许这将适用于css/test.

任何 CSS 文件都需要具有 CSS 文件扩展名。 这就是 HTML 如何知道该文件将用作样式表。 否则,它只是一堆没有意义的纯文本字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM