css相容性問題及一些常見問題彙總

来源:http://www.cnblogs.com/androidshouce/archive/2016/06/15/5586186.html
-Advertisement-
Play Games

目前主流瀏覽器的相容性做的都比較好了,本文主要針對IE6,7的不相容問題進行解決。 1.有浮動存在時,計算一定要精確,不要讓內容的寬高超出我們所設置的寬高,IE6下,內容會撐開設置好的高度。 解決方法:給對應的父級加overflow:hidden;但是會有部分被隱藏掉,最好是精確計算寬高再設定 eg ...


目前主流瀏覽器的相容性做的都比較好了,本文主要針對IE6,7的不相容問題進行解決。

1.有浮動存在時,計算一定要精確,不要讓內容的寬高超出我們所設置的寬高,IE6下,內容會撐開設置好的高度。

  解決方法:給對應的父級加overflow:hidden;但是會有部分被隱藏掉,最好是精確計算寬高再設定

eg:(ie會撐開)

 1 <style>
 2 .box{ width:400px;}
 3 .left{ width:200px;height:300px;background:red;float:left;}
 4 .right{ width:200px;float:right;}
 5 .div{width:180px;height:180px;background:blue;padding:15px;}
 6 /*
 7     計算一定要精確 不要讓內容的寬高超出我們設置的寬高
 8     在IE6下,內容會撐開設置好的寬高
 9 */
10 </style>
11 </head>
12 <body>
13 <div class="box">
14     <div class="left"></div>
15     <div class="right">
16         <div class="div"></div>
17     </div>
18 </div>
19 </body>

 

2. 在IE6下有元素浮動時,如果寬度需要由內容撐開,就給裡邊的塊元素都加浮動,正常瀏覽器不用加浮動。

eg:

 1 <style>
 2 .box{ width:400px;}
 3 .left{background:red;float:left;}
 4 .right{float:right; background:blue;}
 5 h3{margin:0;height:30px; float:left;}
 6 /*
 7     在IE6元素浮動,如果寬度需要內容撐開,就給裡邊的塊元素都加浮動
 8 */
 9 </style>
10 </head>
11 <body>
12 <div class="box">
13     <div class="left">
14         <h3>左側</h3>
15     </div>
16     <div class="right">
17         <h3>右側</h3>
18     </div>
19 </div>
20 </body>

 

3. 在IE6下元素的高度的小於19px的時候,會被當做19px來處理

  解決辦法:添加overflow:hidden;

 

4. 在IE6下border:1px dotted #000;中,dotted不支持,會以虛線的方式的出現。

  解決方法:切背景平鋪

 

5. 在所有瀏覽器中子元素的margin-top,margin-bottom值會傳遞給父級;

  解決辦法:

    a:給父級都添加浮動(或者給子級添加浮動也能解決margin-top問題,但是margin左右值會出現雙倍的值,也就是雙邊據bug問題,下麵會講);

    b:給父級添加position:relative;(或position:absolute;但是會脫離文檔流)

    c:添加display:inline-block; 正常瀏覽器,可行,但是IE,7下,塊元素不支持display:inline-block;

    d: 給附件添加border屬性,例如border:1px solid red; 正常瀏覽器可行,在IE6下必須再給父級添加zoom:1;

eg:

 1 <style>
 2 body{margin:0;}
 3 .box{background:blue;border:1px solid #000; zoom:1;}
 4 .div{width:200px;height:200px;background:red;margin:100px;}
 5 /*
 6     在IE6下解決margin傳遞要觸發haslayout
 7     
 8     在IE6下父級有邊框的時候,子元素的margin值消失
 9     
10     解決辦法:觸發父級的haslayout
11 */
12 </style>
13 </head>
14 <body>
15 <div class="box">
16     <div class="div"></div>
17 </div>
18 </body>

6. 在IE6下,塊元素有浮動和和橫向的margin值 ,橫向的margin值會被放大成兩倍。

  解決辦法:添加display:inline;

 

 1 <style>
 2 .box{ float:left;border:10px solid #000;}
 3 .box div{width:100px;height:100px;background:Red;margin-right:20px;border:5px solid #ccc; float:left;}
 4 /*
 5     margin-right 一行右側第一個元素有雙邊距
 6     
 7     margin-left 一行左側第一個元素有雙邊距
 8 */
 9 </style>
10 </head>
11 <body>
12 <div class="box">
13     <div>1</div>
14     <div>2</div>
15     <div>3</div>
16     <div>4</div>
17 </div>
18 </body>

7. 在IE6,7下,li自身沒浮動,但是li的內容有浮動,li下邊就會產生一個間隙

  解決辦法:1.給li加浮動
              2.給li加vertical-align:top;

註意:當IE6下最小高度問題,和 li的間隙問題共存的時候, 給li加浮動才能解決。

eg:

 1 <style>
 2 ul{margin:0;padding:0;width:302px;}
 3 li{ list-style:none;height:30px;border:1px solid #000; vertical-align:top;}
 4 a{width:100px;float:left;height:30px;background:Red;}
 5 span{width:100px;float:right;height:30px;background:blue;}
 6 /*
 7     在IE6,7下,li本身沒浮動,但是li的內容有浮動,li下邊就會產生一個間隙
 8     解決辦法:
 9         1.給li加浮動
10         2.給li加vertical-align
11 */
12 </style>
13 </head>
14 <body>
15 <ul>
16     <li>
17         <a href="#"></a>
18         <span></span>
19     </li>
20     <li>
21         <a href="#"></a>
22         <span></span>
23     </li>
24     <li>
25         <a href="#"></a>
26         <span></span>
27     </li>
28 </ul>
29 </body>

8.當一行子元素占有的寬度之和和父級的寬度相差超過3px,或者有不滿行狀態的時候,最後一行子元素的下margin在IE6下就會失效

  解決方法:額,還沒發現

eg:

 1 <style>
 2 .box{border:10px solid #000;width:600px; /* width:603px; */ overflow:hidden;}
 3 .box div{width:100px;height:100px;background:Red;margin:20px;border:5px solid #ccc; float:left; display:inline;}
 4 /*
 5     當一行子元素占有的寬度之和和父級的寬度相差超過3px,或者有不滿行狀態的時候,最後一行子元素的下margin在IE6下就會失效
 6 */
 7 </style>
 8 </head>
 9 <body>
10 <div class="box">
11     <div>1</div>
12     <div>2</div>
13     <div>3</div>
14     <div>4</div>
15     <div>1</div>
16     <div>2</div>
17     <div>3</div>
18     <div>4</div>
19     <div>1</div>
20     <div>2</div>
21     <div>3</div>
22     <!-- <div>4</div> -->
23 </div>

 9. 在IE6下的文字溢出BUG。即:子元素的寬度和父級的寬度相差小於3px的時候,或者兩個浮動元素中間有註釋或者內嵌元素的時候,IE6下文字溢出

  解決辦法:用div把註釋或者內嵌元素用div包起來。

eg:

 1 <style>
 2 .box{ width:400px;}
 3 .left{float:left;}
 4 .right{width:400px;float:right;}
 5 </style>
 6 </head>
 7 <body>
 8 <div class="box">
 9     <div class="left"></div>
10     <!-- IE6下的文字溢出BUG --><span></span>
11     <div class="right">&darr;哈哈哈哈哈哈哈哈哈哈</div>
12 </div>
13 <!--
14     在IE6下的文字溢出BUG
15     
16     子元素的寬度和父級的寬度相差小於3px的時候,兩個浮動元素中間有註釋或者內嵌元素
17     
18     解決辦法:用div把註釋或者內嵌元素用div包起來    
19 -->
20 </body>

10. 當浮動元素和絕對定位元素是併列關係的時候,在IE6下絕對定位元素會消失。
    解決辦法:
給定位元素外麵包個div。

eg:

 1 <style>
 2 .box{ width:200px;height:200px;border:1px solid #000; position:relative;}
 3 span{width:50px;height:50px;background:yellow; position:absolute;right:-20px;top:0;}
 4 ul{width:150px;height:150px;background:Red;margin:0 0 0 50px;padding:0; float:left; display:inline;}
 5 /*
 6     當浮動元素和絕對定位元素是併列關係的時候,在IE6下絕對定位元素會消失
 7     解決辦法:
 8         給定位元素外麵包個div
 9 */
10 </style>
11 </head>
12 <body>
13 <div class="box">
14     <ul></ul>
15     <span></span>
16 </div>

11. 在IE6,7下,子元素有相對定位的話,父級的overflow包不住子元素。

   解決辦法: 給父級也加相對定位 position:relative;。

eg:

 1 <style>
 2 .box{ width:200px;height:200px;border:1px solid #000; overflow:hidden; /*  position:relative; */ }
 3 .div{ width:150px;height:300px;background:yellow; position:relative;}
 4 /*
 5     在IE6,7下,子元素有相對定位的話,父級的overflow包不住子元素
 6     
 7     解決辦法: 給父級也加相對定位position:relative;
 8 */
 9 </style>
10 </head>
11 <body>
12 <div class="box">
13     <div class="div"></div>
14 </div>
15 </body>

12. 在IE6下絕對定位元素的父級寬高是奇數的時候,元素的right值和bottom值會有1px的偏差.

  解決辦法: 儘量用偶數,還沒發現別的方法。

 

13. 在IE6下,position:fixed; 是沒有效果的。

  解決方法:用js來控制吧。。。

 

14. 在IE6,7下輸入類型的表單控制項上下各有1px的間隙。

  解決辦法:給input加浮動,或者是絕對定位。

15. 在IE6,7下輸入類型的表單控制項加border:none;會發現border還在,

   解決辦法: 重置input的背景,如input{background:#fff;}; 或者使用border:0;或border:0 none;

 

16. 在IE6,7下輸入類型的表單控制項輸入文字的時候,其背景圖片會跟著一塊移動 。

解決辦法: 把背景加給父級。

 

17. 更簡潔的css清理浮動方式:

方法1:

/* 清理浮動 */
.clearfix:after {
 visibility:hidden;
 display:block;
 font-size:0;
 content:" ";
 clear:both;
 height:0;
}
.clearfix {
 zoom:1;
}

方法2:

在父元素加代碼:overflow:auto; zoom:1;

 

 

18. css強制換行與強制不換行:

 

/* 禁止換行 */      .nowrap{word-break:keep-all;white-space:nowrap;}
/* 強制換行 */      .break{word-break:break-all;}

 

19. 超鏈接樣式的設置:

a:link {color: #FF0000}               /* 未訪問的鏈接 */
a:visited {color: #00FF00}          /* 已訪問的鏈接 */
a:hover {color: #FF00FF}           /* 滑鼠移動到鏈接上 */
a:active {color: #0000FF}          /* 選定的鏈接 */

格式化標簽的預設樣式;

 

20. css/js線上壓縮:(有YUI Compressor工具)

http://ganquan.info/yui/?hl=zh-CN

 

21. 當一行固定寬度,且顯示不下內容,則加省略號:

{white-space:nowrap;

   text-overflow:ellipsis; /* for internet explorer */ 

   overflow:hidden; 

   width:190px; 

   display:block; 

   text-overflow:ellipsis}

text-overflow:ellipsis(代表三個點的省略號)

 

22. 瀏覽器相容性

margin-bottom:40px;         /*ff的屬性*/
margin-bottom:140px\9;    /* IE6/7/8的屬性 */
color:red\0;                       /* IE8支持 */
*margin-bottom:450px;     /*IE6/7的屬性*/

_margin-bottom:450px;     /*IE6/7的屬性*/

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引言:正則表達式為高級的文本模式匹配、抽取、與/或文本形式和替換功能提供基礎。在python中,通過標準庫中的re模塊來支持正則表達式 '.'點號,在普通模式,它匹配除換行符外的任意一個字元;如果指定了 DOTALL 標記,匹配包括換行符以內的任意一個字元。 '^'尖尖號,匹配一個字元串的開始,在 ...
  • 安裝 要在PHP程式中使用Redis,首先需要確保 Redis 的PHP驅動程式和 PHP 安裝設置在機器上。可以查看 PHP教程 教你如何在機器上安裝PHP。現在,讓我們來看看一下如何設置 Redis 的PHP驅動程式。 需要從 github 上資料庫: https://github.com/ni ...
  • 一、Redis基礎部分: 1、redis介紹與安裝比mysql快10倍以上 *****************redis適用場合**************** 1.取最新N個數據的操作 2.排行榜應用,取TOP N 操作 3.需要精確設定過期時間的應用 4.計數器應用 5.Uniq操作,獲取某段時 ...
  • python新手經常會犯的錯誤小結,有匿名函數lambda的理解,一個元素的元組,模塊導入,參數傳遞是可變的還是不可變的,迭代器和生成器的理解 ...
  • 當需求中是體現部分與整體層次的結構時,以及你希望忽略組合對象與單個對象的不同,統一的使用組合結構中的所有對象時,就應該考慮使用組合模式了。例如:我們單個複製一個文件和多個複製文件,對我們而言,並不在乎一個文件的複製與多個文件複製的區別,也就是我們的操作是一樣的。 下麵的代碼是建立一個公司的組織結構, ...
  • 1.先奉上整理的14圖。 2.其次奉上整理的圖之間的6種關係 ...
  • 函數調用方法 在談論JavaScript中apply、call和bind這三兄弟之前,我想先說下,函數的調用方式有哪些: 作為函數 作為方法 作為構造函數 通過它們的call()和apply()方法間接調用 前面的三種調用方法,我們都知道且不在這篇文章的討論範圍內,就不說了。 下麵我們來說說這第四種 ...
  • 1、塊級元素 一般用來搭建網站架構、佈局、承載內容……它包括以下這些標簽: address、blockquote、center、dir、div、dl、dt、dd、fieldset、form、h1~h6、hr、isindex、menu、noframes、noscript、ol、p、pre、table、 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...