在創新的2018年已通過去,在2019年看看如何簡單作成響應性的網站css
若是你不曾據說過CSS變量,那麼我告訴你,它就是CSS的一種新功能,可讓你擁有在樣式表中使用變量的能力,這樣作時並不須要什麼特別的設置呦。html
從本質上講,CSS變量可讓你擺脫老式的樣式設置:前端
h1 { font-size: 30px; } navbar>a { font-size: 30px; }
/ …而是主張這樣寫: /sass
:root { --base-font-size: 30px; } h1 { font-size: var(--base-font-size); } navbar>a { font-size: var(--base-font-size); }
這樣的語法看起來的確有點怪怪的,但有沒有以爲它和less、sass中的變量有點相似呢,但如此一來,只要更改–base-font-size 變量,就能在整個應用中改變字號了。less
若是你想把CSS變量學明白,能夠在Scrimba網站 這裏有免費互動CSS變量課程,該課程包含8個互動截屏。佈局
這是一段htmlflex
<ul class="item"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> </ul>
在之前即便不使用CSS變量也能夠把這些事情搞定。只是須要把要改變的屬性在從新重置一下,須要在媒體查詢中擁有本身的選擇器,但會招致額外的大量代碼,像下面這樣:網站
.item { display: flex; flex-direction: column; flex-wrap: wrap; justify-content: space-around; padding: 10px; li { background-color: #ff6f69; border: 1px solid #fff; font-size: 20px; height: 200px; list-style-type: none; width: 100%; } } @media (min-width: 768px) { .item { flex-direction: row; li { background-color: #ffcc5c; font-size: 50px; height: 300px; width: 50%; } } } @media (min-width: 992px) { .item { flex-wrap: nowrap; li { background-color: #ffeead; font-size: 100px; height: 500px; width: calc(100% / 4); } } }
查看效果spa
下面讓咱們來看如何使用CSS變量來解決這個問題。首先,要把咱們將重複利用和更改的數值存儲在變量的內部:3d
:root { --base-color: #ff6f69; --base-font-size: 20px; --direction: column; --width: 100%; --height: 200px; }
而後,在整個頁面中簡單地使用這些變量就好了:
.item { display: flex; padding: 10px; justify-content: space-around; flex-direction: var(--direction); flex-wrap: var(--wrap); li{ list-style-type: none; border: 1px solid #fff; height: var(--height); width: var(--width); background-color: var(--base-color); font-size: var(--base-font-size); } }
一旦進行了這樣的設置以後,咱們只要在媒體查詢中簡單地更改變量值就好了:
@media (min-width: 768px) { :root { --base-font-size: 60px; --base-color: #ffcc5c; --direction: row; --height: 300px; --width: 50%; --wrap:wrap; } } @media (min-width: 992px) { :root { --base-font-size: 100px; --base-color: #ffeead; --direction: row; --height: 500px; --width: calc(100% / 4); --wrap:nowrap; } }
這比咱們以往的方法簡便多了。只需盯住 :root,而沒必要爲全部的選擇器指定值了。
這只是一個簡單的例子。設想成熟的網站會是什麼樣子吧,例如,用 –base-margin 來控制APP四周的多數自由空間。想翻轉其值也是很容易的事情,沒必要用複雜的選擇器來填充媒體查詢了。
總之,CSS變量絕對是提升響應速度時,所表明的將來。
做者: w3cbest前端開發
互動: 若有疑問可 進羣討論 本文原創,著做權歸做者全部。商業轉載請聯繫@w3cbest前端開發得到受權,非商業轉載請註明原連接及出處。