我们有一个需要在IE6,7,8中工作的项目。
我不熟悉样式表,但我知道有多种方法可以根据浏览器类型加载样式表。
我的问题是,是否有可能拥有一个所有浏览器都会使用的主样式表,然后导入另一个覆盖各种样式以考虑浏览器实现的样式表,或者我是否需要每个浏览器只有一个CSS当需要完成变通工作时,它们中的代码大致相同。
也许我最近做了太多OO而且我已经习惯了我很好的继承等。
答案 0 :(得分:2)
我知道没有任何网站实际上为每个浏览器手动保留不同版本的大CSS文件。通常,它们只是在第一种情况下保留主样式表和子样式表,但是使用脚本将它们合并到一个静态文件中。为每个浏览器维护所有 CSS样式的不同副本是不值得的。
您列出的两种方式都是有效的,并且各有优势:
为每个浏览器创建包含子样式表的样式表:此方法很简单,并且正常运行。
合并主样式表和特定于浏览器的样式表:此方法非常适合 big (我的意思是 big )网站请求:(例如Yahoo,它有一个接受查询字符串来合并CSS文件的CSS文件);优点和缺点基本上与上述相反。
我建议您只选择第一个解决方案,除非您的网站非常大;使用PHP和服务器端浏览器检测,代码可能是这样的:
echo "<link rel='stylesheet' type='text/css' href='/css/main.css' />\n";
$browser = get_browser(null, true);
$browser = $browser['browser'];
if ($browser == 'Firefox') {
echo "<link rel='stylesheet' type='text/css' href='/css/firefox.css' />\n";
} elseif ($browser == 'Internet Explorer') {
...
请注意,最好不要让您的设计完全不需要特定于浏览器的CSS。大多数情况下,这并不是必需的,而是由于对CSS属性的理解不当造成的。要修复较小的默认浏览器差异,YUI reset等CSS库可能会非常有用。
答案 1 :(得分:1)
我肯定会利用样式表的级联性质。
我会包含base.css
然后如果您愿意,可以在每个浏览器的基础上添加一个样式表。
但是,我不会推荐它。一般来说,你可以让IE6 + 7玩球,而不需要不同的样式表。
但是,如果你不能,请查看conditional comments。