CSS 函數(shù)的 8 個妙用

Ba la la la ~ 讀者朋友們,你們好啊截汪,又到了冷鋒時間,話不多說植捎,發(fā)車衙解!


CSS 比許多 web 程序員認(rèn)為的更加強(qiáng)大。這種樣式表語言正變得越來越強(qiáng)大鸥跟,給瀏覽器帶來了原本要用 JavaScript 實現(xiàn)的功能丢郊。本文將介紹無需 JavaScript 的 CSS 函數(shù)的 8 個妙用。

1. 純 CSS 的 tooltips

很多網(wǎng)站仍在用 JavaScript 創(chuàng)建 tooltips医咨,但實際上枫匾,用 CSS 實現(xiàn)更加簡單。最簡單的方法是在 HTML 代碼的 data 屬性中提供 tooltip 文本拟淮,比如:data-tooltip="…"干茉。這樣就可以在 CSS 中添加以下代碼來在 attr() 函數(shù)中顯示 tooltip 文本了:

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

很好懂,對吧很泊?當(dāng)然要想設(shè)計 tooltips 還需要更多的代碼角虫,但是不必?fù)?dān)心沾谓,有一款很棒的純 CSS 庫就是為此而生的,叫做 Hint.css 戳鹅。

2. 使用自定義data 屬性和 attr() 函數(shù)

我們已經(jīng)在 tooltips 中用過 attr() 了均驶,但是還有一些情況也可以用 attr()。結(jié)合 data 屬性枫虏,可以通過 title 和 description 僅用一行 HTML 代碼創(chuàng)建縮略圖:

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

接下來就可以用 attr() 函數(shù)來顯示 title 和 description 了:

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

這里提供一個 hover 上去有字幕動畫效果的縮略圖例子:

http://codepen.io/SitePoint/pen/akAmPw

說明:CSS 生成的 content 是 不易獲取 的妇穴。在此方面,這篇文章的 關(guān)于獲取 CSS 生成 content 的內(nèi)容(http://tink.uk/accessibility-support-for-css-generated-content/) 部分可以借鑒隶债。


3. CSS 計數(shù)器

CSS 計數(shù)器可以做出神奇的效果腾它。計數(shù)器不是最有名的特點,多數(shù)人可能認(rèn)為它的支持性不夠好死讹,但實際上瞒滴,所有瀏覽器都支持 CSS 計數(shù)器:

計數(shù)器用于分頁或是在 gallery 下方展示項目數(shù)量都很棒,但是不應(yīng)該用在有序列表(<ol>)上赞警。也可以用 CSS 計數(shù)器計算已選項的數(shù)量妓忍,代碼量會令你驚嘆(并且沒有 JavaScript):

http://codepen.io/lonekorean/pen/wKbzv

在可拖放排序的列表中用 CSS 計數(shù)器動態(tài)改變數(shù)量也很贊:

http://codepen.io/SitePoint/pen/bdeOKJ

像上個例子一樣,記住——CSS 生成的 content 是不易獲取的仅颇。

4. CSS filters實現(xiàn)毛玻璃效果

蘋果的 iOS 7 給我們帶來了“毛玻璃”效果——看起來像磨砂玻璃窗的单默、半透明省骂、模糊的元素褂傀。在蘋果的推行下,在越來越多的地方可以見到這種效果了诵冒。再現(xiàn)這種效果有點復(fù)雜——在有 CSS filters 之前耕皮,只能用 模糊的半透明圖片 來實現(xiàn)毛玻璃效果境蜕。目前幾乎所有的主流瀏覽器都支持 CSS filters,再現(xiàn)毛玻璃效果就簡單多了 凌停。

目前 backdrop filters 和 filter() 函數(shù) 只有 Safari 支持粱年,但是將來我們就可以用它們實現(xiàn)相似的效果了。

5. HTML Elements做背景圖

通常都是指定 JPEG 或 PNG 文件充當(dāng)背景圖或漸變罚拟。但是你知道 element() 函數(shù)可以用 <div> 做背景圖嗎台诗?目前只有 Firefox 支持 element() 函數(shù):

Element() 函數(shù)擁有無限可能,這里有個 MDN 上的 例子 赐俗。

6. calc() 實現(xiàn)智能柵格

Fluid grids(流體網(wǎng)格劃分)很棒拉队,但是有幾個嚴(yán)重的問題。例如阻逮,無法實現(xiàn)頂部和底部的空隙和左右的空隙大小相同粱快。此外,根據(jù)所使用的柵格系統(tǒng)不同,標(biāo)記有些混亂事哭。即使是 flexbox 也不是做好的解決方法漫雷。但是有了可在 CSS 中作為 value 使用的 calc() 函數(shù),柵格會變得更棒鳍咱。在 SitePoint 的此篇教程 中降盹,George Martsoukos 列舉了幾個實例,比如間隔完美的網(wǎng)格畫廊谤辜。通過 CSS 預(yù)編譯器澎现,比如 Sass,利用 calc() 實現(xiàn)一套柵格系統(tǒng) 非常簡單每辟,并且易于維護(hù)。calc() 的瀏覽器支持性近乎完美干旧,極力推薦使用渠欺。

7. CSS calc() 對齊 position:fixed 元素

calc() 函數(shù)的另一個使用場景是對齊 fixed 定位的元素。例如椎眯,有一個左右均有空隙的 content wrapper挠将,如果想要對 wrapper 內(nèi)的一個 fixed 元素精準(zhǔn)對齊——要算出給“right”或是“l(fā)eft”屬性賦值多少是很困難的。用 calc() 可以結(jié)合 relative 和 absolute 的值來精準(zhǔn)對齊元素:

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

這里提供一個例子:

http://codepen.io/SitePoint/pen/NAVRZQ

8. cubic-bezier() 動畫

要想網(wǎng)站或 app 的 UI 更加引人注目的話编整,可以使用動畫舔稀。但是標(biāo)準(zhǔn)的 easing 選項非常有限,比如“l(fā)inear”或是“ease-in-out”掌测。像是彈跳動畫更是標(biāo)準(zhǔn)選項無法實現(xiàn)的内贮。使用 cubic-bezier() 函數(shù),就可以讓元素按你想要的方式去動畫汞斧。

使用 cubic-bezier() 有兩種方式—— 理解背后的數(shù)學(xué)知識 然后自己創(chuàng)建夜郁,或者使用 cubic-bezier 生成器 。


以上為個人意見粘勒,如有雷同竞端,純屬巧合,歡迎大家多提意見庙睡!Bey 了 個 Bey ~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末事富,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乘陪,更是在濱河造成了極大的恐慌统台,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暂刘,死亡現(xiàn)場離奇詭異饺谬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門募寨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族展,“玉大人,你說我怎么就攤上這事拔鹰∫歉祝” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵列肢,是天一觀的道長恰画。 經(jīng)常有香客問我,道長瓷马,這世上最難降的妖魔是什么拴还? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮欧聘,結(jié)果婚禮上片林,老公的妹妹穿的比我還像新娘。我一直安慰自己怀骤,他們只是感情好费封,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蒋伦,像睡著了一般弓摘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痕届,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天韧献,我揣著相機(jī)與錄音,去河邊找鬼研叫。 笑死势决,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓝撇。 我是一名探鬼主播果复,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渤昌!你這毒婦竟也來了虽抄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤独柑,失蹤者是張志新(化名)和其女友劉穎迈窟,沒想到半個月后曲稼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湖员,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡贫悄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了娘摔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡凳寺,死狀恐怖鸭津,靈堂內(nèi)的尸體忽然破棺而出肠缨,到底是詐尸還是另有隱情晒奕,我是刑警寧澤父泳,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站吴汪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒸眠。R本人自食惡果不足惜漾橙,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望楞卡。 院中可真熱鬧霜运,春花似錦、人聲如沸蒋腮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽池摧。三九已至焦除,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間作彤,已是汗流浹背膘魄。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留竭讳,地道東北人创葡。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像绢慢,于是被迫代替她去往敵國和親灿渴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

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

  • 隨著css語言的廣泛使用和不斷發(fā)展,現(xiàn)在css能做的功能更加多樣骚露,而且相信隨著時間的推移蹬挤,也將更加強(qiáng)大。css是前...
    突然自我閱讀 592評論 0 1
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color荸百,font闻伶,text-align,li...
    wzhiq896閱讀 1,730評論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color够话,font蓝翰,text-align,li...
    love2013閱讀 2,303評論 0 11
  • 一個學(xué)生問他老師:老師女嘲,昨晚我見一盲人打著燈籠走路畜份。他明明看不見,打燈籠有何用欣尼?老師回答說爆雹,如果他是怕別人看不清路...
    許雄偉閱讀 1,652評論 0 0
  • 其實就是我自己的一些經(jīng)歷,有一點小感悟愕鼓,分享給大家钙态。 今年四月份的時候,我父親因病去世了菇晃,如今這世上就只剩我和我母...
    劉郎已恨蓬山遠(yuǎn)閱讀 393評論 3 2