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