CSS函數(shù)的8個(gè)小技巧

隨著css語(yǔ)言的廣泛使用和不斷發(fā)展,現(xiàn)在css能做的功能更加多樣宇攻,而且相信隨著時(shí)間的推移惫叛,也將更加強(qiáng)大。css是前端開發(fā)必備的樣式表語(yǔ)言逞刷,為提升開發(fā)效率嘉涌,掌握一定的技巧必不可少,下面我們就一起來(lái)看看讓程序猿代碼開發(fā)效率飛起來(lái)的8個(gè)css函數(shù)小技巧吧夸浅。

1.純CSS Tooltip
許多網(wǎng)站還是在使用JavaScript來(lái)創(chuàng)建Tooltip效果仑最,但實(shí)際上通過(guò)CSS能更簡(jiǎn)單的實(shí)現(xiàn)。最簡(jiǎn)單的方法是在你的HTML代碼中添加一個(gè)帶有提示文本的屬性帆喇,比如 data-tooltip="…" 警医。然后你就可以在你的CSS文件中添加以下的代碼通過(guò) attr() 函數(shù)來(lái)顯示提示文字:

.tooltip::after {
content: attr(data-tooltip);
}

相當(dāng)簡(jiǎn)單對(duì)吧?當(dāng)然實(shí)際上我們還需要更多的代碼來(lái)給提示增加樣式坯钦,但是不用擔(dān)心预皇,已經(jīng)有了為此設(shè)計(jì)的強(qiáng)大且純粹的叫 Hint.css 的CSS庫(kù)和 Balloon.css 。

2.使用自定義數(shù)據(jù)屬性和 attr() 函數(shù)
我們已經(jīng)學(xué)會(huì)如何使用 attr() 來(lái)創(chuàng)建提示婉刀,另外還有一些場(chǎng)景能使用到這個(gè)函數(shù)吟温。通過(guò)與數(shù)據(jù)屬性相結(jié)合,你可以通過(guò)很簡(jiǎn)單的一行HTML代碼來(lái)創(chuàng)建帶有標(biāo)題和描述的縮略圖:

<a class="caption" href="#" data-title="Vulture" data-description="...">
<img src="img.jpg" alt="Illustration"/>
</a>

現(xiàn)在你可以通過(guò) attr() 函數(shù)來(lái)顯示標(biāo)題與描述:

.caption::after {
content: attr(data-title);
...
}

以下為具體的例子:

注意:這個(gè)方法在瀏覽器支持方面可能會(huì)有一些問(wèn)題突颊,具體內(nèi)容你可以查看 Accessibility support for CSS generated content 這篇文章鲁豪。

  1. CSS Counters
    你可以通過(guò)CSS Counters實(shí)現(xiàn)超棒的功能。這不是一個(gè)非常為人熟知的屬性律秃,大多數(shù)人甚至可能認(rèn)為瀏覽器不能很好的支持這個(gè)屬性爬橡,但事實(shí)上所有的瀏覽器都支持這個(gè)屬性:

但是你不應(yīng)該將CSS counters使用在有序列表 <ol> 上,它更適合使用在類似分頁(yè)或者圖片庫(kù)下面顯示的數(shù)字上棒动。你可以通過(guò)下面的例子看出如何使用很少的代碼(甚至不使用JavaScript)來(lái)對(duì)選中的項(xiàng)目進(jìn)行計(jì)數(shù):

CSS counters也非常適合顯示可通過(guò)拖放進(jìn)行重新排序的項(xiàng)目列表上動(dòng)態(tài)變化的數(shù)字:

正如最后一個(gè)例子糙申,我們需要記住,通過(guò)該方法生成的內(nèi)容在可訪問(wèn)性上可能會(huì)有些問(wèn)題迁客。

4.CSS濾鏡實(shí)現(xiàn)的磨砂效果
在iOS7中郭宝,蘋果實(shí)現(xiàn)了“磨砂玻璃”的效果--半透明的,模糊的元素掷漱,看起來(lái)像覆蓋了一層磨砂玻璃粘室。受到蘋果的啟發(fā),這種效果被運(yùn)用到很多地方卜范。在CSS濾鏡出現(xiàn)之前要重現(xiàn)這個(gè)效果還是有些棘手的衔统。你必須通過(guò)使用 模糊圖片 來(lái)實(shí)現(xiàn)這種毛玻璃的效果。但現(xiàn)在CSS

濾鏡得到了幾乎所有的主流瀏覽器的支持海雪,所以要 重現(xiàn)這個(gè)效果 就簡(jiǎn)單很多了锦爵。

在未來(lái),我們可以通過(guò)背景過(guò)濾器和 filter() 函數(shù) 來(lái)實(shí)現(xiàn)這樣的效果奥裸,但目前只有 Safari 同時(shí)支持這兩個(gè)功能险掀。

有關(guān)于CSS的 filter 更多的介紹可以點(diǎn)擊這里進(jìn)行了解。

5.將HTML元素作為背景
一般我們可以設(shè)置一個(gè)JPEG或者PNG文件作為背景湾宙,或者也可以設(shè)置一個(gè)漸變的背景樟氢。但是你知道可以通過(guò)使用 element() 函數(shù),從而將一個(gè) <div> 設(shè)置為背景圖片嗎侠鳄?現(xiàn)在埠啃, element() 函數(shù)只有在Firefox中得到了支持:

可能性是無(wú)止境的, 這里 是MDN上的一個(gè)例子伟恶。

有關(guān)于CSS的 element() 函數(shù)的相關(guān)介紹可以點(diǎn)擊這里碴开。

6.通過(guò) calc() 創(chuàng)建更好的網(wǎng)格
流體網(wǎng)格雖然很棒但是仍然存在很嚴(yán)重的問(wèn)題。比如博秫,在頂部和底部的間距大小幾乎不可能與在左邊和右邊的間距大小相同潦牛。另外,若使用的網(wǎng)格系統(tǒng)不一樣挡育,標(biāo)記就會(huì)非嘲照溃混亂。雖然彈性布局不是最終的解決方案静盅,但是通過(guò)與 calc() (可以在CSS文件中作為一個(gè)屬性

值)相結(jié)合良价,我們能夠創(chuàng)建一個(gè)更好的網(wǎng)格。在 這里 ,George Martsoukos列舉了很多例子蒿叠,比如擁有完美間距的畫廊網(wǎng)格明垢。通過(guò)使用CSS預(yù)編譯語(yǔ)言,比如Sass市咽, 組建一個(gè)創(chuàng)造性的網(wǎng)格系統(tǒng) 可以非常簡(jiǎn)單且易于維護(hù)痊银。同時(shí)瀏覽器對(duì) calc() 的支持幾乎完美,因此

calc() 絕對(duì)是你應(yīng)該掌握的一個(gè)功能施绎。

有關(guān)于CSS的 calc() 函數(shù)相關(guān)的介紹可以點(diǎn)擊這里溯革。

  1. 通過(guò) calc() 對(duì)齊 position:fixed 元素
    calc() 的另一個(gè)作用是用來(lái)對(duì)齊 position:fixed 的元素贞绳。比如,你有一個(gè)內(nèi)容封裝器致稀,它左右都有流動(dòng)的間距冈闭,你希望在這個(gè)內(nèi)容封裝器內(nèi)精確對(duì)齊 position 為 fixed 的元素,但是這種情況下要計(jì)算出 left 和 right 屬性的具體賦值就很困難抖单。通過(guò) calc() ,你

可以結(jié)合相對(duì)和絕對(duì)的值來(lái)精確定位你的元素:

.wrapper {
max-width: 1060px;
margin: 0 auto;
}
.floating-bubble {
position: fixed;
right: calc(50% - 530px); /* 50% - half your wrapper width */
}

比如:

有關(guān)于這方面的詳細(xì)介紹可以閱讀 @brnnbrn 寫的《 Aligning position:fixed Elements with CSS calc 》一文萎攒。

8.使用 cubic-bezier() 實(shí)現(xiàn)動(dòng)畫
為了使一個(gè)網(wǎng)站或者APP的用戶界面更具有吸引力,你可使用一些動(dòng)畫矛绘,但是可以選擇的過(guò)渡效果的速度曲線是相當(dāng)有限的耍休,比如, linear 或者 ease-in-out 货矮。而標(biāo)準(zhǔn)的速度曲線連彈力運(yùn)動(dòng)的效果都實(shí)現(xiàn)不了羊精。通過(guò)使用 cubic-bezier() 函數(shù),你可以精確實(shí)現(xiàn)你想要

的動(dòng)畫效果囚玫。

有兩種方法使用 cubic-bezier() ——了解 背后的機(jī)制 后自己創(chuàng)建园匹,或者是使用 cubic-bezier 生成器 。

說(shuō)實(shí)話劫灶,我使用的是后者裸违。

有關(guān)于 cubic-bezier() 詳細(xì)的介紹可以點(diǎn)擊這里。

總結(jié)
更加聰明的使用CSS函數(shù)不僅僅可以解決上面的問(wèn)題比如創(chuàng)建一個(gè)更好的網(wǎng)格本昏,它還可以給你更多的創(chuàng)作自由供汛。隨著瀏覽器支持越來(lái)越好,你可以使用CSS函數(shù)比如 calc() 來(lái)修改和提升一下你之前的CSS代碼涌穆。最后怔昨,希望本文的分享能對(duì)大家有所幫助。

相關(guān)教程推薦:http://www.maiziedu.com/course/421/
文章來(lái)源:W3CPlus

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宿稀,一起剝皮案震驚了整個(gè)濱河市趁舀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祝沸,老刑警劉巖矮烹,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異罩锐,居然都是意外死亡奉狈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門涩惑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仁期,“玉大人,你說(shuō)我怎么就攤上這事□说埃” “怎么了熬的?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赊级。 經(jīng)常有香客問(wèn)我押框,道長(zhǎng),這世上最難降的妖魔是什么此衅? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任强戴,我火速辦了婚禮亭螟,結(jié)果婚禮上挡鞍,老公的妹妹穿的比我還像新娘。我一直安慰自己预烙,他們只是感情好墨微,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扁掸,像睡著了一般翘县。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谴分,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天锈麸,我揣著相機(jī)與錄音,去河邊找鬼牺蹄。 笑死忘伞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沙兰。 我是一名探鬼主播氓奈,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鼎天!你這毒婦竟也來(lái)了舀奶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斋射,失蹤者是張志新(化名)和其女友劉穎育勺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罗岖,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怀大,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呀闻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片化借。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捡多,靈堂內(nèi)的尸體忽然破棺而出蓖康,到底是詐尸還是另有隱情铐炫,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布蒜焊,位于F島的核電站倒信,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泳梆。R本人自食惡果不足惜鳖悠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望优妙。 院中可真熱鬧乘综,春花似錦、人聲如沸套硼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)邪意。三九已至九妈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雾鬼,已是汗流浹背萌朱。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留策菜,地道東北人晶疼。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像做入,于是被迫代替她去往敵國(guó)和親冒晰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • Ba la la la ~ 讀者朋友們竟块,你們好啊壶运,又到了冷鋒時(shí)間,話不多說(shuō)浪秘,發(fā)車蒋情! CSS 比許多 we...
    王飽飽閱讀 1,217評(píng)論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font耸携,text-align棵癣,li...
    wzhiq896閱讀 1,731評(píng)論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font夺衍,text-align狈谊,li...
    love2013閱讀 2,303評(píng)論 0 11
  • 這個(gè)世界是否有不勞而獲的事情,我不清楚,但我相信這個(gè)世界河劝,只要要努力壁榕,一切都會(huì)好起來(lái)的,我們沒有成功赎瞎,只是因?yàn)槲覀?..
    26e443f7bfac閱讀 212評(píng)論 0 0
  • 喜歡夜聽牌里,喜歡劉筱, 人务甥,要么像辣椒一樣有脾氣牡辽。 要么像白菜一樣有層次。 要么像蓮藕一樣有心眼敞临。 可我做不到态辛! 我...
    愛上一葉浮萍閱讀 539評(píng)論 2 2