CSS之字體圖標(biāo) icon 的多種實(shí)現(xiàn)

什么是icon?讓我們先來看一個(gè)例子:
我們以簡書為例子续捂,圖中看到的用圓圈起來的部分都是icon

這個(gè)時(shí)候你就想問了垦垂,這不就是幾張圖片么?
不牙瓢,它不是圖片劫拗,而是文字
什么?矾克?這怎么可能是文字页慷,文字怎么會是這樣的?...

icon到底是什么

正如你所看到的聂渊,現(xiàn)在市面上大多數(shù)網(wǎng)頁使用的圖標(biāo)都是類似這樣的形式差购,也有不少icon圖標(biāo)庫可供我們使用
它的實(shí)現(xiàn)方式有:

  • image
  • CSS Sprites
  • Icon Font
  • SVG(目前來看,是最完美的)
  • CSS手寫icon(太麻煩汉嗽,而且自己做往往不好看(這時(shí)候你需要一個(gè)UI小姐姐的幫助))

為什么說現(xiàn)在大多數(shù)網(wǎng)頁里的圖標(biāo)是文字欲逃?

首先我們需要了解:
如何讓頁面展示一個(gè)圖標(biāo)呢?我們可以把圖標(biāo)當(dāng)成文字來操作饼暑,步驟如下:

  • 在頁面上放入該圖標(biāo)的 unicode 碼 (可以自己創(chuàng)建一個(gè))
  • 讓該元素使用我們自定義的字體
  • 字體對應(yīng)著我們自己創(chuàng)建的字體庫文件
  • 字體庫文件里有關(guān)于該 unicode 碼的外形描述

這里就要說到第一種方法:iconfont(阿里巴巴官方矢量圖標(biāo)庫

下面是具體用法范例稳析,大家可以一試:

<p>&#xe600;</p>
<style>
@font-face {
  font-family: 'iconfont';
  src:url('http://at.alicdn.com/t/font_1475388520_7015634.ttf') format('truetype')
}
                    
p{
  font-family: iconfont;
}  
</style>

或者

<span class="icon-qq"></span>
<style>
@font-face {
  font-family: "hello";
  src: url('//at.alicdn.com/t/font_1475388520_7015634.ttf') format('truetype')
}
.icon-qq:before { font-family:"hello";content: "\e600"; } 
</style>

CSS Sprites

CSS Sprites在國內(nèi)很多人叫css精靈(雪碧圖),是一種網(wǎng)頁圖片應(yīng)用處理方式弓叛。它允許你將一個(gè)頁面涉及到的所有零星圖片都包含到一張大圖中去彰居,這樣一來,當(dāng)訪問該頁面時(shí)撰筷,載入的圖片就不會像以前那樣一幅一幅地慢慢顯示出來了陈惰。對于當(dāng)前網(wǎng)絡(luò)流行的速度而言,不高于200KB的單張圖片的所需載入時(shí)間基本是差不多的毕籽,所以無需顧忌這個(gè)問題抬闯。

加速的關(guān)鍵,不是降低質(zhì)量关筒,而是減少個(gè)數(shù)溶握。傳統(tǒng)切圖講究精細(xì),圖片規(guī)格越小越好蒸播,重量越小越好睡榆,其實(shí)規(guī)格大小無所謂萍肆,計(jì)算機(jī)統(tǒng)一都按byte計(jì)算≌陀欤客戶端每顯示一張圖片都會向服務(wù)器發(fā)送請求塘揣。所以,圖片越多請求次數(shù)越多碉纳,造成延遲的可能性也就越大勿负。

  • 原理
    CSS Sprites其實(shí)就是把網(wǎng)頁中一些背景圖片整合到一張圖片文件中,再利用CSS的“background-image”劳曹,“background- repeat”奴愉,“background-position”的組合進(jìn)行背景定位,background-position可以用數(shù)字精確的定位出背景圖片的位置铁孵。

  • 優(yōu)點(diǎn)
    1.利用CSS Sprites能很好地減少網(wǎng)頁的http請求锭硼,從而大大的提高頁面的性能,這也是CSS Sprites最大的優(yōu)點(diǎn)蜕劝,也是其被廣泛傳播和應(yīng)用的主要原因檀头;
    2.CSS Sprites能減少圖片的字節(jié),曾經(jīng)比較過多次3張圖片合并成1張圖片的字節(jié)總是小于這3張圖片的字節(jié)總和岖沛。
    3.解決了網(wǎng)頁設(shè)計(jì)師在圖片命名上的困擾暑始,只需對一張集合的圖片上命名就可以了,不需要對每一個(gè)小元素進(jìn)行命名婴削,從而提高了網(wǎng)頁的制作效率廊镜。
    4.更換風(fēng)格方便,只需要在一張或少張圖片上修改圖片的顏色或樣式唉俗,整個(gè)網(wǎng)頁的風(fēng)格就可以改變嗤朴。維護(hù)起來更加方便。

  • 缺點(diǎn)
    誠然CSS Sprites是如此的強(qiáng)大虫溜,但是也存在一些不可忽視的缺點(diǎn)雹姊,如下:
    1.在圖片合并的時(shí)候,你要把多張圖片有序的合理的合并成一張圖片衡楞,還要留好足夠的空間吱雏,防止板塊內(nèi)出現(xiàn)不必要的背景;這些還好瘾境,最痛苦的是在寬屏歧杏,高分辨率的屏幕下的自適應(yīng)頁面,你的圖片如果不夠?qū)捈娜福苋菀壮霈F(xiàn)背景斷裂;
    2.CSS Sprites在開發(fā)的時(shí)候比較麻煩陨献,你要通過photoshop或其他工具測量計(jì)算每一個(gè)背景單元的精確位置盒犹,這是針線活,沒什么難度,但是很繁瑣急膀;
    3.CSS Sprites在維護(hù)的時(shí)候比較麻煩沮协,如果頁面背景有少許改動,一般就要改這張合并的圖片卓嫂,無需改的地方最好不要?jiǎng)涌对荩@樣避免改動更多的css,如果在原來的地方放不下晨雳,又只能(最好)往下加圖片行瑞,這樣圖片的字節(jié)就增加了,還要改動css餐禁。
    4.CSS Sprites非常值得學(xué)習(xí)和應(yīng)用血久,特別是頁面有一堆icon(圖標(biāo))“锓牵總之很多時(shí)候大家要權(quán)衡一下利弊氧吐,再決定是不是應(yīng)用CSS Sprites。

例子:

.bg_sprite{background-image:url(/整圖地址); background-repeat:no-repeat}

引用該類 .. 然后在元素中逐一定義背景坐標(biāo) .. 以下為關(guān)鍵屬性 ..

#ico1 {width:容器寬度;height:容器高度;background-position:X坐標(biāo) Y坐標(biāo)}
#ico2 {width:容器寬度;height:容器高度;background-position:X坐標(biāo) Y坐標(biāo)}
#ico3 {width:容器寬度;height:容器高度;background-position:X坐標(biāo) Y坐標(biāo)}
.nav {width:容器寬度;height:容器高度;background-position:X坐標(biāo) Y坐標(biāo)}

必須要限定容器大小符合背景圖元素位置 .. 另外 .. XY軸是相對于整張圖片的左上角來算的 .. 所以取值一定要算清楚末盔。

使用 image 實(shí)現(xiàn)

  • 注意事項(xiàng):
    img 的大小設(shè)置
    可以只設(shè)置寬度/高度筑舅,圖片會自適應(yīng)縮放
    img 的 vertical-align
  • 請求數(shù)過多
    因?yàn)槊恳粋€(gè)請求都是需要花時(shí)間去建立的,HTTP 1.1 時(shí)代陨舱,客戶端(瀏覽器)是慢的翠拣,但如果升級到了 HTTP 2,100個(gè)請求跟1個(gè)請求是差不了多少的
    在服務(wù)器端(server)隅忿,比如是用 php心剥、java 實(shí)現(xiàn)的后端,請求過多背桐,一般會導(dǎo)致線程過多优烧,或大或小都會產(chǎn)生一定的壓力
    另外,請求過多链峭,對網(wǎng)站流量也會有一定的影響畦娄,流量要要花錢的

CSS手寫icon

  • CSS 能畫圓,能畫方弊仪,為什么不能畫 icon熙卡?
  • 參考網(wǎng)站:CSS ICON
  • 兼容性:IE支持不太好,比如border-radius IE8-不支持

SVG

  • svg 可以作為圖像的地址直接傳入:<\img src="svg">励饵,但是這樣依然會造成請求數(shù)過多* 還可以使用 SVG "sprites"
  • google:npm svg sprites驳癌,看排名靠前的,比如 svg-sprite
  • 它是以標(biāo)簽的形式來組織所有的圖片的役听,移動端首選* 優(yōu)點(diǎn):可以方便的修改 icon 的大小颓鲜、顏色表窘,縮放沒有鋸齒
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市甜滨,隨后出現(xiàn)的幾起案子乐严,更是在濱河造成了極大的恐慌,老刑警劉巖衣摩,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昂验,死亡現(xiàn)場離奇詭異,居然都是意外死亡艾扮,警方通過查閱死者的電腦和手機(jī)既琴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栏渺,“玉大人呛梆,你說我怎么就攤上這事】恼铮” “怎么了填物?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長霎终。 經(jīng)常有香客問我滞磺,道長,這世上最難降的妖魔是什么莱褒? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任击困,我火速辦了婚禮,結(jié)果婚禮上广凸,老公的妹妹穿的比我還像新娘阅茶。我一直安慰自己,他們只是感情好谅海,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布脸哀。 她就那樣靜靜地躺著,像睡著了一般扭吁。 火紅的嫁衣襯著肌膚如雪撞蜂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天侥袜,我揣著相機(jī)與錄音蝌诡,去河邊找鬼。 笑死枫吧,一個(gè)胖子當(dāng)著我的面吹牛浦旱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播九杂,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼颁湖,長吁一口氣:“原來是場噩夢啊……” “哼代兵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爷狈,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裳擎,沒想到半個(gè)月后涎永,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹿响,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年羡微,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惶我。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妈倔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绸贡,到底是詐尸還是另有隱情盯蝴,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布听怕,位于F島的核電站捧挺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尿瞭。R本人自食惡果不足惜闽烙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望声搁。 院中可真熱鬧黑竞,春花似錦、人聲如沸疏旨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽充石。三九已至莫换,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骤铃,已是汗流浹背拉岁。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰爬,地道東北人喊暖。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像撕瞧,于是被迫代替她去往敵國和親陵叽。 傳聞我的和親對象是個(gè)殘疾皇子狞尔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明先生_x閱讀 15,968評論 3 119
  • 明天就是兒童節(jié)了巩掺,很多人都再曬童年的照片了吧偏序,想想我小時(shí)候作為瘦子界一顆冉冉升起的新星,但是后來有人跟我說胖替,...
    肖鯤閱讀 227評論 0 0
  • 想念你 湛藍(lán)的天空 那里的呼吸是那樣清新 想念你 故鄉(xiāng)的云 每一朵都活成了我想要的模樣 想念你 翠綠的山脈 我...
    江小昨閱讀 179評論 1 2
  • 在工作中有時(shí)往往會碰到耍小聰明的人研儒,他們會把自己的工作交給別人來做,又讓自己看起來很忙独令,卻不知道這種表現(xiàn)往往時(shí)間長...
    青島金獅DDM劉婷婷閱讀 209評論 0 0
  • 星耀小學(xué)四年五班吳圻親子共讀國學(xué)經(jīng)典閱讀《我要對自己負(fù)責(zé)》我堅(jiān)持端朵、我讀書、我收獲燃箭、我快樂……
    昊圻閱讀 153評論 0 0