CSS技巧:使用REM減少代碼冗余之button

在寫CSS的過程中,盡量減少代碼的重復,對于代碼閱讀和維護的好處是顯而易見的。在修改代碼時,需要改動的變量越少,意味著可能出錯的地方就越少,花費時間也越少。
在開始寫一個頁面的CSS時,嘗試去思考如何從更簡約的角度去定義一些root型的CSS規(guī)范,減少代碼冗余,提升質量。

比例優(yōu)化

以下是一個案例,為按鈕添加一些CSS效果:

.button1 {
  padding: 0.375rem 1rem;
  border: 1px solid #446d88;
  background: #58a linear-gradient(#77a0bb, #58a);
  border-radius: 0.25rem;
  box-shadow: 0 1px 5px gray;
  color: white;
  text-shadow: 0 -1px 1px #335166;
  font-size: 1.25rem;
  line-height: 1.5;
}

得到的按鈕效果如下:

圖1-1

在這段CSS中,如果我們需要修改按鈕的字體大小的話,我們同時還需要修改按鈕的行高,同時因為字體很大的話,我們的圓角效果也會變得不協(xié)調,因為我們的效果都是為小按鈕設計的。
由于我們在移動端經(jīng)常需要使用REM來進行等比例大小縮放設計,所以為類似按鈕這些元素做好基本的CSS設計就顯得至關重要。
下面是優(yōu)化后的button1

//為HTML設置默認字體大小為原來2倍
html{font-size:32px;}       
        
.button2 {
  //將padding的尺寸修改為相對于htm頁面的rem
  padding: 0.375rem 1rem;
  border: 1px solid rgba(0, 0, 0, .1);
  background: #000 linear-gradient(hsla(0, 0%, 100%, .2), transparent);
  //border的圓角也會根據(jù)按鈕的大小同比調整
  border-radius: 0.25rem;
  box-shadow: 0 0.05rem .25rem rgba(0, 0, 0, .5);
  color: white;
  text-shadow: 0 -0.05rem .05rem rgba(0, 0, 0, .5);
  //字體相對于頁面大小為1.25倍
  font-size: 1.25rem;
  //行高是字體的1.5倍
  line-height: 1.5;
}

得到的結果則是一個同比放大2倍的button1。

圖1-2

以后只需要修改rem的root font-size即可等比例自動調整按鈕的大小。當然有些時候我們并不希望全部頁面都被一個定義尺寸牽制,也可以適當?shù)氖褂胑m來替換。

顏色優(yōu)化

除了比例以外,不同功能用途的按鈕往往顏色也會不同,如何快速設置不同用途按鈕的漸變色效果,我們可以做以下設置。

.button2 {
  padding: 0.375rem 1rem;
  border: 1px solid rgba(0, 0, 0, .1);
  //為按鈕的主色調增加一層白色或黑色的透明遮罩
  background: #000 linear-gradient(hsla(0, 0%, 100%, .2), transparent);
  border-radius: 0.25rem;
  box-shadow: 0 0.05rem .25rem rgba(0,0,0,.5);
  color: white;
  text-shadow: 0 -0.05rem .05rem rgba(0, 0, 0, .5);
  font-size: 1.25rem;
  line-height: 1.5;
}

這樣我們只要再修改background-color屬性,就可以生成不同顏色屬性的按鈕了。

#cancel {
  background-color: #c00;
}
#ok {
  background-color: #6b0;
}

得到效果如下圖:

圖1-3

總結

通過這種方式我們就可以快速定制大部分的需求按鈕。簡潔而易維護,不重復的代碼不僅是審美上的需求,更是實際工作中協(xié)同工作的重要需求,每次完成一個頁面時,我會重新瀏覽一下之前寫過的CSS和JS,即便現(xiàn)在的水平無法優(yōu)化到最簡潔,也應該在注釋或者筆記里標注下冗余的部分,在以后的學習中去跨越這些障礙。

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

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,199評論 1 92
  • 盡量減少代碼重復 在軟件開發(fā)中,保持代碼的DRY 和可維護性是最大的挑戰(zhàn)之一,而這句話對CSS 也是適用的。在實踐...
    圖靈教育閱讀 1,289評論 0 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 你是否也曾因固執(zhí)的堅持而失去了一些重要的人? 周日的凌晨三點,北京東北郊稀稀拉拉飄起了雪花,查完哨后一個人走在營區(qū)...
    古月氵皮閱讀 296評論 0 1
  • 不知曾幾何時,產(chǎn)品經(jīng)理這個職業(yè)突然的火了起來,加上一些書籍和媒體的失真宣傳,好像什么人都可以擔任產(chǎn)品經(jīng)理。但是現(xiàn)實...
    唐杰閱讀 679評論 0 2

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