一個button的成長過程



html代碼:

<button>Rabbit</button>


CSS代碼:

padding: 6px 16px;

border: 1px solid #446d88;

background: #58a linear-gradient(#77a0bb, #58a);

/* 設置背景漸變葵姥。

第一個#58a用來定義一個背景色毯焕,作用是如果不兼容漸變背景的瀏覽器,會把背景色顯示成#58a */

border-radius: 4px;

/* 圓角 */

box-shadow: 0 1px 5px gray;

/* 盒子陰影 */

color: white;

text-shadow: 0 -1px 1px #335166;

/* 字體陰影 */

font-size: 20px;

line-height: 30px;



比例篇

以上代碼能已經能得到圖1的效果了摄咆。但維護性極差。如果要修改button大小晌缘,那么字體长捧、陰影、邊框的圓角都要跟著修改放祟,工作量會變大鳍怨。在修改之前,要清楚哪些要相對單位跪妥,哪些要用絕對單位鞋喇。

首先能直接修改的是CSS部分最后2行代碼。如果要修改字號(字體大衅薄)确徙,那么行高就要做出相應的變化⌒汛現(xiàn)在從行高和字號來看,行高是字號的1.5倍鄙皇。但是從上面的代碼中芜赌,行高并沒有反映出它跟字號的關系。當某些值相互依賴時伴逸,應該把它們的相互關系用代碼表達出來缠沈。

可以直接修改行高

font-size: 20px;

line-height: 1.5;

對字體來說,用絕對單位值(px)來定義的確很好理解错蝴,也很容易掌控洲愤。但是如果要修改網頁中其他位置文字的字號,或者是修改button父元素的字號顷锰,那么button和網頁中其他地方的字號就要相應作出修改了柬赐。所以在這里用em或者百分比做單位會比較合適。

假設父元素的字號是16px(在很多瀏覽器里面官紫,默認的字號是16px)

font-size: 125%;

line-height: 1.5;

現(xiàn)在肛宋,如果button父元素的字號改變了,那么button的尺寸也會隨之改變(因為字體變大了束世,而button只設了padding酝陈,所以button會被字體撐大)。但是button的內邊距毁涉、圓角大小沉帮、陰影都不會跟著變化,所以看起來比較別扭贫堰。比如下圖穆壕。


這里我把body的字號設成5em,與圖1比起來严嗜,好像差了很多粱檀。所以我們相應也要把padding、border-radius漫玄、box-shadow和text-shadow的單位改成相對單位茄蚯。

padding:.3em.8em;

border-radius:.2em;

box-shadow: 0.05em.25emgray;

text-shadow: 0-.05em.05em#335166;

以上修改的地方,都是用原來的 絕對值÷16 得出一個近似值睦优。而 像“.3em”這類數(shù)值渗常,前面的0都省略掉了,CSS3支持這樣的省略汗盘。真實值是0.3em皱碘。


現(xiàn)在看上去比例就正常了。

這個例子中隐孽,沒進行邊框粗細的設置癌椿。因為希望button的邊框粗細始終保持1px健蕊,不受button尺寸的影響。



色彩篇

在一個網站中踢俄,顏色也是一個重要的變數(shù)缩功。比如有“確定”按鈕,也有“取消”按鈕都办。它們長得一模一樣嫡锌,就是顏色不同。

所以我們可能需要覆蓋4條聲明(border-color琳钉、background

势木、box-shadow、text-shadow)歌懒,而且還有一個大難題:要根據(jù)按鈕的亮面和暗面相對于主色調亮色和暗色的程度來分別推導出其他顏色各自的亮色和暗色啦桌。

解題思路是:這個例子中,主色調只有一個歼培,漸變只有明暗變化震蒋,所以只要把半透明的黑色或白色疊加在主色調上,即可產生主色調的亮色和暗色變體躲庄。學過PS的人都知道這種圖層原理。

border: 1px solidrgba(0, 0, 0, .1);

background: #58a linear-gradient(hsla(0, 0%, 100%, .2),transparent);

box-shadow: 0 .05em .25emrgba(0, 0, 0, .5);

text-shadow: 0 -.05em .05emrgba(0, 0, 0, .5);

至此钾虐,樣式就基本修改完成了噪窘。


最終代碼

html代碼:

<button>Rabbit</button>


CSS代碼:

padding: .3em .8em;

border: 1px solid rgba(0, 0, 0, .1);

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%;

line-height: 1.5;




如果我們要添加其他按鈕,想使用同樣的樣式效扫,只是顏色不同倔监,可以直接在這個基礎的button樣式后面覆蓋background-color屬性即可。

html代碼:

<button>Rabbit</button>

<button class="ok">OK</button>

<button class="cancel">Cancel</button>


CSS代碼:

button {

padding: .3em .8em;

border: 1px solid rgba(0, 0, 0, .1);

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%;

line-height: 1.5;

}

button.ok {

background-color: #6b0;

}

button.cancel {

background-color: #c00;

}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末菌仁,一起剝皮案震驚了整個濱河市浩习,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌济丘,老刑警劉巖谱秽,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摹迷,居然都是意外死亡疟赊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門峡碉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來近哟,“玉大人,你說我怎么就攤上這事鲫寄〖矗” “怎么了疯淫?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戳玫。 經常有香客問我熙掺,道長,這世上最難降的妖魔是什么量九? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任适掰,我火速辦了婚禮,結果婚禮上荠列,老公的妹妹穿的比我還像新娘类浪。我一直安慰自己,他們只是感情好肌似,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布费就。 她就那樣靜靜地躺著,像睡著了一般川队。 火紅的嫁衣襯著肌膚如雪力细。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天固额,我揣著相機與錄音眠蚂,去河邊找鬼。 笑死斗躏,一個胖子當著我的面吹牛逝慧,可吹牛的內容都是我干的。 我是一名探鬼主播啄糙,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼笛臣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了隧饼?” 一聲冷哼從身側響起沈堡,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎燕雁,沒想到半個月后诞丽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡贵白,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年率拒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禁荒。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡猬膨,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情勃痴,我是刑警寧澤谒所,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站沛申,受9級特大地震影響劣领,放射性物質發(fā)生泄漏。R本人自食惡果不足惜铁材,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一尖淘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧著觉,春花似錦村生、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肄鸽,卻和暖如春卫病,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背典徘。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工蟀苛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逮诲。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓屹逛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汛骂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容

  • 1评腺、垂直對齊 如果你用CSS帘瞭,則你會有困惑:我該怎么垂直對齊容器中的元素?現(xiàn)在蒿讥,利用CSS3的Transform蝶念,...
    kiddings閱讀 3,154評論 0 11
  • body{ background:#f5faff; } .demo_con{ width:960px; margi...
    小憶123閱讀 1,090評論 0 0
  • 盡量減少代碼重復 在軟件開發(fā)中,保持代碼的DRY 和可維護性是最大的挑戰(zhàn)之一芋绸,而這句話對CSS 也是適用的媒殉。在實踐...
    圖靈教育閱讀 1,198評論 0 14
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font摔敛,text-align廷蓉,li...
    love2013閱讀 2,306評論 0 11
  • 我從來沒有想過,有一天也可以像現(xiàn)在一樣马昙,把內心的思緒變成墨黑的文字桃犬,不用過度修飾刹悴,也不用刻意模仿,只遵從內...
    某女人閱讀 238評論 1 1