1. 程式人生 > >前端頁面佈局常見的相容性問題和解決方法

前端頁面佈局常見的相容性問題和解決方法

前端頁面相容問題主要表現在我們所做的頁面在不同瀏覽器顯示會有所不同,目前主要的相容性問題比較多的是IE6和IE7,另外針對html5和css3新標籤,比如css3動畫,媒體查詢,畫布,視訊等暫時不做討論,下面就針對常見的相容性問題做下總結。

一 、不同瀏覽器margin和padding不同,這個一般都會遇到

解決方法:*{margin:0;padding:0} 統一格式

二 、ie6中,父級元素浮動以後,內部元素內容撐不開寬度

解決方法:元素內部的塊級元素也設定浮動

程式碼如下:

html:

<div class="box">
<div class="left">
<h3>左側</h3>
</div>
<div class="right">
<h3>右側</h3>
</div>
</div>

css:

.box {
width:400px;
}
.left {
background: red;
float:left;
}
.right{
background: yellow;
float:right;
}
h3{
margin:0;
float:left;/*此處設定浮動,如果不設定,內容撐不來寬度*/

}

三、標籤巢狀不規範,如p和h1-h5裡面巢狀div

解決方法:請正確的巢狀元素標籤

程式碼如下:

html:

 <h2>

/* 內部巢狀不合理*/
<div>

</div>
</h2>

css:

h2 {
width:100px;
height:100px;
background: red;
}

四、ie6小於19px,會當成19px處理,也就元素寬高小於19px的bug

解決方法:overflow:hidden;

程式碼如下:

html:

<div class="box"></div>

css:

.box {
height:1px;
background: red;
overflow: hidden;/*此處如果沒有這個,會預設19px*/
}

五、在IE6下不支援1px的dotted邊框樣式

解決方法:可以採取切背景平鋪的方法

六、在IE6和IE7下父級有邊框的時候,子元素的margin會失效

解決方法:觸發haslayout,父級元素設定zoom:1;

程式碼如下:

html:

<div class="box">
<div class="div"></div>
</div>

css:

.box {
background: red;
border: 1px solid black;
zoom:1;/*此處不設定,margin無效*/
}
.div {
width:200px;
height:200px;
background: blue;
margin:100px;
}

七、浮動後的元素在ie6下出現橫向的雙邊距bug

解決方法給元素新增display:inline;

程式碼如下:

html:

<div class="box"></div>;

css:

.box {
width:100px;
height: 100px;
background: red;
float:left;
margin:100px;
display: inline;/*此處不新增會出現雙邊距bug*/
}

八、多列均分(border相容問題和計算數值問題)

解決方法:在計算數值的時候一定要準確,不然的話相容ie的時候佈局非常麻煩,另外border這個也會出現一定問題,ie有些低版本的瀏覽器的內容部分包含border,其他瀏覽器不包含

程式碼如下:

html:

<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>

css:

*{margin:0 ;padding:0 ;}

.box {
width:480px ;

/*1、注意這個是沒有邊框的情況下數值是width+margin*8(八個左右邊距),如果不準確的話 ,ie瀏覽器會出現很多問題

        因為當一行子級元素寬度之和和父級的寬度相差超過3px,或者子級元素不滿行的情況的時候,最後一行的子級元素的                   margin-bottom會失效

   2、有邊框的情況下數值在常規瀏覽器下是width+margin*8(八個左右邊距)+border(八個邊框)

       ie7中width+margin*8(八個左右邊距)+border(八個邊框)另外底部需要用hack 設定padding-bottom的值

       ie5和ie6中width+margin*8(八個左右邊距)

                                                                    */

background: black;
overflow: hidden;/*清除浮動*/
}
.box div {
width: 100px;
height: 100px;
background: red;
margin: 10px;
/*border:5px solid blue; 此處我給註釋啦,如果需要邊框自己測試下*/ 
float:left;
display: inline;/*此處處理雙邊距bug問題*/
}

九、在IE6,7下,li本身沒有浮動,li裡面的元素有浮動,li下出現間隙的問題

解決方法:常規下給li加vertical-align:top 如果最下間隙和最小高度bug共存的時候,利用hack給li新增浮動;

十、在IE6下,當浮動元素和絕對定位元素是兄弟關係的時候,絕對定位會失效

解決方法:不讓浮動元素和絕對定位元素是兄弟關係,用div或者其他標籤把子標籤包起來

十一:在IE6.7下,子級元素有相對定位,父級overflow包不住子級元素

解決方法:給父級也加相對定位

十二:在IE6下,如果絕對定位的父級寬高是奇數的時候,子級元素的right和bottom值會有1px的偏差

解決方法:儘量將父級寬高設定非奇數

十三:ie相關瀏覽器的透明度相容問題

解決方法:給元素設定filter:alpha(opacity=50);

程式碼如下:

html:

<div class="box"></div>

css:

body {
height: 2000px;
background: red;
}
.box {
width:200px;
height: 200px;
background: yellow;
position: fixed;
top:30px;
left:100px;
opacity: 0.5;
filter:alpha(opacity=50);/*此處解決透明度問題*/

}

十四:在IE6.7下 輸入型的表單標籤控制元件上下會有1px的間隙。
解決方法:給input加浮動

程式碼如下:

html:

<div class="box">
<input type="text">
</div>

css:

.box {
width:200px;
height:32px;
border:1px solid #000;
}
input {
width:100px;
height:30px;
border:1px solid blue;
margin:0;
padding:0;
float:left;
}

十五:行內屬性標籤,設定display:block後採用float佈局,又有橫行的margin的情況,ie6間距bug,這個和上面那個有點類似

解決方法:在display:block;後面加入display:inline;display:table;

十六:圖片佈局的問題,在佈局的時候有的瀏覽器會出現間距

解決方法:使用 float浮動

十七、使用ie下判斷ie的版本語句相容

解決方法:<!--[if ie]>
我是IE
<![endif]-->


<!--[if ie 6]>
我是IE6
<![endif]-->


<!--[if ie 7]>
我是IE7
<![endif]-->


<!--[if ie 8]>
我是IE8
<![endif]-->

十八、hack方法相容

解決方法:這個hack語句比較多,就簡單的列舉幾個

css hack:
\9 ie10之前的ie瀏覽器解析的程式碼
+或者* 表示ie7包括7之前的ie瀏覽器
_表示 ie6包括6之前的ie瀏覽器

總結:以上列舉的一些常見的相容方法,相容方面主要是IE瀏覽器的相容,據不完全統計現在很多企業和單位前端頁面要求在IE8以上的居多,當然也有全部都要相容的,比如政府和銀行金融等,隨著網際網路大環境的影響和新標籤新屬性的不斷產生,相信相容問題會朝著一個好的方向發展。

相關推薦

前端頁面佈局常見相容性問題解決方法

前端頁面相容問題主要表現在我們所做的頁面在不同瀏覽器顯示會有所不同,目前主要的相容性問題比較多的是IE6和IE7,另外針對html5和css3新標籤,比如css3動畫,媒體查詢,畫布,視訊等暫時不做討論,下面就針對常見的相容性問題做下總結。 一 、不同瀏覽器margin和p

IIS前端頁面不顯示詳細錯誤解決方法

詳細 命令 服務器 lex post layer item read 信息服務 要想解決這個問題,有三種方法可以考慮: 1.Internet信息服務(IIS)管理器 2.Web.config文件 3. 命令行 在IIS的“錯誤頁”右邊的“編輯功能設置”選擇“

ABAP--關於Unicode的常見錯誤解決方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Ftp上傳常見錯誤解決方法

Ftp 是管理維護網站資料 的重要手段,經常有一些客戶提出Ftp上傳的疑問.現在總結常見錯誤和解決方案如下(以FlashFxp為例) 1. Ftp伺服器連線失敗,分為以下四種情況。 a).連線被拒, 錯誤資訊如下: [右] 正在連線到 www.yourdomain.com -> DNS=www.you

webDriver定位不到元素,常見原因解決方法

webDriver常用來做ui自動化,但對於一些頁面上的元素,通過WebDriver封裝的findElement方法獲取不到 一、可能原因:     1、元素定位時使用xpath、id、name等方法,引數錯誤     2、定位元素時,頁面載入未完成,或者依賴頁面js載入完

Extjs Column佈局常見問題及解決方法

第一次用Extjs的column佈局時遇見了很多問題,記錄下來,供大家參考。column佈局時常會碰見label不能顯示或者控制元件顯示錯位等問題,導致這些問題的常見原因如下: 1.formPanel上的控制元件顯示不出來,控制元件的寬度太大,formpanel的寬度相對太小

Ftp上傳常見錯誤解決方法

Ftp連線常見問題Ftp 是管理維護網站資料 的重要手段,經常有一些客戶提出Ftp上傳的疑問.現在總結常見錯誤和解決方案如下(以FlashFxp為例)1. Ftp伺服器連線失敗,分為以下四種情況。a).

stsuts常見錯誤解決方法

   剛剛接觸struts,感覺好多的東西都不太明白,感覺最重要的就是看不懂錯誤以及解決方法。這兩天在網上找了些資料,copy了過來,為以後方便以後的繼續學習打個基礎。    PS:以下所說的struts-config.

Python 爬蟲常見的坑解決方法

gpo 爬蟲 nic 詳細 true wow user html encoding 1.請求時出現HTTP Error 403: Forbidden headers = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; WOW64;

部署wordpressphpMyAdmin常見問題及解決方法

部署wordpress和phpMyAdmin常見問題及解決方法 (一) wordpress常見問題:      建立資料庫連線時錯誤      解決:      1. MySQL

HTML三大選擇器的使用命名方式,優先順序,以及選擇器中常見錯誤及解決方法

HTML中的三大選擇器1.標籤選擇器:使用標籤的名稱作為選擇器,選中標籤設定樣式, 特點:可以選中多個標籤,給一堆標籤同時設定樣式書寫方式 標籤名{ 樣式 }2.類選擇器:在標籤中利用class屬性設

常見HBase故障分析解決方法

1. java.net.SocketException: Too many open files 問題原因: 問題現象:所有節點region server程序掛掉,hbase不可訪問,檢視日誌有如下資訊 tail hbase-hbase-regionserver-ip-10

FindBugs常見錯誤描述解決方法

SHOULD BE A STATIC INNER CLASS 官方介紹: This class is an inner class, but does not use its embedded reference to the object which created i

傳送郵件常見的錯誤解決方法

傳送郵件是生活工作中最常見不過的事情了,但是在這個過程中,很多人都碰到過傳送錯誤,本文給列舉了這些常見的錯誤和解決方法,希望對大家有所幫助。 錯誤1 550 Mail content denied 這種是內容的問題,使用者加伺服器IP白名單就可以了。 錯誤2

NFS服務常見故障排查解決方法

NFS,全名叫Network File System,中文叫網路檔案系統,是Linux、UNIX系統的分散式檔案系統的一個組成部分,可實現在不同網路上共享遠端檔案系統。NFS由Sun公司開發,目前已經成為檔案服務的一種標準之一(RFC1904,RFC1813)。其最大的功

前端常見跨域解決方法

什麼是跨域? 跨域是指一個域下的文件或指令碼試圖去請求另一個域下的資源,這裡跨域是廣義的。 廣義的跨域: 資源跳轉: A連結、重定向、表單提交 資源嵌入: <link>、<script>、<img>、<fram

android學習——android 常見的錯誤 解決方法

1. Application does not specify an API level requirement! 解決方法:AndroidManifest.xml中 加入:<uses-sdk android:minSdkVersion="3"></use

ActiveMQ常見的問題解決方法

1.先講嚴重的:服務掛掉。 這得從ActiveMQ的儲存機制說起。在通常的情況下,非持久化訊息是儲存在記憶體中的,持久化訊息是儲存在檔案中的,它們的最大限制在配置檔案的節點中配置。但是,在非持久化訊息堆積到一定程度,記憶體告急的時候,ActiveMQ會

DIV CSS在不同IE版本FF以及Chrome中的相容性差異解決方法(推薦)

一些內容比之前 為了方便自己查詢,省得每次遇到問題都要滿世界搜,轉篇實用的:DIV+CSS 與不同 IE 版本等的相容性。 一、!important (功能有限) 隨著 IE7 對 !important 的支援, !important 方法現在只針對 IE6 的相容。(注意寫法,記得該宣告位置需要提前。)例

html-javascript前端頁面刷新重載的方法匯總

res rip ack -- 方法總結 load 試題 sig class html-javascript前端頁面刷新重載的方法匯總 2014年8月31日 12227次瀏覽 記得我在興安得力實習要轉正的時候,我領導象征性的給我出了一套測試題目,裏面就有js閉包和頁面刷新等