CSS高級技巧(字體圖標(biāo)、精靈圖、三角)

  • 能夠使用精靈圖
  • 能夠使用字體圖標(biāo)
  • 能夠?qū)懗鯟SS三角
  • 能夠?qū)懗龀R姷腃SS用戶界面樣式
  • 能夠說出常見的布局技巧

1. 精靈圖

  1. 為什么需要精靈圖?
    一個(gè)網(wǎng)頁中往往會應(yīng)用很多小的背景圖作為修飾,當(dāng)網(wǎng)頁中圖像過多時(shí),服務(wù)器就會頻繁地接收和發(fā)送請求圖片,造成服務(wù)器請求壓力過大,這將大大降低頁面的加載速度。
    因此,為了有效地減少服務(wù)器接收和發(fā)送請求的次數(shù),提高頁面的加載速度,出現(xiàn)了CSS精靈技術(shù)(也稱CSS Sprites、CSS雪碧)。
    精靈技術(shù)的目的
    有效地減少服務(wù)器接收和發(fā)送請求的次數(shù),提高頁面的加載速度。

1.2 精靈圖(sprites)的使用

使用精靈圖核心:

  1. 精靈技術(shù)主要針對背景圖片使用。就是把多個(gè)小背景圖片整合到一張大圖片中。
  2. 這個(gè)大圖也稱為sprites精靈圖或者雪碧圖
  3. 移動背景圖片位置,此時(shí)可以使用background-position。
  4. 移動的距離就是這個(gè)目標(biāo)圖片的X和Y坐標(biāo)。注意網(wǎng)頁中的坐標(biāo)有所不同。
  5. 因?yàn)橐话闱闆r下都是往上往左移動,所以數(shù)值是負(fù)值。
  6. 使用精靈圖的時(shí)候需要精準(zhǔn)測量,每個(gè)小背景圖片的大小和位置。
    使用精靈圖核心總結(jié):
  7. 精靈圖主要針對于小的背景圖片使用。
  8. 主要借助于背景位置來實(shí)現(xiàn)—background-position.
  9. 一般情況下精靈圖都是負(fù)值。(

2. 字體圖標(biāo)

2.1 字體圖標(biāo)的產(chǎn)生

字體圖標(biāo)使用場景:主要用于顯示網(wǎng)頁中通用、常用的一些小圖標(biāo)。
精靈圖是有諸多優(yōu)點(diǎn)的,但是缺點(diǎn)很明顯。

  1. 圖片文件比較大。
  2. 圖片本身放大縮小會失真
  3. 一旦圖片制作完畢想要更換非常復(fù)雜。

通過字體圖標(biāo)(iconfont)技術(shù),可以很好地解決以上問題。
字體圖標(biāo)可以為前端工程師提供一種高效地圖標(biāo)使用方式,展示的是圖標(biāo),本質(zhì)屬于字體。

2.2 字體圖標(biāo)的優(yōu)點(diǎn)

  • 輕量級:一個(gè)圖標(biāo)字體要比一系列的圖像要小。一旦字體加載了,圖標(biāo)就會馬上渲染出來,減少了服務(wù)器請求。
  • 靈活性:本質(zhì)其實(shí)是文字,可以很隨意的改變顏色、產(chǎn)生陰影、透明效果、旋轉(zhuǎn)等。
  • 兼容性:幾乎支持所有的瀏覽器,請放心使用。
    注意:字體圖標(biāo)不能替代精靈技術(shù),只是對工作中圖標(biāo)部分技術(shù)的提升和優(yōu)化。

總結(jié):

  1. 如果遇到一些結(jié)構(gòu)和樣式比較簡單的小圖標(biāo),就用字體圖標(biāo)。
  2. 如果遇到一些結(jié)構(gòu)和樣式復(fù)雜一點(diǎn)的小圖片,就用精靈圖。

2.3字體圖標(biāo)的使用

字體圖標(biāo)是一些網(wǎng)頁常見的小圖標(biāo),我們直接網(wǎng)上下載即可。因此使用可以分為:

  1. 字體圖標(biāo)的下載
  2. 字體圖標(biāo)的引入(引入到我們html頁面中)


  • 打開css文件


  • 復(fù)制開頭文件到被引入的html文件中,注意文件路徑
  1. 字體圖標(biāo)的追加(以后添加新的小圖標(biāo))
    可以將selection.json上傳到icomoon當(dāng)中,就可以在保留已有字體圖標(biāo)的基礎(chǔ)上進(jìn)行添加。

字體圖標(biāo)的下載

  • icomoon字庫 http://icomoon.io
    成立于2011年,推出了第一個(gè)自定義圖標(biāo)生成器,它允許用戶選擇所需要的圖標(biāo),使它們成一字型。該字庫內(nèi)容種類繁多,非常全面,唯一遺憾就是國外服務(wù)器,打開網(wǎng)速慢。
  • 阿里 iconfont字庫 http://www.iconfont.cn
    包含了淘寶圖標(biāo)和阿里媽媽圖標(biāo)庫??梢允褂肁I制作圖標(biāo)上傳生成。

3. 等腰三角形

  1. 設(shè)置width:0;heigt:0;
  2. 設(shè)置邊框,大小為所需三角形的高,顏色設(shè)置為透明:transparent
  3. 根據(jù)所需三角形的方向覆蓋設(shè)置邊框,顏色。

4. CSS用戶界面樣式

4.0 什么是界面樣式

所謂界面樣式,就是更改一些用戶操作樣式,以便提高更好的用戶體驗(yàn)。

  • 更改用戶的鼠標(biāo)樣式
  • 表單輪廓
  • 防止文本域拖拽

4.1 鼠標(biāo)樣式cursor

li { cursor:pointer;}
設(shè)置或檢索在對象上移動的鼠標(biāo)指針采用何種系統(tǒng)預(yù)定義的光標(biāo)形狀。

  • default : 小白 默認(rèn)
  • pointer : 小手
  • move : 移動
  • text : 文本
  • not-allowed : 禁止

4.2 輪廓線 outline

給表單添加outline:0;或者outline:none;樣式之后,就可以去掉默認(rèn)的藍(lán)色邊框。
input{ outline: none; }

4.3 防止文本域拖拽

用<textarea>標(biāo)簽的表單域默認(rèn)右下角可以拖拽表單域,這時(shí)候需要添加
resize:none
就可以防止文本域的拖拽了;同時(shí)它也有輪廓線,也可以用outline:none;去掉。
注意:文本域標(biāo)簽
<textarea name="" id="" cols="30" rows="10"></textarea>
盡量放在一行書寫,如果轉(zhuǎn)行,文本域就會出現(xiàn)空白行。

5. vertical-align 屬性應(yīng)用

CSS的vertical-align屬性使用場景:經(jīng)常用于設(shè)置圖片或者表單(行內(nèi)塊元素)和文字垂直對齊。
官方解釋:用于設(shè)置一個(gè)元素的垂直對齊方式,但是它只針對于行內(nèi)元素或者行內(nèi)塊元素有效。
語法:
vertical-align : baseline | top | middle | bottom

  • baseline : 默認(rèn)。元素放置在父元素的基線上。
  • top : 把元素的頂端與行中最高的元素的頂端對齊。
  • middle : 把此元素放置在父元素的中部。
  • bottom : 把元素的頂端與行中最低的元素的頂端對齊。


5.2 解決圖片底部默認(rèn)空白縫隙問題

bug:圖片底側(cè)會有一個(gè)空白縫隙,原因是行內(nèi)塊元素會和文字基線對齊。
主要解決方法有兩種:

  1. 給圖片添加vertical-align:middle|top|bottom等。(提倡使用)
  2. 把圖片轉(zhuǎn)換為塊級元素:display:block;

6. 溢出的文字省略號顯示

  • 單行文本溢出顯示省略號
  • 多行文本溢出顯示省略號

6.1 單行文本溢出顯示省略號--必須滿足三個(gè)條件

  1. 先強(qiáng)制一行內(nèi)顯示文本
    white-space:nowrap;(默認(rèn) normal 自動換行)
  2. 超出的部分隱藏
    overflow:hidden;
  3. 文字用省略號替代超出的部分
    text-overflow:ellipsis;

6.2 多行文本溢出顯示省略號

多行文本溢出顯示省略號,有較大兼容性問題,適合于webkit瀏覽器或移動端(移動端大部分是wbkit內(nèi)核)

  overflow:hidden;
            text-overflow:ellipsis;
            /*彈性伸縮盒子模型顯示*/
            display:-webkit-box;
            /*限制在一個(gè)塊元素顯示的文本的行數(shù)*/
            -webkit-line-clamp: 2;
            /*設(shè)置或檢索伸縮盒對象的子元素排列方式*/
            -webkit-box-orient:vertical;

更推薦讓后臺人員來做這個(gè)效果,因?yàn)楹笈_人員可以設(shè)置顯示多少個(gè)字,操作更簡單。

7. 常見布局技巧

巧妙利用一個(gè)技術(shù)更快更好的布局:

  1. margin負(fù)值的運(yùn)用
  2. 文字圍繞浮動元素
  3. 行內(nèi)塊的巧妙運(yùn)用
  4. css三角強(qiáng)化

7.1 margin負(fù)值的運(yùn)用

  1. 讓每個(gè)盒子margin往左側(cè)移動 -1px 正好壓住相鄰盒子邊框
  2. 鼠標(biāo)經(jīng)過某個(gè)盒子的時(shí)候,提高當(dāng)前盒子的層級即可(如果沒有定位,則加相對定位(保留位置),如果有定位,則加z-index)

7.2 文字圍繞浮動元素

利用浮動文字會圍繞元素的原理,在盒子中直接添加文字,然后給對應(yīng)的圖片等塊元素添加浮動,文字就會自動圍繞元素。

7.3 行內(nèi)塊巧妙運(yùn)用

行內(nèi)塊元素可以設(shè)置text-align來進(jìn)行居中顯示。

7.4 三角巧妙運(yùn)用

當(dāng)我們需要做出一個(gè)直角三角形,同樣可以用邊框來實(shí)現(xiàn):

  1. 給其他邊框透明,所需方向邊框顏色
  2. 樣式設(shè)置為solid
  3. 將上/下邊框調(diào)大,左右邊框調(diào)小
    例:


    直角三角形
.box1{
            width: 0;
            height: 0;
            /*把上邊框?qū)挾日{(diào)大*/
            /*border-top: 100px solid transparent;*/
            /*border-right: 50px solid skyblue;*/
            /*左邊和下邊的邊框?qū)挾仍O(shè)置為0*/

            /*1. 只保留右邊的邊框有顏色*/
            border-color: transparent red transparent transparent;
            /*2. 樣式都是solid*/
            border-style: solid;
            /*3. 上邊框?qū)挾纫?,右邊?寬度稍小, 其余邊框改為0*/
            border-width: 100px 50px 0 0;
        }

同時(shí)也可以只設(shè)置上邊框和右邊框,同樣可行,如下:

 border-top: 100px solid transparent;
            border-right: 50px solid skyblue;

8. 初始化

不同瀏覽器對有些標(biāo)簽的默認(rèn)值是不同的,為了消除不同瀏覽器對html文本呈現(xiàn)的差異,照顧瀏覽器的兼容,我們需要對CSS初始化。
簡單理解:CSS初始化是指重設(shè)瀏覽器的樣式。(也稱為CSS reset)
每個(gè)網(wǎng)頁都必須首先進(jìn)行CSS初始化。
這里我們以 京東CSS初始化代碼為例。

Unicode編碼字體:

把中文字體的名稱用相應(yīng)的Unicode編碼來替代,這樣就可以有效的避免瀏覽器解釋CSS代碼時(shí)候出現(xiàn)亂碼的問題。
比如:
黑體\9ED1\4F53
宋體\5B8B\4F53
微軟雅黑\5FAE\8F6F\96C5\9ED1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容