破洛洛收集的各種CSS bug與技巧 持續更新 來源:破洛洛
1、容器不擴展問題
這個是經常在我切圖的時候遇到的問題,如:
提示:你可以先修改部分代碼再運行。
解決辦法:在divGroup裡面加上overflow:hidden;zoom:1;
ps:很多人都是在裡面加個清除浮動空標簽來解決,其實這個是錯誤辦法。太增加代碼量了
2、margin雙邊距問題
提示:你可以先修改部分代碼再運行。
設置為float的div在ie下設置的margin會加倍。這是一個ie6都存在的bug。
解決辦法是在這個div裡面加上display:inline;
ps:我一般很少用margin,一般情況用padding來控制邊距,以免出現另外的bug
3、關於容器的包涵關系
很多時候,尤其是容器內有平行布局,例如兩、三個float的div時,寬度很容易出現問題。在IE中,外層的寬度會被內層更寬的div擠破。一定要用Photoshop或者Firework量取像素級的精度。
4、關於高度的問題
如果是動態地添加內容,高度最好不要定義。浏覽器可以自動伸縮,然而如果是靜態的內容,高度最好定好。(似乎有時候不會自動往下撐開,不知道具體怎麼回事
5、最狠的手段 – !important;
如果實在沒有辦法解決一些細節問題,可以用這個方法.FF對於”!important”會自動優先解析,然而IE則會忽略.如下
值得注意的是,一定要將xxxx !important 這句放置在另一句之上。
6、IE6躲貓貓bug
提示:你可以先修改部分代碼再運行。
下面方法的任意一種即可消滅bug:
1.明確的指定最外面div容器(#holder)的寬度(相對寬度和絕對寬帶都可以)。
2.去掉最外面div容器(#holder)的背景顏色(或者背景圖片)
3.縮小浮動div容器(#floater)的高度到一定程度
4.不浮動div容器(#floater)
5.不使用
<div class="clear"><div>
技術
7、ie6下空標簽高度問題
一個空div如果高度設置為0到19px,IE6下高度默認始終19PX。
例如:
運行:
提示:你可以先修改部分代碼再運行。
如果不讓它默認為19PX。而是0PX的話
解決方法有3種:
1.css裡面加上overflow:hidden;
2.div裡面加上注釋,
<div class="c"><!– –></div>
3.css裡面加上line-height:0;然後div裡面加上#nbsp;,
<div class="c"> </div>(#換成&)注意:ie6下給div設置的高度小於ie6的line-height值時,ie6會將這個div的高度定為line-height的值.
8、去掉圖片熱點鏈接或超鏈接的虛線框
9、按鈕按下時立體感效果:
a:hover { position:relative; top:1px; left:1px}/* 切記一定要是相對定位 */10、整站變灰代碼(加到樣式表中):
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}11、中英文下劃線對齊方式(利用圖片的align=”absmiddle”):
<img src="img.gif" align="absmiddle">中英文並排:<a href="/">中文 gollum</a>12、設為首頁代碼:
<span onclick="var strHref=window.location.href;this.style.behavior=’url(#default#homepage)’;this.setHomePage(’http://www.poluoluo.com 破洛洛’);" style="cursor:pointer">設為首頁</span>13、加入收藏代碼:
14、通過定義em實現小三角效果:
15、IE6下當層高低於10px時,會出現高度在定義值上加10px的效果,最簡單的方法就是在該層樣式中加入:
font-size:0;16、空div在IE(FF中沒有)是有默認高度的,可以用定義:
div { width:100%; background:#9c0; ling-height:0}17、描邊文字效果:
18、input鼠標經過時改變顏色:
input {star : expression(onmouseover=function(){this.style.backgroundColor=”#FF0000″},onmouseout=function(){this.style.backgroundColor=”#FFFFFF”}) }19、圖片在容器裡垂直居中顯示:
img {margin-top: expression(( 150 – this.height ) / 2);} //150是容器高20、超鏈接訪問過後hover樣式就不出現的問題:
提示:你可以先修改部分代碼再運行。
ps:被點擊訪問過的超鏈接樣式不在具有hover和active了,很多人應該都遇到過這個問題,解決方法是改變CSS屬性的排列順序: L-V-H-A
21、FF下如何使連續長字段自動換行:
提示:你可以先修改部分代碼再運行。
ps:眾所周知IE中直接使用word-wrap:break-word 就可以了, 這裡FF中我們使用JS插入的方法來解決
22、IE6下為什麼圖片下方有空隙產生:
提示:你可以先修改部分代碼再運行。
ps:解決這個BUG的方法也有很多,可以是改變html的排版,或者設置img 為display:block
或者設置vertical-align屬性為vertical-align:top | bottom |middle |text-bottom
都可以解決.
23、 IE6下這兩個層中間怎麼有間隙:
提示:你可以先修改部分代碼再運行。
ps:這個IE的3PX BUG也是經常出現的,解決的辦法是給.right也同樣浮動 float:left 或者相對IE6定義.left margin-right:-3px;
24、list-style-image無法准確定位的問題:
提示:你可以先修改部分代碼再運行。
ps:這個list-style-image的定位問題也是經常有人問的,解決的辦法一般是用li的背景模擬,這裡采用相對定位的方法也可以解決
25、如何對齊文本與文本輸入筐:
提示:你可以先修改部分代碼再運行。
ps:遇到此種問題,設置文本框的vertical-align:middle 就可以了
26、為什麼web標准中IE無法設置滾動條顏色了:
提示:你可以先修改部分代碼再運行。
ps:解決辦法是將body換成html
27、怎麼樣才能讓層顯示在FLASH之上呢:
提示:你可以先修改部分代碼再運行。
ps:解決的辦法是給FLASH設置透明
<param name="wmode" value="transparent" />28、怎樣使一個層垂直居中於浏覽器中:
提示:你可以先修改部分代碼再運行。
ps:這裡我們使用百分比絕對定位,與外補丁負值的方法,負值的大小為其自身寬度高度除以二
29、直通到屏幕底部的背景色:
在垂直方向是進行控制是CSS所不能的。如果你想讓導航欄和內容欄一樣直通到頁面底部,用表格是很方便的,但如果只用這樣的CSS:
較短的導航條是不會直通到底部的,半路內容結束時它就結束了。該怎麼辦呢?
不幸的是,只能采用欺騙的手段了,給這較短的一欄加上個背景圖,寬度和欄寬一樣,並讓它的顏色和設定的背景色一樣。
body { background: url(blue-image.gif) 0 0 repeat-y }此時不能用em做單位,因為那樣的話,一旦讀者改變了字體大小,這個花招就會露餡,只能使用px。
30、CSS透明屬性:
.transparent_class {31、CSS字體屬性簡寫規則
一般用CSS設定字體屬性是這樣做的:
但也可以把它們全部寫到一行上去:
font: bold italic small-caps 1em/1.5em verdana,sans-serif;真不錯!只有一點要提醒的:這種簡寫方法只有在同時指定font-size和font-family屬性時才起作用。而且,如果你沒有設定font-weight, font-style, 以及 font-varient ,他們會使用缺省值,這點要記上。
32、修正IE6重復文字bug:
提示:你可以先修改部分代碼再運行。
解決方法:
# 去掉注釋
# 確保所有的元素使用”display:inline;”
# 在最後一個元素上使用一個”margin-right:-3px;”
# 為浮動元素的最後一個條目使用一個條件注釋,比如:
#在容器的最後元素使用一個空的div(它也有必要設置寬度為90%或類似寬度。)
原文:www.positioniseverything.net
33、 IE6下:hover失效問題解決方案 :
a:hover{zoom:1} /*增加zoom, display, padding等等屬性也可*/34、IE6,7失效的margin-left/right bug:
提示:你可以先修改部分代碼再運行。
解決辦法:在wrap加zoom:1;
轉:http://www.cssass.com/blog/index.php/2009/350.html/comment-page-1#comment-128
35、單行或多行始終文字垂直居中:
提示:你可以先修改部分代碼再運行。
36、進入網頁加入漸顯切換效果:
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1)" />37、IE6下英文字體跟中文字體不能對齊:
解決辦法:中英文都統一使用“宋體”。