再會了,CSS Hack
此篇文章最近更新時間為2009-05-31 06:38:00
目前共有12篇留言
相關標籤:
D-Link 友訊科技工程師。喜好戶外運動、2008 年 5 月完成「跑步環島」。對於新技術跟程式碼有著強烈的偏執狂。
.ykpmodule .hd div h3 {
padding:9px 7px 0;
*padding-bottom:4px;
_padding-bottom:0;
}
第 1 行是所有瀏覽器、第 2 行是所有 IE、第 3 行是 IE6 含以前,但第二行被第三行影響到後,只有 IE7 以後會套到,這樣的方法算簡單。加上公司有規定 DOCTYPE 與套用 YUI Reset 與 Fonts,建立了良好的 CSS 撰寫環境,所以一直以來都只用到這兩種 CSS Hack 就幾乎可以滿足所有需求。
<!--[if lt IE 7 ]> <body class="ie6"> <![endif]-->
<!--[if IE 7 ]> <body class="ie7"> <![endif]-->
<!--[if IE 8 ]> <body class="ie8"> <![endif]-->
<!--[if !IE]>--> <body> <!--<![endif]-->
這種方法還不錯,因為可以只用一個 CSS 檔案、不同的 Class 來做,針對 IE 不需要使用任何的 Hack:
.ykpmodule .hd div h3 {padding:9px 7px 0;}
.ie6 .ykpmodule .hd div h3 {padding-bottom:0;}
.ie7 .ykpmodule .hd div h3 {padding-bottom:4px;}
.ie8 .ykpmodule .hd div h3 {padding-bottom:2px;}
但是用 Conditional Comments 的問題就在於不標準,此外僅 IE 支援,我個人也很討厭在 HTML 裡面還要有一些奇怪的邏輯判斷。就在想有沒有一些更好的解法...
> curl http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI > ~/browscap.ini
> sudo mv ~/browscap.ini /etc/php5/apache2/.
> sudo vim /etc/php5/apache2/php.ini
[browscap]
browscap = /etc/php5/apache2/browscap.ini
sudo /etc/init.d/apache2 restart
<?php
$browser = get_browser();
print_r($browser);
?>
<?php
$browser = get_browser();
$browser = strtolower($browser->browser . $browser->majorver);
?>
<body class="<?php echo $browser; ?>">
更棒的是,管你是 IE 還是 Safari 甚至是 Chrome,我們都可以用不是 Hack 的作法來解決:
.ykpmodule .hd div h3 {padding:9px 7px 0;}
.ie7 .ykpmodule .hd div h3 {padding-bottom:4px;}
.ie8 .ykpmodule .hd div h3 {padding-bottom:2px;}
.safari2 .ykpmodule .hd div h3 {padding-bottom:10px;}
.chrome1 .ykpmodule .hd div h3 {padding-bottom:1em;}
其实我们平常按照web的方式进行书写,基本没有什么问题
而且按照你的这种写法,其实和hack没有什么区别,只是使用了一个标识更强的class,这样反而对性能有影响,因为这样会对css层级增加一层。
而且更麻烦的是,是需要对服务器端的程序进行配置。
个人愚见。