我有一个简单的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开发人员显示的屏幕截图:
表明html和css都是通过IE获得的。
答案 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是一个很棒的工具。