css content 如何自訂產生表徵圖?

來源:互聯網
上載者:User

標籤:格式   raw   font-face   mbed   向量   它的   是你   data   url   

僅愚
連結:https://www.zhihu.com/question/22022905/answer/20585820
來源:知乎
著作權歸作者所有,轉載請聯絡作者獲得授權。

  1. :before(或:after)是什麼玩意?
答:虛擬元素(注意,不是偽類)。
它雖然被收錄到css3標準中,但其實主流瀏覽器都已經支援虛擬元素了,這其中包括了IE8+。
虛擬元素實際上在html dom中不存在,但會被瀏覽器渲染成html的一個節點,比如題主提到的#twitter:before,就是在#twitter這個標籤裡的開始處插入了一個子項目(節點),同理,:after是在該元素的最後插入子項目,它與以下html具有相同的效果:
<div id="twitter">    <span></span><!-- 或者一個div -->     .....</div>

虛擬元素與一個CSS屬性息息相關,就是content,顧名思義,這是定義虛擬元素內容的,如:
#twitter:before{       display:inline;       content:‘我是個虛擬元素‘;       }

相當於:
<div id="twitter">     <span>我是個虛擬元素</span>      ..... </div>

最廣泛的應用大概是這樣的:

剩下的小問題容我吃完飯來說。

==============

2.‘\f33f’是如何被顯示為表徵圖的?

答:
這裡用到了WebFont,也就是一種“字型”,這種字型包含了向量表徵圖,諸如 ‘\f33f’就是對應向量表徵圖的編碼。
你這段代碼並不全,css裡應該還包含這段:
@font-face {font-family: ‘XXX‘; /* 給你的自訂WebFont命名 */src:url(‘xxx.eot‘);src:url(‘xxx.eot?#iefix‘) format(‘embedded-opentype‘),url(‘xxx.woff‘) format(‘woff‘),url(‘xxxn.ttf‘) format(‘truetype‘),url(‘xxx.svg#micon‘) format(‘svg‘);font-weight: normal;font-style: normal;...}


它的好處是不必再使用css spirit切圖了,而且作為向量圖可以以任意你想要的尺寸顯示,另外,這種方法相容性很好(ie6 7 可以顯示,前提是你為不同的瀏覽器準備了不同的字型檔格式,如eot、woff、ttf、svg)。
如何製作它?請參見@朱勃 的答案,已經很詳細了,不再贅述。

3.直接將icon的unicode寫在html上不就成了,為什麼還得費勁加虛擬元素:before呢?

答:
從這段代碼看,你知道‘\f309‘、‘\f33f‘分別代表的是哪些表徵圖嗎?
別說你看不出來,即使WebFont的作者也看不出來啊,這些unicode編碼顯然不如html的class或者id語義化。如果在一個大型網站上多處複用這些font icon,那是相當要命的(每用一次就去查一查?),因此,就出現了一種題主展示的解決方案:

HTML:
<i class="icon icon_open"></i>

CSS:

@font-face{font-family: ‘MyFont‘; /* 給你的自訂WebFont命名 */src:url(‘xxx.eot‘);src:url(‘xxx.eot?#iefix‘) format(‘embedded-opentype‘),url(‘xxx.woff‘) format(‘woff‘),url(‘xxxn.ttf‘) format(‘truetype‘),url(‘xxx.svg#micon‘) format(‘svg‘);font-weight: normal;font-style: normal;        ...}.icon{        font-family: ‘MyFont‘;        speak:none; /* 無障礙閱讀所需要的,告訴螢幕助讀程式不要讀這個字元 */        font-size:14px;        font-variant:normal;        font-weight:normal;        text-transform: none;        ...}.icon_open:before{        content:"\f001"; /* 相應表徵圖的編碼 */        ...}

然後你只要在任何你想使用該表徵圖的地方插入HTML即可:
<nav>      <a href="open.html"><i class="icon icon_open"></i>Open</a></nav>



轉自:https://www.zhihu.com/question/22022905

css content 如何自訂產生表徵圖?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.