css在瀏覽器的兼容問題及其解決方案

css兼容一直是很讓人頭疼的事,我們在這里就簡單介紹常見的兼容問題和其相關的解決方案。

強制內核渲染

比如說360瀏覽器是分兼容模式和極速模式,兼容模式使用的是IE內核,而極速模式使用的Chrome的內核(webkit),因此強制內核渲染也是必須的。另外,即使是在IE下,默認使用的內核也是不同的。

//強制使用IE7模式來解析
<meta http-equiv=“X-UA-Compatible” content=“IE=EmulateIE8″>
<meta http-equiv=“X-UA-Compatible” content=“IE=8″>  

// 對于目前來說加上下面的代碼就好了
<meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1">

空白圖片 base64

data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

不要滾動條

html ::-webkit-scrollbar {
    /*不要滾動條*/
    display: none;
}
@-ms-viewport {
    width: device-width;
}

input/trextarea

/*取消輸入框默認有內部陰影*/
input,
textarea {
    border: 0; /* 方法1 */
    -webkit-appearance: none; /* 方法2 */
}

: 
/*取消input和textarea的聚焦邊框*/
input{outline:none} 

/*取消textarea可拖動放大*/
textarea{resize:none} 

/*placeholder設置顏色*/
textarea::-webkit-input-placeholder{  color:#be916a;}

/*input placeholder文字垂直居中(Mobile & PC)*/
input{
  line-height: normal; /* for non-ie */  
  line-height: 22px\9; /* for ie */  
}

/*去掉a、input和button點擊時的藍色外邊框和灰色半透明背景*/
a,button,input,optgroup,select,textarea {
    -webkit-tap-highlight-color:rgba(0,0,0,0);
}

移動端去掉長按選擇

div,span,p,img{  -webkit-user-select: none;/*禁用手機瀏覽器的用戶選擇功能 */  -moz-user-select: none;}

禁止長按鏈接與圖片彈出菜單

a, img {
    -webkit-touch-callout: none; 
/*禁止長按鏈接與圖片彈出菜單*/
}

display:inline-block 間隙去除

.wrapper{
  font-size:0
 }
.inlineblock{
    display: inline-block;  
    letter-spacing: normal;
    word-spacing: normal;
}

<div class='wrapper'>
    <div class="inlineblock"></div>
</div>

響應式

@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}

畫1px的細線

.border1px{  position: relative;}
.border1px:after{
    content:"";
    position: absolute;
    bottom:0px;
    left:0px;
    right:0px;
    border-bottom:1px solid red;
    border-left:1px solid red;
    -webkit-transform:scaleY(.5);
    -webkit-transform-origin:0 0;
}

占位圖生成

http://www.atool.org/placeholder.png?size=500x200&text=aTool全站廣告位征集&&bg=836&fg=fff
http://placehold.it/640x320 // 推薦
http://placekitten.com/200/300

瀏覽器初始化樣式不同導致兼容問題

兩個瀏覽器樣式初始化庫: reset.cssnormalize.css

透明度兼容css

IE: filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)
  或者:filter:alpha(opacity=40);

非ie: opacity:0.6

盒子模型

標準 w3c 盒子模型的范圍包括 margin、border、padding、content,并且 content 部分不包含其他部分; IE盒子模型的范圍也包括 margin、border、padding、content。

和標準 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 padding。

因此,問題主要表現在css中的width是否計算border和padding的問題,這個是默認的盒子解析模型不同導致的。

IE6:中包括border和padding(box-sizing: border-box;)
IE7和非IE:width寬度不包括border和padding(box-sizing: content-box;)

解決方式: 根據使用方式,寫好box-sizing屬性。

浮動問題

子元素進行浮動,而父元素沒有撐開盒子

.clearfix:before,.clearfix:after {  content: " "; /* 1 */  display: table; /* 2 */}
.clearfix:after {  clear: both;}

高度不適應

高度不適應是當內層對象的高度發生變化時外層高度不能自動進行調節,特別是當內層對象使用margin 或padding時

例如:

#box {background-color:#eee; } 
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; } 
<div id="box">
<p>p對象中的內容</p>
</div>

解決技巧:

  1. 給div 加上border
  2. 在P對象上下各加2個空的div對象CSS代 {height:0px;overflow:hidden;}

超鏈接訪問過后hover樣式就不出現的問題

解決技巧

a:link {} 
a:visited {} 
a:hover {} 
a:active {}

calc 的使用

瀏覽器支持的不是很好,而且在使用的時候要加上廠商前綴,達到兼容性。另外,注意減號之間的空格。

width: calc(100% - 80px);

#formbox {
  width:  130px;
  /*加廠商前綴,操作符(+,-,*,/)兩邊要有空格)*/               
  width:  -moz-calc(100% / 6);   
  width:  -webkit-calc(100% / 6);   
  width:  calc(100% / 6);   
  border: 1px solid black;
  padding: 4px;
}

Chrome中文版12號以下的字體不識別

html{-webkit-text-size-adjust:none;} 

/*針對Opera*/ 

@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { 

#nav{ width:400px; } 

}

注意事項

  • 記得清除浮動。(在具有float元素的容器底部加入清除浮動)

  • 浮動元素盡量給一個確定的寬度。

  • 盡量使用padding代替margin。

  • 若同時有float及margin,加入display:inline。

  • 盡量避免使用絕對定位進行布局;若使用,需明確指定z-index, top, left;

  • 盡量避免使用半透明png圖片(PNG-24);若使用,用PNG修復補丁修復之;

  • 若出現寬度被撐開現象,設置overflow:hidden;

  • 若出現莫名padding,設置 font-size:0 及 overflow:hidden;

其他技巧

  • FF下給 div 設置 padding 后會導致 width 和 height 增加, 但IE不會.(可用!important解決)

  • 垂直居中.將 line-height 設置為 當前 div 相同的高度, 再通過 vertical-align: middle.( 注意內容不要換行.)

  • 水平居中. margin: 0 auto;(當然不是萬能)

  • 若需給 a 標簽內內容加上 樣式, 需要設置 display: block;(常見于導航標簽)

  • ul 標簽在 FF 下面默認有 list-style 和 padding . 最好事先聲明, 以避免不必要的麻煩. (常見于導航標簽和內容列表)

  • 作為外部 wrapper 的 div 不要定死高度, 最好還加上 overflow: hidden.以達到高度自適應.

圖片默認有間距

解決方案:使用float屬性為img布局

標簽最低高度設置min-height不兼容

解決方案:如果我們要設置一個標簽的最小高度200px,需要進行的設置為:

{ 
   min-height:200px; 
   height:auto !important;
   height:200px;
   overflow:visible;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容