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

在寫CSS的過程中胰挑,盡量減少代碼的重復(fù),對(duì)于代碼閱讀和維護(hù)的好處是顯而易見的椿肩。在修改代碼時(shí)瞻颂,需要改動(dòng)的變量越少,意味著可能出錯(cuò)的地方就越少郑象,花費(fèi)時(shí)間也越少贡这。
在開始寫一個(gè)頁面的CSS時(shí),嘗試去思考如何從更簡約的角度去定義一些root型的CSS規(guī)范厂榛,減少代碼冗余盖矫,提升質(zhì)量丽惭。

比例優(yōu)化

以下是一個(gè)案例,為按鈕添加一些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中辈双,如果我們需要修改按鈕的字體大小的話责掏,我們同時(shí)還需要修改按鈕的行高,同時(shí)因?yàn)樽煮w很大的話湃望,我們的圓角效果也會(huì)變得不協(xié)調(diào)拷橘,因?yàn)槲覀兊男Ч际菫樾“粹o設(shè)計(jì)的。
由于我們?cè)谝苿?dòng)端經(jīng)常需要使用REM來進(jìn)行等比例大小縮放設(shè)計(jì)喜爷,所以為類似按鈕這些元素做好基本的CSS設(shè)計(jì)就顯得至關(guān)重要。
下面是優(yōu)化后的button1

//為HTML設(shè)置默認(rèn)字體大小為原來2倍
html{font-size:32px;}       
        
.button2 {
  //將padding的尺寸修改為相對(duì)于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的圓角也會(huì)根據(jù)按鈕的大小同比調(diào)整
  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);
  //字體相對(duì)于頁面大小為1.25倍
  font-size: 1.25rem;
  //行高是字體的1.5倍
  line-height: 1.5;
}

得到的結(jié)果則是一個(gè)同比放大2倍的button1萄唇。

圖1-2

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

顏色優(yōu)化

除了比例以外湃密,不同功能用途的按鈕往往顏色也會(huì)不同,如何快速設(shè)置不同用途按鈕的漸變色效果四敞,我們可以做以下設(shè)置泛源。

.button2 {
  padding: 0.375rem 1rem;
  border: 1px solid rgba(0, 0, 0, .1);
  //為按鈕的主色調(diào)增加一層白色或黑色的透明遮罩
  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

總結(jié)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邻辉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腮鞍,更是在濱河造成了極大的恐慌值骇,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件移国,死亡現(xiàn)場離奇詭異雷客,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桥狡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門搅裙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皱卓,“玉大人,你說我怎么就攤上這事部逮∧戎” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵兄朋,是天一觀的道長掐禁。 經(jīng)常有香客問我,道長颅和,這世上最難降的妖魔是什么傅事? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮峡扩,結(jié)果婚禮上蹭越,老公的妹妹穿的比我還像新娘。我一直安慰自己教届,他們只是感情好响鹃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著案训,像睡著了一般买置。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上强霎,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天忿项,我揣著相機(jī)與錄音,去河邊找鬼城舞。 笑死倦卖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椿争。 我是一名探鬼主播怕膛,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼秦踪!你這毒婦竟也來了褐捻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤椅邓,失蹤者是張志新(化名)和其女友劉穎柠逞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體景馁,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡板壮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了合住。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绰精。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撒璧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笨使,到底是詐尸還是另有隱情卿樱,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布硫椰,位于F島的核電站繁调,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏靶草。R本人自食惡果不足惜蹄胰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奕翔。 院中可真熱鬧裕寨,春花似錦、人聲如沸糠悯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽互艾。三九已至,卻和暖如春讯泣,著一層夾襖步出監(jiān)牢的瞬間纫普,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工好渠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昨稼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓拳锚,卻偏偏與公主長得像假栓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霍掺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案匾荆? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 盡量減少代碼重復(fù) 在軟件開發(fā)中,保持代碼的DRY 和可維護(hù)性是最大的挑戰(zhàn)之一杆烁,而這句話對(duì)CSS 也是適用的牙丽。在實(shí)踐...
    圖靈教育閱讀 1,197評(píng)論 0 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評(píng)論 25 707
  • 你是否也曾因固執(zhí)的堅(jiān)持而失去了一些重要的人? 周日的凌晨三點(diǎn)兔魂,北京東北郊稀稀拉拉飄起了雪花烤芦,查完哨后一個(gè)人走在營區(qū)...
    古月氵皮閱讀 265評(píng)論 0 1
  • 不知曾幾何時(shí),產(chǎn)品經(jīng)理這個(gè)職業(yè)突然的火了起來析校,加上一些書籍和媒體的失真宣傳构罗,好像什么人都可以擔(dān)任產(chǎn)品經(jīng)理铜涉。但是現(xiàn)實(shí)...
    唐杰閱讀 647評(píng)論 0 2