成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CSS Hack的基本原理和實現方式

開發 前端
CSS hack是因為現有瀏覽器對標準的解析不同,為了兼容各瀏覽器,所采用的一種補救方法;CSS hack也是一種類似作弊的手段,以欺騙瀏覽器的方式達到兼容的目的。

本文向大家簡單介紹一下CSS Hack的基本原理和實現方式,有人說CSS hack是一種類似作弊的手段,以欺騙瀏覽器的方式達到兼容的目的,是用瀏覽器的兼容性差異來解決瀏覽器的兼容性問題,CSS hack是因為現有瀏覽器對標準的解析不同,為了兼容各瀏覽器,所采用的一種補救方法。

CSS Hack的基本原理和實現方式

由于不同的瀏覽器,比如IE6、IE7、IE8、Firefox等,對CSS解析的標準不同,因此對于相同的CSS代碼,可能會生成不同的頁面效果,從而無法在所有瀏覽器中得到我們想要的效果。這時,我們就需要針對不同的瀏覽器去寫不同的CSS代碼,讓它能夠在所有瀏覽器中獲得相同的效果。這個過程,就是CSS hack。也就是寫出只有個別瀏覽器或某些瀏覽器識別的CSS代碼。

CSS Hack的基本原理

CSS hack是因為現有瀏覽器對標準的解析不同,為了兼容各瀏覽器,所采用的一種補救方法。

CSS hack是一種類似作弊的手段,以欺騙瀏覽器的方式達到兼容的目的,是用瀏覽器的兼容性差異來解決瀏覽器的兼容性問題。因此,在設計之初,寫CSS hack需要遵循以下三條原則:

◆有效:能夠通過Web標準的驗證

◆只針對太古老的/不再開發的/已被拋棄的瀏覽器,而不是目前的主流瀏覽器

◆代碼要丑陋。讓人記住這是一個不得已而為之的Hack,時刻記住要想辦法去掉它。

現在很多hacks已經拋棄了最初的原則,而濫用hack會導致瀏覽器更新之后產生更多的兼容性問題。因此,并不推薦使用CSS hack來解決兼容性問題。#p#

CSS hack的實現方式

我總結了一下,實現CSS hack大概有以下幾種方式:

1.利用瀏覽器對相同代碼的解析和支持的不同實現的hack

不同瀏覽器對相同的CSS代碼的支持情況可能不同。尤其是對錯誤的寫法。

例如

CSScode

  1. #test{  
  2. _width:80px;  
  3. }  
  4.  

在IE7及以上版本的瀏覽器中會被當作錯誤特性而舍棄,但是在IE6中可以被正常的解析。這時候,可以把_width當作hack,專門針對IE6來設置元素的寬度。

2.以Firefox或Webkit特有的擴展樣式實現的hack

以-moz或-webkit開頭的擴展樣式,是瀏覽器對CSS標準的擴展。這些特性只在相應的瀏覽器里才可以被正常的解析。因此可以被當作CSS hack來使用。

◆以-moz開頭的Firefox特有擴展樣式

Mozilla瀏覽器支持的一些擴展是以-moz開頭的。這些擴展包括了一些功能,例如圓形邊界等。這種CSS只適用于Mozilla瀏覽器。
比如,-moz-opacity是在Firefox2.0版本出現的特性,用來實現元素的透明,但Firefox3.0以后的版本中不再支持,而是直接支持標準中的opacity特性。而其他瀏覽器不支持-moz-opacity。所以,可以使用-moz-opacity來針對Firefox2.0設置元素的透明度。
關于Firefox擴展樣式的詳細信息,見MozillaCSSExtensions。

◆以-webkit開頭的Webkit瀏覽器特有擴展樣式

與以-moz開頭的Firefox特有擴展樣式相同,以-webkit開頭的樣式是Webkit瀏覽器特有的,只有Webkit瀏覽器可以解析。
比如,在Webkit瀏覽器中可以用-webkit-border-radius實現圓角。

3.利用IE對標準的支持缺陷寫的CSS hack

這個類別以中的hack以IE對標準的支持缺陷為基礎,可以讓CSS代碼針對IE6或IE7以外的瀏覽器生效。
例如,!important只有IE7及以上版本的IE及其他瀏覽器支持,所以,可以用!important來針對IE6以外的瀏覽器寫CSS代碼;再如,head:first-child+bodyselector,:first-child不被IE6支持,所以可以用來針對IE6以外的瀏覽器編寫CSS代碼。
此處不在一一列舉。

當然,有的觀點認為應用CSS2.1標準,不屬于CSS hack。見Tantek'sThoughts,UsingACSS2FeatureIsNOTaHack。

4.以IE特有的條件注釋為基礎的hack

IE瀏覽器中特有的條件注釋也經常被用作hack,可以針對特定版本的IE寫CSS代碼。

例如,測試用例:

  1. HTMLcode<!--[ifIE8]> 
  2. <styletypestyletype="text/css"> 
  3. #test{  
  4. color:red;  
  5. }  
  6. </style> 
  7. <![endif]--> 
  8. <h1idh1id="test">TEXT</h1> 
  9.  

以上代碼中的"TEXT",只在IE8中才會是紅色。

【編輯推薦】

  1. 調用CSS hack區分不同瀏覽器
  2. CSS hack:實現IE6、IE7、Firefox兼容
  3. 深入探究DIV CSS布局中position屬性用法
  4. CSS屬性display:inline-block使用揭秘
  5. Firefox、IE7、IE6瀏覽器兼容問題概念解析
責任編輯:佚名 來源: hi.baidu.com
相關推薦

2012-01-12 14:37:34

jQuery

2010-06-18 17:28:37

Linux Anacr

2010-08-20 13:29:33

OFDM

2013-04-07 14:09:55

Android應用基本

2020-03-21 14:57:14

手機定位智能手機APP

2009-02-24 09:43:00

IP電話原理

2011-11-29 12:17:00

2019-11-28 10:45:28

ZooKeeper源碼分布式

2016-08-18 00:04:09

網絡爬蟲抓取系統服務器

2012-09-28 10:12:55

2024-04-28 08:30:02

2010-03-17 13:35:02

2016-08-17 23:53:29

網絡爬蟲抓取系統

2021-02-08 21:40:04

SockmapBPF存儲

2023-12-11 07:52:19

圖像處理矩陣計算計算機視覺

2010-08-23 16:52:37

DHCP服務器

2021-03-04 08:26:17

synchronizeReentrantLojava

2011-07-07 14:10:21

Cocoa 內省 hash

2009-06-11 09:56:09

MySQL Repli原理

2020-12-29 16:55:44

ZooKeeper運維數據結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天精品在线 | 女生羞羞视频 | 日本一二区视频 | 中文字幕一级 | 欧美三区视频 | 欧美日韩在线精品 | 天天拍夜夜爽 | 精品亚洲视频在线 | 国产亚洲精品久久19p | 亚洲精品视频免费观看 | 2020天天操| 天堂av中文| 福利一区视频 | 日韩精品一区二区在线观看 | 日韩视频在线观看一区二区 | 国产伦精品一区二区 | 成人九色 | 成人视屏在线观看 | 91久久视频| 亚洲视频一区二区三区 | 中文字幕亚洲欧美 | 成人av在线播放 | 欧美成人精品一区二区男人看 | 美国一级毛片a | 欧美一区二区大片 | 欧美国产91 | 亚洲成人三级 | 日韩三级在线 | 久久精品免费 | 成人在线视频一区 | 久久国产麻豆 | 久久久久久国产精品免费免费 | www.久久久| 久久久国产一区二区三区四区小说 | 久久久久免费观看 | 日韩在线精品视频 | 亚洲精品字幕 | 男女羞羞免费视频 | 日本不卡在线观看 | www.国产精| 久久久久久免费看 |