8個CSS函式的小技巧
CSS現在已經能實現比網站開發者預料到的更多的功能,並且隨著時間的推移,樣式表語言越來越強大,能實現許多原先需要依靠JavaScript才能實現的功能。在這篇文章中我們將會介紹CSS函式中8種有用的小技巧。
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這篇文章。
3. CSS Counters
你可以通過CSS Counters實現超棒的功能。這不是一個非常為人熟知的屬性,大多數人甚至可能認為瀏覽器不能很好的支援這個屬性,但事實上所有的瀏覽器都支援這個屬性:
但是你不應該將CSS counters使用在有序列表<ol>
上,它更適合使用在類似分頁或者圖片庫下面顯示的數字上。你可以通過下面的例子看出如何使用很少的程式碼(甚至不使用JavaScript)來對選中的專案進行計數:
CSS counters也非常適合顯示可通過拖放進行重新排序的專案列表上動態變化的數字:
正如最後一個例子,我們需要記住,通過該方法生成的內容在可訪問性上可能會有些問題。
4.CSS濾鏡實現的磨砂效果
在iOS7中,蘋果實現了“磨砂玻璃”的效果–半透明的,模糊的元素,看起來像覆蓋了一層磨砂玻璃。受到蘋果的啟發,這種效果被運用到很多地方。在CSS濾鏡出現之前要重現這個效果還是有些棘手的。你必須通過使用模糊圖片來實現這種毛玻璃的效果。但現在CSS濾鏡得到了幾乎所有的主流瀏覽器的支援,所以要重現這個效果就簡單很多了。
在未來,我們可以通過背景過濾器和filter()
函式來實現這樣的效果,但目前只有Safari
同時支援這兩個功能。
5.將HTML元素作為背景
一般我們可以設定一個JPEG或者PNG檔案作為背景,或者也可以設定一個漸變的背景。但是你知道可以通過使用element()
函式,從而將一個<div>
設定為背景圖片嗎?現在,element()
函式只有在Firefox中得到了支援:
可能性是無止境的,這裡是MDN上的一個例子。
6.通過calc()
建立更好的網格
流體網格雖然很棒但是仍然存在很嚴重的問題。比如,在頂部和底部的間距大小几乎不可能與在左邊和右邊的間距大小相同。另外,若使用的網格系統不一樣,標記就會非常混亂。雖然彈性佈局不是最終的解決方案,但是通過與calc()
(可以在CSS檔案中作為一個屬性值)相結合,我們能夠建立一個更好的網格。在這裡,George Martsoukos列舉了很多例子,比如擁有完美間距的畫廊網格。通過使用CSS預編譯語言,比如Sass,組建一個創造性的網格系統可以非常簡單且易於維護。同時瀏覽器對calc()
的支援幾乎完美,因此calc()
絕對是你應該掌握的一個功能。
7. 通過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程式碼。
相關文章
- 8 個 Git 的小技巧Git
- CSS效能優化的8個技巧CSS優化
- CSS樣式設定小技巧CSS
- 程式碼重構:函式重構的 7 個小技巧函式
- 【譯】22個必備的CSS小技巧CSS
- 分享幾個Python小技巧函式裡的4個小花招Python函式
- 8個關於Python的小技巧Python
- css小技巧CSS
- 常用的CSS小技巧CSS
- Laravel 實用的輔助函式小技巧--helperLaravel函式
- HTML + CSS 小技巧HTMLCSS
- 圖片怎麼優化的8個小技巧優化
- 圖片優化須知的8個小技巧優化
- python將函式寫入模組中的小技巧Python函式
- 【封裝小技巧】列表處理函式的封裝封裝函式
- excel中最常用的30個函式 excel表格常用函式技巧大全Excel函式
- 前端常用CSS小技巧前端CSS
- 程式碼重構:類重構的 8 個小技巧
- 扁平化設計的8個實用小技巧
- 提升WordPress網站載入速度的8個小技巧網站
- 【譯】8個有用的 CSS 技巧:視差影象,sticky footer 等等CSS
- 【封裝小技巧】數字處理函式的封裝封裝函式
- 8個小技巧,讓一個遊戲變得更好玩遊戲
- 常用的Css函式CSS函式
- 響應式設計的5個CSS實用技巧CSS
- CSS小技巧——畫個三角形CSS
- 8個值得關注的PHP安全函式PHP函式
- 小謝第8問:ui框架的css樣式如何更改UI框架CSS
- CSS揭祕之《小技巧》CSS
- 與開發團隊高效協作的8個小技巧
- api日常總結:前端常用js函式和CSS常用技巧API前端JS函式CSS
- CSS除錯小技巧 —— 除錯DOM元素hover,focus,actived的樣式CSS除錯
- css中的calc()函式CSS函式
- 8個有用的JS技巧JS
- 8 個有用的 JS 技巧JS
- 8條github使用小技巧Github
- 解鎖四個基礎的Excel函式技巧,個個都很實用Excel函式
- css選擇器順序的小技巧CSS