5個好用的 CSS 函數,快來試試手吧!

做者:Milos Protic
譯者:前端小智
來源:devinduct
點贊再看,微信搜索 大遷世界,B站關注 前端小智這個沒有大廠背景,但有着一股向上積極心態人。本文 GitHub https://github.com/qq44924588... 上已經收錄,文章的已分類,也整理了不少個人文檔,和教程資料。

最近開源了一個 Vue 組件,還不夠完善,歡迎你們來一塊兒完善它,也但願你們能給個 star 支持一下,謝謝各位了。css

github 地址:https://github.com/qq44924588...前端

簡介

CSS 包含了許多函數,並且它可以完成許多早期須要用 JavaScript才能完成的事情。每一年都有新的特性被添加進來,這讓咱們的開發更加輕鬆,也減小了對JavaScript的依賴。CSS 函數是它所具備的最強大的特性之一,在本文中,我將介紹一些我認爲有用的函數。vue

attr()

attr 函數用於獲取所選元素的屬性值。 它接受三個參數,屬性名稱類型默認值git

語法: attr( attribute-name <type-or-unit>? [, <fallback> ]? )

事例:github

<p data-text="the attr function"
  data-tooltip="Hi from attr!" class="attr">This text is combined with</p>

cssweb

p::after {
  content: ' ' attr(data-text);
}

p.attr:hover::after {
  content: ' ' attr(data-tooltip);
  background-color: orange;
  color: white
}

效果:面試

圖片描述

源碼:https://codepen.io/protic_milos/pen/GRpYJKd微信

calc()

這個函數使咱們可以計算CSS值,而不是指定確切的值。一般用於計算元素的大小或位置。它支持加法、減法、乘法和除法。函數

須要特別注意重要一點+-運算符必須用空格隔開,否則沒法正常工做。*/運算符不有這限制,但出於一致性的考慮,建議添加空格。工具

另外,很棒的是,咱們能夠混合CSS單位,例如,咱們能夠減去百分比和像素。

咱們能夠用calc構建一個帶有居中元素的示例:

<p class="calc">Centered with calc</p>

css

p.calc {
  padding: 10px;
  background-color: orange;
  color: white;
  width: 200px;
  text-align:center;
  margin-left: calc(50% - 100px)
}

效果:

clipboard.png

源碼:https://codepen.io/protic_milos/pen/GRpYJKd

var()

經過這個函數,咱們可使用一個自定義屬性的值做爲另外一個CSS屬性的值。簡單地說,咱們能夠定義一個顏色,例如,將它放在自定義屬性(CSS變量)中,而後經過調用var函數重用該屬性值。

與CSS變量一塊兒,該函數提升了可維護性並減小了重複。一個用例是爲網站建立主題。

此函數接受兩個參數,即自定義屬性和一個默認值,若是出現問題,將使用它們。

:root {
  --bg-color: green;
  --color: white
}

p.var {
  background-color: var(--bg-color);
  color: var(--color)
}

效果:

clipboard.png

源碼:https://codepen.io/protic_milos/pen/GRpYJKd

counter()

就我我的而言,我從未使用過這種方法,但它看起來是頗有趣。這個函數返回指定計數器的當前值,須要與 counter-resetcounter-increment 配合使用。

咱們能夠用它來計算其餘元素,好比有序列表。

<div class="counter">
  <span>Mars</span>
  <span>Bounty</span>
  <span>Snickers</span>
</div>

clipboard.png

源碼:https://codepen.io/protic_milos/pen/GRpYJKd

circle()

這個函數建立一個圓形區域來屏蔽它所應用的元素。你能夠指定它的半徑和位置。一般與圖像一塊兒使用來建立圓角形狀。此函數是clip-path屬性值。

另外,值得一提的是,除了圓以外,您還能夠建立橢圓和多邊形形狀。

<img class="circle" 
  src="https://devinduct.com/Uploads/PostImages/1122dcb9-954a-4641-9ca6-c38e9472698f.png"
/>

css

img.circle {
  clip-path: circle(30%);
}

clipboard.png

源碼:https://codepen.io/protic_milos/pen/GRpYJKd

總結

正如我以前屢次提到的,在不少狀況下,開發人員都忽視了CSS的可能性,所以失去了web站點的簡單性。每年咱們均可以依靠CSS爲咱們提供所需的設計能力,這很好,JavaScript 應該把注意力放在其餘事情上,而不是設計上。


代碼部署後可能存在的BUG無法實時知道,過後爲了解決這些BUG,花了大量的時間進行log 調試,這邊順便給你們推薦一個好用的BUG監控工具 Fundebug

原文:https://devinduct.com/63/5-us...

交流

文章每週持續更新,能夠微信搜索「 大遷世界 」第一時間閱讀和催更(比博客早一到兩篇喲),本文 GitHub https://github.com/qq449245884/xiaozhi 已經收錄,整理了不少個人文檔,歡迎Star和完善,你們面試能夠參照考點複習,另外關注公衆號,後臺回覆福利,便可看到福利,你懂的。

本文同步分享在 博客「前端小智」(SegmentFault)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索