为什么样式表不起作用?

时间:2014-01-10 16:38:48

标签: html css thttpd

我有一个简单的html页面如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test title</title>
 <link href="style.css" rel="stylesheet" type="text/css" />

 </head>
 <body>
     <span class="test">Test</span>
 </body>
 </html>

并且style.css如下:

.test{
 color:yellow;
}

我怀疑输出是黄色测试,但它是黑色测试。

如果我使用此链接:

http://url/style.css

我可以看到CSS的内容,所以我相信客户端可以阅读它。

我在嵌入式系统上使用thttpd作为Web服务器。

IE开发人员显示的屏幕截图: No style is applied

表明html和css都是通过IE获得的。

style is taken from server

2 个答案:

答案 0 :(得分:3)

你说你在嵌入式系统上使用thttpd。鉴于您的代码很好,我预计发生的事情是IE会忽略您的样式,因为您的Web服务器没有使用正确的内容类型为它们提供服务。

来自MSDN上的MIME types and stylesheets

  

从IE9标准模式开始,样式表将被忽略(未应用),除非它们以“text / css”MIME类型提供。

所以,我建议查看你的thttpd配置,看看是否可以添加指令以将'text / css'MIME类型应用于.css文件。

更新:我可以从你的截图中看到样式表正在提供“text / html”,这几乎证实了我的诊断。 CSS文件应该作为“text / css”提供。

thttpd的文档建议您只能在编译时更改它支持的MIME类型,因此要解决问题,您需要重新编译。

我可以看到最新版本的thttpd,2.25b,其mime_types.txt中的CSS文件正确标记为text / css,因此您可以获取最新版本并使用它。

或者,添加行

css text/css

到你现有版本的mime_types.txt,如果你是从源代码编译的,那么重新编译。 thttpd Makefile使用该文本文件将每个文件扩展名的正确MIME类型编译到二进制文件中。 (请注意,文件格式需要文件扩展名和MIME类型之间的制表符。)

(鉴于嵌入式系统通常不能很好地处理多个连接,您也可以将您的样式嵌入HTML文档标题中的<style>元素中,这将(a)与您的当前设置,以及(b)保存第二个请求以获取单独的CSS文件。)

答案 1 :(得分:2)

您的HTML页面或CSS没有任何问题,所以我认为您的浏览器无法获取css(可能是URL错误?)或者它正在使用css的缓存版本。 (如果使用IE,则尝试CTRL + f5)

如果这没有帮助,那么根据您使用的浏览器,我建议您打开开发人员工具并跟踪返回的网络呼叫和状态代码。 E.G for Internet Explorer,点击F12,切换到Network选项卡并启用“Start Capturing”。为了更详细地了解幕后发生的事情,Fiddler是一个很棒的工具。