CSS函數的8個小技巧

隨著css語言的廣泛使用和不斷發展,現在css能做的功能更加多樣,而且相信隨著時間的推移,也將更加強大。css是前端開發必備的樣式表語言,為提升開發效率,掌握一定的技巧必不可少,下面我們就一起來看看讓程序猿代碼開發效率飛起來的8個css函數小技巧吧。

1.純CSS Tooltip
許多網站還是在使用JavaScript來創建Tooltip效果,但實際上通過CSS能更簡單的實現。最簡單的方法是在你的HTML代碼中添加一個帶有提示文本的屬性,比如 data-tooltip="…" 。然后你就可以在你的CSS文件中添加以下的代碼通過 attr() 函數來顯示提示文字:

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

相當簡單對吧?當然實際上我們還需要更多的代碼來給提示增加樣式,但是不用擔心,已經有了為此設計的強大且純粹的叫 Hint.css 的CSS庫和 Balloon.css 。

2.使用自定義數據屬性和 attr() 函數
我們已經學會如何使用 attr() 來創建提示,另外還有一些場景能使用到這個函數。通過與數據屬性相結合,你可以通過很簡單的一行HTML代碼來創建帶有標題和描述的縮略圖:

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

現在你可以通過 attr() 函數來顯示標題與描述:

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

以下為具體的例子:

注意:這個方法在瀏覽器支持方面可能會有一些問題,具體內容你可以查看 Accessibility support for CSS generated content 這篇文章。

  1. CSS Counters
    你可以通過CSS Counters實現超棒的功能。這不是一個非常為人熟知的屬性,大多數人甚至可能認為瀏覽器不能很好的支持這個屬性,但事實上所有的瀏覽器都支持這個屬性:

但是你不應該將CSS counters使用在有序列表 <ol> 上,它更適合使用在類似分頁或者圖片庫下面顯示的數字上。你可以通過下面的例子看出如何使用很少的代碼(甚至不使用JavaScript)來對選中的項目進行計數:

CSS counters也非常適合顯示可通過拖放進行重新排序的項目列表上動態變化的數字:

正如最后一個例子,我們需要記住,通過該方法生成的內容在可訪問性上可能會有些問題。

4.CSS濾鏡實現的磨砂效果
在iOS7中,蘋果實現了“磨砂玻璃”的效果--半透明的,模糊的元素,看起來像覆蓋了一層磨砂玻璃。受到蘋果的啟發,這種效果被運用到很多地方。在CSS濾鏡出現之前要重現這個效果還是有些棘手的。你必須通過使用 模糊圖片 來實現這種毛玻璃的效果。但現在CSS

濾鏡得到了幾乎所有的主流瀏覽器的支持,所以要 重現這個效果 就簡單很多了。

在未來,我們可以通過背景過濾器和 filter() 函數 來實現這樣的效果,但目前只有 Safari 同時支持這兩個功能。

有關于CSS的 filter 更多的介紹可以點擊這里進行了解。

5.將HTML元素作為背景
一般我們可以設置一個JPEG或者PNG文件作為背景,或者也可以設置一個漸變的背景。但是你知道可以通過使用 element() 函數,從而將一個 <div> 設置為背景圖片嗎?現在, element() 函數只有在Firefox中得到了支持:

可能性是無止境的, 這里 是MDN上的一個例子。

有關于CSS的 element() 函數的相關介紹可以點擊這里。

6.通過 calc() 創建更好的網格
流體網格雖然很棒但是仍然存在很嚴重的問題。比如,在頂部和底部的間距大小幾乎不可能與在左邊和右邊的間距大小相同。另外,若使用的網格系統不一樣,標記就會非常混亂。雖然彈性布局不是最終的解決方案,但是通過與 calc() (可以在CSS文件中作為一個屬性

值)相結合,我們能夠創建一個更好的網格。在 這里 ,George Martsoukos列舉了很多例子,比如擁有完美間距的畫廊網格。通過使用CSS預編譯語言,比如Sass, 組建一個創造性的網格系統 可以非常簡單且易于維護。同時瀏覽器對 calc() 的支持幾乎完美,因此

calc() 絕對是你應該掌握的一個功能。

有關于CSS的 calc() 函數相關的介紹可以點擊這里。

  1. 通過 calc() 對齊 position:fixed 元素
    calc() 的另一個作用是用來對齊 position:fixed 的元素。比如,你有一個內容封裝器,它左右都有流動的間距,你希望在這個內容封裝器內精確對齊 position 為 fixed 的元素,但是這種情況下要計算出 left 和 right 屬性的具體賦值就很困難。通過 calc() ,你

可以結合相對和絕對的值來精確定位你的元素:

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

比如:

有關于這方面的詳細介紹可以閱讀 @brnnbrn 寫的《 Aligning position:fixed Elements with CSS calc 》一文。

8.使用 cubic-bezier() 實現動畫
為了使一個網站或者APP的用戶界面更具有吸引力,你可使用一些動畫,但是可以選擇的過渡效果的速度曲線是相當有限的,比如, linear 或者 ease-in-out 。而標準的速度曲線連彈力運動的效果都實現不了。通過使用 cubic-bezier() 函數,你可以精確實現你想要

的動畫效果。

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

說實話,我使用的是后者。

有關于 cubic-bezier() 詳細的介紹可以點擊這里。

總結
更加聰明的使用CSS函數不僅僅可以解決上面的問題比如創建一個更好的網格,它還可以給你更多的創作自由。隨著瀏覽器支持越來越好,你可以使用CSS函數比如 calc() 來修改和提升一下你之前的CSS代碼。最后,希望本文的分享能對大家有所幫助。

相關教程推薦:http://www.maiziedu.com/course/421/
文章來源:W3CPlus

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Ba la la la ~ 讀者朋友們,你們好啊,又到了冷鋒時間,話不多說,發車! CSS 比許多 we...
    王飽飽閱讀 1,255評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,803評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,335評論 0 11
  • 這個世界是否有不勞而獲的事情,我不清楚,但我相信這個世界,只要要努力,一切都會好起來的,我們沒有成功,只是因為我們...
    26e443f7bfac閱讀 223評論 0 0
  • 喜歡夜聽,喜歡劉筱, 人,要么像辣椒一樣有脾氣。 要么像白菜一樣有層次。 要么像蓮藕一樣有心眼。 可我做不到! 我...
    愛上一葉浮萍閱讀 574評論 2 2