CSS編碼技巧

盡量減少代碼重復(fù)

button{
    padding: 6px 16px;
    border: 1px solid #446d88;
    background: #58a linear-gradient(#77a0bb, #58a);
    border-radius: 4px;
    box-shadow: 0 1px 5px gray;
    color:white;
    text-shadow: 0 -1px 1px #335166;
    font-size: 20px;
    line-height: 30px;
}
一個(gè)按鈕

這段代碼在可維護(hù)性方面存在一些問(wèn)題:

  1. 字號(hào)與行號(hào)寫(xiě)成了絕對(duì)值,若決定改變字號(hào)同時(shí)就要調(diào)整行高;且行高沒(méi)有反映出與字號(hào)的關(guān)系>>>因此,當(dāng)某些值互相依賴(lài)時(shí),應(yīng)該把它們的相互關(guān)系用代碼表達(dá)出來(lái)
    以上,行高是字號(hào)的1.5倍,可改成以下:
font-size: 20px;
line-height: 1.5;

跨出了這步,字號(hào)也不必設(shè)置為絕對(duì)值,可改用百分比或em單位

  1. 其他效果沒(méi)有依賴(lài)字號(hào)縮放,應(yīng)改為em單位(希望保持原樣的效果為絕對(duì)值)。同時(shí),此處投影效果以及漸變效果都只適用于單一的條件下,要想使它適用于多種情況,可用HSLA,RGBA等顏色控制。

現(xiàn)在只要覆蓋background-color屬性就可以得到不同顏色版本的按鈕了:

不同顏色版本的按鈕
button{
    padding: .3em .8em;
    border: 1px solid #446d88;
    background: #58a linear-gradient(hsla(0,0%,100%,.2),transparent);
    border-radius: .2em;
    box-shadow: 0 .05em .25em rgba(0,0,0,.5);
    color:white;
    text-shadow: 0 -.05em .05em rgba(0,0,0,.5);
    font-size: 125%; /*假設(shè)父級(jí)的字號(hào)是16px=1em*/
    line-height: 1.5;
}
button.ok{
    background-color: #6b0;
}
button.cancel{
    background-color: #c00;
}

有時(shí)候,代碼易維護(hù)和代碼量少不可兼得;
currentColor本身是很多CSS顏色屬性的初始值;
inherit綁定父元素的計(jì)算值(對(duì)偽類(lèi)元素來(lái)說(shuō),則會(huì)取生成該偽元素的宿主元素)

相信你的眼睛,而不是數(shù)字

視覺(jué)上的錯(cuò)覺(jué)在任何形式做的視覺(jué)設(shè)計(jì)中都普變存在,需要我們有針對(duì)性地進(jìn)行調(diào)整

關(guān)于響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)

避免不必要的媒體查詢:

  1. 使用百分比長(zhǎng)度來(lái)取代固定長(zhǎng)度
  2. 當(dāng)需要在較大分辨率下得到固定寬度時(shí),使用max-width而不是width,因?yàn)樗梢赃m應(yīng)較小的分辨率,而無(wú)需使用媒體查詢
  3. 不要忘記為替換元素(比如img、object、video、iframe等)設(shè)置一個(gè)max-width,值為100%
  4. 假如背景圖片需要完整地鋪滿一個(gè)容器,不管容器的尺寸如何變化,background-sizw:cover這個(gè)屬性都可以做到。但是我們需要時(shí)刻牢記——帶寬不是無(wú)限的,在移動(dòng)網(wǎng)頁(yè)中通過(guò)css把一張大圖縮小是不明智的
  5. 當(dāng)圖片(或其他元素)以列進(jìn)行布局時(shí),讓視口的寬度來(lái)決定列的數(shù)量。彈性盒布局(Flexbox)或者display:inline-block加上常規(guī)的文本折行行為都可以實(shí)現(xiàn)這一點(diǎn)
  6. 在使用多列文本時(shí),指定column-width(列寬)而不是column-count(列數(shù)),這樣它就可以在較小的屏幕上自動(dòng)顯示為單列布局

盡最大努力實(shí)現(xiàn)彈性可伸縮的布局,并在媒體查詢的各個(gè)斷點(diǎn)區(qū)間內(nèi)指定相應(yīng)的尺寸

合理使用簡(jiǎn)寫(xiě)

合理使用簡(jiǎn)寫(xiě)是一種良好的防衛(wèi)性編碼方式,可以抵御未來(lái)的風(fēng)險(xiǎn);如果要明確地去覆蓋某個(gè)具體的展開(kāi)式屬性并保留其他相關(guān)樣式,那就需要用展開(kāi)式屬性。

預(yù)處理器的使用

使用得當(dāng),可以在大型項(xiàng)目中讓代碼更靈活,但可能導(dǎo)致CSS文件體積和復(fù)雜度的失控、調(diào)試難度增加、存在編譯延時(shí)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,170評(píng)論 1 92
  • 盡量減少代碼重復(fù) 在軟件開(kāi)發(fā)中,保持代碼的DRY 和可維護(hù)性是最大的挑戰(zhàn)之一,而這句話對(duì)CSS 也是適用的。在實(shí)踐...
    圖靈教育閱讀 1,284評(píng)論 0 14
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類(lèi)選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,127評(píng)論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類(lèi)選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,443評(píng)論 0 11
  • 文字:龍艷華 唐開(kāi)元二年(714),七祖行思駐錫青原山,將六祖惠能“頓悟”之法扎根廬陵。禪宗青原法系也使禪宗南宗宗...
    江西安福伊伊秋水閱讀 703評(píng)論 0 1

友情鏈接更多精彩內(nèi)容