css的變數和繼承的學習筆記

來源:互聯網
上載者:User

朋友,百姓網前端架構師css魔法的《css揭秘》,已經出版發行,並贈送了我一本。看了一下這本書,確實有很多css技巧。讓你會有蠻大的收穫,在這裡幫他宣傳一下!今天所說的案例呢,也是部分借鑒這本書的。今天和大家聊聊css變數和繼承!

有人會說,css怎麼會有變數和繼承?你是說的css處理器吧!

不是,我說的是純css,其實,css也在努力融入各種前置處理器的特性和寫法,甚至有些屬性比前置處理器更加強大,例如:


閑話少說,我們還是切入正題吧!

css變數

其實我說的變數,並非css處理器中的自訂變數,而是css某些屬性有類似變數的功能!

這個屬性就是currentColor

currentColor 的應用

1、鏤空圖片鏤空和currentColor


代碼如下:

.icon {
    display: inline-block;
    width: 16px; height: 20px;
    background-image: url(h/216/0y89gzo2/sprite_icons.png);
    background-color: currentColor; /* 該顏色控製圖標的顏色 */
}
.link:hover { color: #333; }/* 雖然改變的是文字顏色,但是表徵圖顏色也一起變化了 */

解釋: 預設表徵圖的背景顏色currentColor用的是link的顏色,link顏色改變時,表徵圖的背景顏色也隨著改變!

2、水平分割線和文本顏色保持一致,假如你所有的hr 顏色要和文本顏色保持一致,有了currentColor,可以如下寫

hr{height:.5em;background:currentColor}

假如你的文本顏色變了,hr也會自動變。

css繼承

繼承我們用的是inherit屬性

這個應用到時蠻多的,例如設定字型,表單的字型我們要和頁面其他部分相同,我們不用重複定於,只要繼承其他的就可以!

input,select,button{font:inherit}

超連結顏色與其他顏色相同,可以用:

a{color:inherit}

提示對話方塊的小箭頭,要和整體對話方塊一直,包括邊框和背景,我們可以用inherit

關於對話方塊,我前面文章也有關於css書寫對話方塊的 ,但是這種寫法對於對話方塊的邊框很難控制,看下下面的這個應用吧!


代碼如下:

.callout{position:relative;width:300px;height:200px;background-color:#ccc;border:1px solid red;}
.callout::before{content:"";position:absolute;top:-.4em;left:1em;padding:.35em;background:inherit;
border:inherit;border-right:0;border-bottom:0;transform:rotate(45deg);}//先寫一個正方形,然後旋轉45度變為三角形

例子

:root { --color: blue; }
div { --color: green; }
#alert { --color: red; }
* { color: var(--color); }
 
<p>I inherited blue from the root element!</p>
<div>I got green set directly on me!</div>
<div id='alert'>
  While I got red set directly on me!
  <p>I’m red too, because of inheritance!</p>
</div>

背景和邊框繼承callout,這樣寫起來更加方便了!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.