1. 程式人生 > >Html和CSS在瀏覽器中常見的相容性問題處理

Html和CSS在瀏覽器中常見的相容性問題處理

1,居中問題
 

格里的內容,IE預設為居中,而FF預設為左對齊,可以嘗試增加程式碼:

	margin: 0 auto;

2,高度問題

兩上下排列或巢狀的格,上面的格設定高度(高度),如果DIV裡的實際內容大於所設高度,在FF中會出現兩個格重疊的現象;但在IE中,下面的格會自動給上面的div讓出空間所以為避免出現層的重疊,高度一定要控制恰當,或者乾脆不寫高度,讓他自動調節,比較好的方法是身高:100%;但當這個div裡面一級的元素都浮了的時候,則需要在格塊的最後,閉和前加一個沉底的空DIV,CSS對應是:

.float_bottom {clear:both;height:0px;font-size:0px;padding:0;margin:0;border:0;line-height:0px;overflow:hidden;}

3,明確:兩者;
 

不想受到浮動浮動的,就在格中寫入明確:兩者;
 

4,IE浮動邊緣產生的雙倍距離

#box {

        float:left;
        width:100px;
        margin:0 0 0 100px; //這種情況之下IE會產生200px的距離
        display:inline; //使浮動忽略
}

5,填充問題
 

FF設定填充後,div會增加高度和寬度,但IE不會(*標準的XHTML1.0定義dtd好像一致了)高度控制恰當,或嘗試使用高度:100%;寬度減少使用padding但根據實際經驗,一般FF和IE的填充不會有太大區別,div的實際寬=寬度+填充,所以div寫全寬和填充,寬度用實際想要的寬減去填充定義。
 

6,div巢狀時y軸上padding和marign的問題
 

FF裡y軸上子div到父div的距離為父padding +子marign

IE裡y軸上子div到父div的距離為父padding和子marign裡大的一個

FF裡y軸上父padding = 0且border = 0時,子div到父div的距離為0,子marign作用到父div外面
 

7,填充,marign,高度,寬度的傻瓜式解決技巧
 

注意是技巧,不是方法:

寫好標準頭

    <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

    <html xmlns =“http://www.w3.org/1999/xhtml”>

    高儘量用填充,慎用餘量,高度儘量補上100%,父級高度有定值子級高度不用100%,子級全為浮動時底部補個空明確:兩者的格寬儘量用餘量,慎用填充物,寬度算準實際要的減去填充
 

8,列表類
 

1. ul標籤在FF中預設是有padding值的,而在IE中只有margin有值

先定義ul {margin:0; padding:0;}

2. ul和ol列表縮排問題消除ul,ol等列表的縮排時,樣式應寫成:{list-style:none; margin:0px; padding:0px;}
 

9,顯示類(顯示:塊,內聯)
 

1.顯示:塊,內聯兩個元素

    顯示:塊; //可以為內嵌元素模擬為塊元素

    顯示:內聯; //實現同一行排列的的效果

    顯示:表; //對於FF,模擬表的效果

    display:塊塊元素,元素的特點是:

    總是在新行上開始;高度,行高以及頂和底邊距都可控制;寬度預設是它的容器的100%,除非設定一個寬度

    <div>,<p>,<h1>,<form>,<ul>和<li>是塊元素的例子

    display:inline就是將元素顯示為行內元素,元素的特點是:和其他元素都在一行上;高,行高及頂和底邊距不可改變;寬度就是它的文字或圖片的寬度,不可改變。 <span>,<a>,<label>,<input>,<img>,<strong>和<em>是內聯元素的例子

2.滑鼠手指狀顯示

       全部用標準的寫法遊標:指標;
 

10,背景,圖片類
 

1. background顯示問題

       全部注意補齊width,height屬性

2.背景透明問題

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

    IE:filter:alpha(opacity = 10);

    FF:不透明度:0.6;

    FF:-moz-opacity:0.10;

    最好兩個都寫,並將透明度屬性放在下面
 

11,最小高度最小高度的實現(相容IE6,IE7,FF)
 

作用是:當容器的內容較少時,能保持一個最小的高度,以免破壞了佈局或UI設計效果而當容器內的內容增加的時候,容器能夠自動的伸展以適應內容的變化。

#mrjin {
               background:#ccc;
               min-height:100px;
               height:auto
 !important;
                height:100px;
               overflow:visible;
}

 

12,著名的Meyer Reset(重置)

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
font,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-weight: inherit;
	font-style: inherit;
	font-size: 100%;
	font-family: inherit;
	vertical-align: baseline;
}

 :focus {
	outline: 0;
}

body {
	line-height: 1;
	color: black;
	background: white;
}

ol,
ul {
	list-style: none;
}

table {
	border-collapse: separate;
	border-spacing: 0;
}

caption,
th,
td {
	text-align: left;
	font-weight: normal;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
	content: "";
}

blockquote,
q {
	quotes: "" "";
}


 

 

13,跨瀏覽器的CSS透明度
 

.transparent {

  opacity: 0.7;

  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";

  filter: alpha(opacity=70);

  -moz-opacity: 0.7;
  -khtml-opacity: 0.7;

14,文字陰影(CSS3)
 

.text { text-shadow: 1px 1px 1px #666; filter: Shadow(Color=#666666, Direction=135, Strength=5); }


 

15,盒陰影(CSS3)
 

.box { box-shadow: 5px 5px 5px #666;  -moz-box-shadow: 5px 5px 5px #666;  -webkit-box-shadow: 5px 5px 5px #666; }


 

16,Sticky Footer(讓頁尾永遠停靠在頁面底部,而不是根據絕對位置)

<div id="wrap">

  <div id="main" class="clearfix"></div>

</div>

   <div id="footer"> </div>



 CSS部分:

* {
	margin: 0;
	padding: 0;
}

html,
body,
#wrap {
	height: 100%;
}

body>#wrap {
	height: auto;
	min-height: 100%;
}

#main {
	padding-bottom: 150px;
}

#footer {
	position: relative;
	margin-top: -150px;
	height: 150px;
	clear: both;
}

.clearfix:after {
	content: ".";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
}

.clearfix {
	display: inline-block;
}

* html .clearfix {
	height: 1%;
}

.clearfix {
	display: block;
}

17,IFRAME元素內嵌頁面如何去掉繼承的HTML及體背景色/背景圖片 

IFRAME元素的功能是在一個文件裡內嵌一個文件,建立一個浮動的幀。內嵌文件時一個完整的頁面,有HTML,BODY等屬性。這樣遇到了一個問題,如果樣式表中對BODY定義過背景色/背景圖片,那麼內嵌文件將全部繼承過來所以如何去掉背景色和背景圖片。:

【1】去掉背景色:過濾器:色度(顏色=白色);

舉例:<iframe width =“100%”height =“400”marginwidth =“0”marginheight =“0”scrolling =“no”frameborder =“0”leftmargin =“0”topmargin =“0”style =“filter:色度(顏色=白色);” > </ IFRAME>

【2】去掉背景圖片:

舉例:<iframe width =“100%”height =“400”marginwidth =“0”marginheight =“0”scrolling =“no”frameborder =“0”leftmargin =“0”topmargin =“0”style =“filter:色度(顏色=白色);” allowTransparency =“true”> </ iframe>

注意:內嵌頁面同時也要增加BODY屬性:

<body bgcolor =“transparent”style ='background:transparent'>
 

18,為什麼網路標準中無法設定IE瀏覽器滾動條顏色了?

body {
	scrollbar-face-color: #f6f6f6;
	scrollbar-highlight-color: #fff;
	scrollbar-shadow-color: #eeeeee;
	scrollbar-3dlight-color: #eeeeee;
	scrollbar-arrow-color: #000;
	scrollbar-track-color: #fff;
	scrollbar-darkshadow-color: #fff;
}

 

原來樣式設定:

解決辦法是將車身換成HTML。
 

19,為什麼中火狐瀏覽器下文字無法撐開容器的高度?
 標準瀏覽器中固定高度值的容器是不會象IE6裡那樣被撐開的,那我又想固定高度,又想能被撐開需要怎樣設定呢辦法就是去掉高度設定最小高度:200畫素; 這裡為了照顧不認識min-height的IE6可以這樣定義:

div { height:auto!important; height:200px; min-height:200px; }


20,如何定義1px的左右高度的容器?
 

 IE6下這個問題是因為預設的行高造成的,解決的方法也有很多,例如:overflow:hidden | zoom:0.08 | 行高:1px的

21,怎麼樣才能讓層顯示在FLASH之上呢?
 

解決的辦法是給FLASH設定透明:

<a href=" http://www.chinaz.com/">:</ a >

<pre lang =“html”line =“1”>

<param name =“wmode”value =“transparent”/>
 

22,怎樣使一個DIV層居中於瀏覽器中?
 

首先,需要這兩個層都是兄弟關係,其次,這兩個層都需要絕對定位舉個例子:

div {
	position: absolute;
	top: 50%;
	left: 50%;
	margin: -100px 0 0 -100px;
	width: 200px;
	height: 200px;
	border: 1px solid red;
}

23,怎樣使DIV背景透明?
 

body {
	font: normal 12px/30px Verdana;
}

#test {
	position: relative;
	width: 400px;
	height: 50px;
}

#inner {
	z-index: 2;
	position: absolute;
	top: 10px;
	left: 10px;
	width: 380px;
	height: 30px;
	color: #003;
	font-weight: bold;
	text-align: center;
}

#transbox {
	z-index: 1;
	position: absolute;
	top: 0px;
	left: 0px;
	width: 400px;
	height: 50px;
	background: #eef;
	border: 1px solid #a00;
	filter: alpha(opacity=40);
	-moz-opacity: 0.4;
	opacity: 0.4;
}

<P>這裡很多的文字,這裡很多的文字,這裡很多的文字,這裡很多的文字,</ P>

 

24,怎樣去掉選中時的虛線框?
 

利用onfocus =“this.blur();”例如:<a href="#" onfocus="this.blur();">測試</a>
 

25,IE6下PNG背景顯示問題?
 

針對IE6下PNG背景顯示問題,CSS中可以這樣解決:

_background:none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop, src=’http: //www.0351zhuangxiu.com/uploads/images/bj.jpg’);

26,文字與表單對齊方法?
 

設定表單元素第一字型為Tahoma(Verdana系列也可),並設定vertical-align:middle。建設大家把這個約定寫入CSS RESET中,能減小很多麻煩:

body,button,input,select,textarea{font:12px/1.5 tahoma,arial,sans-serif; vertical-align:middle}

27,OPTGROUP標籤的用法?
 

OPTGROUP標籤,鮮為人知,它對提升選擇表單使用者體驗很有幫助就是可以在有很多選項時,對這些選項分組:例子:

<select id =“selectId”>

<optgroup label =“GROUP ONE”>

<option value =“1”>一個選擇</ option>

<option value =“2”>兩個選擇</ option>

</ OPTGROUP>

<optgroup label =“GROUP TWO”>

<option value =“3”>三選</ option>

<option value =“4”>四選</ option>

</ OPTGROUP>

</選擇>
 

28,文字與圖片垂直居中對齊方法?
 

為圖片與文字的共同父元素所有的後代元素定義* {垂直對齊:中間};例如:

<p>我要的堅強<img src =“i / image.gif”/> </ p>

只需定義P * {垂直對齊:中間}即可使文字與圖片同行垂直居中。
 

29,文章標題列表中日期居右顯示的兩種方法?
 

方法甲相對方法乙省資源,但比方法乙要多寫兩句程式碼,使用時請視情況而定:

方法一:

    <P>這是文章標題<跨度> 2010-10-10 </跨度> </ p>

然後定義p和跨度的樣式:

p {position:relative}

p span {position:absolute; 右:0}

方法B:

<P> <跨度> 2010-10-10 </跨度>這是文章標題</ P>

然後定義跨度右浮動:

p span {float:right}
 

30,IE6下最大/最小寬度/高度實現?
 

ie6下max / min-width / height實現,_ width:expression_r(this.width> 600?“600px”:true);, height同理。
 

31,空白外邊距互相疊加的問題?
 

一般通過新增透明邊框或者1px的的內邊距避免;

其一,為外圍元素定義透明邊框。具體到本例,即在樣式div中加入border:1px solid transparent;

其二,為外圍元素定義內邊距填充..具體到本例,即在樣式的div中加入填充:1px的;

例如:<!doctype html>

<HTML>

<HEAD>

<meta charset =“utf-8”>

<title>空白邊距疊加[email protected] </ title >

<風格>

體{寬度:300畫素; FONT-FAMILY: '微軟雅黑'; 字型大小:1em的; TEXT-INDENT:10px的; 行高:1.25}

DIV {背景:#a40000;餘量:10px的}

div p {background:#eee; margin:15px}

</樣式>

</ HEAD>

<BODY>

<div> <p>空白邊距疊加[email protected] </ p> </ div >

</ BODY>

</ HTML>
 

32,網頁設計中的預設字型
 

字型:12px / 1.5 Tahoma,Helvetica,Arial,sans-serif;

說明:line-height採用1.5,也就是18px。這是淘寶視覺規範中定義的行高,對於12px的字型,這個行高看起來很舒服.font家族預設採用宋體。宋體是英文的Windows作業系統的預設字型,這個字型比較均衡,顯示中英文混排很不錯,是經久耐看的一款字型。
 

33,瀏覽器相容 - 常用的css hack

/*第一種*/

.title {
	height: 200px;
	*height: 200px;
	_height: 200px;
}


/*第二種*/

.title {
	height: 200px;
	*height: 200px !important;
	*height: 200px;
}


/*第三種*/

.title {
	height: 200px;
}

*html.title {
	height: 200px;
}

*+html.title {
	height: 200px;
}


 

 轉載於文章(Chick here!