CSS必須要知道的10個技巧
1.css font的簡寫規則
當我們寫字體樣式的時候,我們也許會這樣子寫
- font-size: 1em;
- line-height: 1.5em;
- font-weight: bold;
- font-style: italic;
- font-varient: small-caps;
- font-family: verdana,serif
其實,這樣寫是完全多余的,我可以只用font 來寫就OK了。
比如:
- font: 1em/1.5em bold italic small-caps verdana,serif
2.把幾個class屬性寫在一起。
通常情況寫,屬性里面的class只有一個值,但這并不是意外著你只能給它
賦一個class名,我們可以賦2個以上。比如
- <p class="text side">...</p>
不過,需要注意的是,class里面是用空格把他們分開來的,而不是“,”,這點需要注意一下。這樣運用了,那么text和side的class 就會運用到p元素中。
3.CSS的 border的默認值
border也就是邊框的值,我在做項目開發的時候,很習慣的做法是:
border:1px solid red;第一個指的是框的大小,第二個是指樣式,第三個是指顏色。不過,這里3個并非都是必須要的,必須要用的是border的樣式。其余2個有默認值。
比如,你這樣寫:
- border: solid
如果你這樣寫了,那么默認值第一個大小的默認值是:medium(相對于3px或4px左右)以及顏色指的是文本里面的顏色。
4.!important 在IE中會被忽視
因為瀏覽器之間的不兼容性,我們在寫css的時候,為了保證網站能在各個
瀏覽器之間保持兼容性,所以 我們需要使用!important這個屬性。
如果你在css使用了這個,那么它的優先級會比和它同名屬性的優先級高。
這個是給除了給IE以外的瀏覽器用的。
比如
- margin-top: 3.5em !important; margin-top: 2em
上面指的是,除IE之外的瀏覽器是3.5em,而IE是2em。這個很有用。
5.Image的alt屬性
我們在網站開發的時候,我們常常被建議使用HTML標簽來顯示文本,而不是圖像。這樣可以使得網站具有更快的加載速度以及可訪問性。舉個例子說,你開發了一個網站,你想在你網站的每一個頁面的頁面頂端放一個"購買物品"。現在加入你是一個賣家,那么你很期望你的物品能被搜索引擎找到,也許你會這么做:
- <h1><img src="widget-image.gif" alt="購買物品" /></h1>
實現了,但是這里需要注意的是,搜索引擎并不會關注alt里的關鍵字因為現在很多的賣家都是這樣子),所以白搭。所以,我們可以用css來代替
如下:
- <h1><span>購買物品</span></h1>
然后定義css:
- h1
- {
- background: url(widget-image.gif) no-repeat;
- }
- h1 span
- {
- position: absolute;
- left:-2000px
- }
這樣子就OK了,迎合了搜索引擎的口味。所以呀,搜索引擎真的傷不起呀。
6.盒模型hack問題
這個問題比較難,不過說實在話的現在用的機會也比較少。因為它涉及到IE5問題,現在誰敢說還在用IE5?拉出去斃了。
不管如何,我們還了解一下 總沒有壞處。
IE5和其他瀏覽器(IE 6+ 以及chrome等等)對邊框的計算是不一樣的呢,怎么說呢?請看下圖
圖1
圖2
圖1是我們現在正確的理解,就是說整個box的width的值是:內容的width+padding+boder 3個值的相加。
然而,在IE5中不是這樣子的哦,請看上圖,它的內容只有170px。所以這就出現了問題了。
比如 代碼說明:
- #sidebar {
- width: 200px;
- padding: 10px;
- border: 5px solid black;
- }
把寬度設定為200像素,但是側邊欄實際需要230像素的空間,除了IE5 for Windows以外. IE5 for Windows 里側邊欄總共會占用200像素,把內補丁和邊框都算在里面.圖2 顯示的是當width屬性指定為200像素時,邊框和內補丁會占用內容空間,而不是內容空間之外.
對IE5 for Windows來說,則需要把寬度指定為230像素(加上兩側內補丁和邊框的寬度),接著再以200像素覆蓋回來,讓符合標準的瀏覽器得到正確的寬度.
- #sidebar {
- padding: 10px;
- border: 5px solid black;
- width: 230px; /* for IE5/Win */
- voice-family: "\"}\"";
- voice-family: inherit;
- width: 200px; /* actual value */
- }
留意IE5 for Windows的值先出現,接著幾條讓IE5 for Windows認為聲明已經結束的規則,在此我們使用voice-family屬性,原因單純只是瀏覽器認得它的話也不會改變視覺效果,最后指定實際的寬度,覆蓋最初的width規則,第二個width規則會被IE5 for Windows忽略.
結果在IE5 for Windows以及其他所有兼容CSS2的瀏覽器上看起來應該完全相同.沒有使用這個hack的話,IE5 for Windows的使用者就會看到比設計還瘦的欄寬。
7.塊級元素的居中效果
塊級元素?你不會這個都不懂了。不懂,我就羅嗦一下,就是指div、h1、table這類元素。相對應的就是inline元素了,比如label等等。
通俗點就是,一個會占一行(當然在沒有其他屬性的支持下),另一個不會。OK。
一般來說,對div居中,我都會寫下面的寫法:
- #content
- {
- width: 700px;
- margin: 0 auto;
- }
然后,我們很高興的 就能在正常的瀏覽器到效果,請注意,我說了正常2個子,那這也說明,有不正常的情況下?什么情況呢?和上面的第六點一樣,也是IE5的問題,在IE5下面,它根本就不懂這個,你說它能解決問題嘛?。
所以,我們只好按照下面的來實現:
- body
- {
- text-align: center;
- }
- #content
- {
- text-align: left;
- width: 700px;
- margin: 0 auto;
- }
OK,就樣就能很好的兼容了。
8.垂直調整(vertical aligning)
當我們在使用table的時候,如果我們需要把一列的內容居中排列怎么做?不用問,我們理所當然的是,用下面的這行句話:
- vertical-align: middle
很多時候,這樣可以工作,可總有例外。比方說,你現在有一個導航菜單,它的高度是2em,如果你插入這個命令的話,sorry,它不會進行執行,并且會把文字放到頂端。
那怎么解決呢?很簡單。
你只需要把box模型的的高度的line height指定成一樣就可以了。如下:
- line-height: 2em
9.絕對定位和相對定位
這個應該是在css教程里比較難的部分吧,一下子也真的很難說清楚,有興趣的可以找找資料看。給個例子:
- #container
- {
- position: relative
- }
- <div id="container"><div id="navigation">...</div></div>
接著我設定里面navigation的樣式
- #navigation
- {
- position: absolute;
- left: 30px;
- top: 5px
- }
這個說明了里面的navigationo相對于外面的來說 進行定位。
10.不需要給背景圖片路徑加引號
比如:
- background:url("images/***.gif") #333;
你應該把引號去掉
- background:url(images/***.gif) #333;
如果你加了引號,反而會引起一些瀏覽器的錯誤。
原文鏈接:http://www.cnblogs.com/damonlan/archive/2012/04/09/2437184.html
【編輯推薦】