CSS基礎(chǔ)學(xué)習(xí)第七天

1. 精靈圖(重點(diǎn))

1.1 為什么需要精靈圖

一個(gè)網(wǎng)頁(yè)中往往會(huì)應(yīng)用很多小的背景圖像作為修飾,當(dāng)網(wǎng)頁(yè)中的圖像過(guò)多時(shí),服務(wù)器就會(huì)頻繁地接收和發(fā)送請(qǐng)求圖片,造成服務(wù)器請(qǐng)求壓力過(guò)大,這將大大降低頁(yè)面的加載速度。

為什么使用精靈圖(目的):

為了有效地減少服務(wù)器接收和發(fā)送請(qǐng)求的次數(shù),提高頁(yè)面的加載速度,出現(xiàn)了 CSS 精靈技術(shù)(也稱 CSS Sprites、CSS 雪碧)。

核心原理

將網(wǎng)頁(yè)中的一些小背景圖像整合到一張大圖中 ,這樣服務(wù)器只需要一次請(qǐng)求就可以了。

1.2 精靈圖(sprites)的使用

使用精靈圖核心:

  1. 精靈技術(shù)主要針對(duì)于背景圖片使用。就是把多個(gè)小背景圖片整合到一張大圖片中。
  2. 這個(gè)大圖片也稱為 sprites 精靈圖 或者 雪碧圖
  3. 移動(dòng)背景圖片位置, 此時(shí)可以使用 background-position 。
  4. 移動(dòng)的距離就是這個(gè)目標(biāo)圖片的 x 和 y 坐標(biāo)。注意網(wǎng)頁(yè)中的坐標(biāo)有所不同
  5. 因?yàn)橐话闱闆r下都是往上往左移動(dòng),所以數(shù)值是負(fù)值。
  6. 使用精靈圖的時(shí)候需要精確測(cè)量,每個(gè)小背景圖片的大小和位置。

使用精靈圖核心總結(jié):

  1. 精靈圖主要針對(duì)于小的背景圖片使用。

  2. 主要借助于背景位置來(lái)實(shí)現(xiàn)---background-position 。

  3. 一般情況下精靈圖都是負(fù)值。(千萬(wàn)注意網(wǎng)頁(yè)中的坐標(biāo): x軸右邊走是正值,左邊走是負(fù)值, y軸同理。)

2. 字體圖標(biāo)

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

字體圖標(biāo)使用場(chǎng)景: 主要用于顯示網(wǎng)頁(yè)中通用、常用的一些小圖標(biāo)。

精靈圖是有諸多優(yōu)點(diǎn)的,但是缺點(diǎn)很明顯。

1.圖片文件還是比較大的。

2.圖片本身放大和縮小會(huì)失真。

3.一旦圖片制作完畢想要更換非常復(fù)雜。

此時(shí),有一種技術(shù)的出現(xiàn)很好的解決了以上問(wèn)題,就是字體圖標(biāo) iconfont

字體圖標(biāo)可以為前端工程師提供一種方便高效的圖標(biāo)使用方式,展示的是圖標(biāo),本質(zhì)屬于字體。

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

輕量級(jí):一個(gè)圖標(biāo)字體要比一系列的圖像要小。一旦字體加載了,圖標(biāo)就會(huì)馬上渲染出來(lái),減少了服務(wù)器請(qǐng)求

  • 靈活性:本質(zhì)其實(shí)是文字,可以很隨意的改變顏色、產(chǎn)生陰影、透明效果、旋轉(zhuǎn)等
  • 兼容性:幾乎支持所有的瀏覽器,請(qǐng)放心使用
  • 注意: 字體圖標(biāo)不能替代精靈技術(shù),只是對(duì)工作中圖標(biāo)部分技術(shù)的提升和優(yōu)化。

總結(jié):

1.如果遇到一些結(jié)構(gòu)和樣式比較簡(jiǎn)單的小圖標(biāo),就用字體圖標(biāo)。

2.如果遇到一些結(jié)構(gòu)和樣式復(fù)雜一點(diǎn)的小圖片,就用精靈圖。

使用步驟

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

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

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

3.字體圖標(biāo)的追加 (以后添加新的小圖標(biāo))

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

推薦下載網(wǎng)站:

IcoMoon 成立于 2011 年,推出了第一個(gè)自定義圖標(biāo)字體生成器,它允許用戶選擇所需要的圖標(biāo),使它們成一字型。該字庫(kù)內(nèi)容種類繁多,非常全面,唯一的遺憾是國(guó)外服務(wù)器,打開(kāi)網(wǎng)速較慢。

這個(gè)是阿里媽媽 M2UX 的一個(gè) iconfont 字體圖標(biāo)字庫(kù),包含了淘寶圖標(biāo)庫(kù)和阿里媽媽圖標(biāo)庫(kù)??梢允褂?AI制作圖標(biāo)上傳生成。 重點(diǎn)是,免費(fèi)!

2.4 字體圖標(biāo)的引入

下載完畢之后,注意原先的文件不要?jiǎng)h,后面會(huì)用。

  1. 把下載包里面的 fonts 文件夾放入頁(yè)面根目錄下
  • 字體文件格式

不同瀏覽器所支持的字體格式是不一樣的,字體圖標(biāo)之所以兼容,就是因?yàn)榘酥髁鳛g覽器支持的字體文件。

1).TureType( .ttf )格式.ttf字體是Windows和Mac的最常見(jiàn)的字體,支持這種字體的瀏覽器有IE9+、Firefox3.5+、Chrome4+、Safari3+、Opera10+、iOS Mobile、Safari4.2+;

2).Web Open Font Format( .woff )格式woff字體,支持這種字體的瀏覽器有IE9+、Firefox3.5+、Chrome6+、Safari3.6+、Opera11.1+;

3).Embedded Open Type( .eot )格式.eot字體是IE專用字體,支持這種字體的瀏覽器有IE4+;

4).SVG( .svg )格式.svg字體是基于SVG字體渲染的一種格式,支持這種字體的瀏覽器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+;

2.在 CSS 樣式中全局聲明字體: 簡(jiǎn)單理解把這些字體文件通過(guò)css引入到我們頁(yè)面中。

一定注意字體文件路徑的問(wèn)題

 @font-face {
   font-family: 'icomoon';
   src:  url('fonts/icomoon.eot?7kkyc2');
   src:  url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
     url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
     url('fonts/icomoon.woff?7kkyc2') format('woff'),
     url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
   font-weight: normal;
   font-style: normal;
 }

  1. html 標(biāo)簽內(nèi)添加小圖標(biāo)。
  1. 給標(biāo)簽定義字體。
 span {
   font-family: "icomoon";
 }

注意:務(wù)必保證 這個(gè)字體和上面@font-face里面的字體保持一致

2.5 字體圖標(biāo)的追加

如果工作中,原來(lái)的字體圖標(biāo)不夠用了,我們需要添加新的字體圖標(biāo)到原來(lái)的字體文件中。

把壓縮包里面的 selection.json 從新上傳,然后選中自己想要新的圖標(biāo),從新下載壓縮包,并替換原來(lái)的文件即可。

3. CSS 三角

3.1 介紹

網(wǎng)頁(yè)中常見(jiàn)一些三角形,使用 CSS 直接畫(huà)出來(lái)就可以,不必做成圖片或者字體圖標(biāo)。

 div {
    width: 0; 
    height: 0;
    border: 50px solid transparent;
    border-color: red green blue black;
    line-height:0;
    font-size: 0;
 }
  1. 我們用css 邊框可以模擬三角效果
  2. 寬度高度為0
  3. 我們4個(gè)邊框都要寫(xiě), 只保留需要的邊框顏色,其余的不能省略,都改為 transparent 透明就好了
  4. 為了照顧兼容性 低版本的瀏覽器,加上 font-size: 0; line-height: 0;

4. CSS 用戶界面樣式

什么是界面樣式

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

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

4.1 鼠標(biāo)樣式 cursor

 li {
    cursor: pointer; 
 }

設(shè)置或檢索在對(duì)象上移動(dòng)的鼠標(biāo)指針采用何種系統(tǒng)預(yù)定義的光標(biāo)形狀。

4.2 輪廓線 outline

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

 input {
    outline: none; 
 }

4.3 防止拖拽文本域 resize

實(shí)際開(kāi)發(fā)中,我們文本域右下角是不可以拖拽的。

 textarea{ 
    resize: none;
 }

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

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

CSS 的 vertical-align 屬性使用場(chǎng)景: 經(jīng)常用于設(shè)置圖片或者表單(行內(nèi)塊元素)和文字垂直對(duì)齊。

官方解釋: 用于設(shè)置一個(gè)元素的垂直對(duì)齊方式,但是它只針對(duì)于行內(nèi)元素或者行內(nèi)塊元素有效。

語(yǔ)法:

vertical-align : baseline | top | middle | bottom 

5.1 圖片、表單和文字對(duì)齊

圖片、表單都屬于行內(nèi)塊元素,默認(rèn)的 vertical-align 是基線對(duì)齊。

此時(shí)可以給圖片、表單這些行內(nèi)塊元素的 vertical-align 屬性設(shè)置為 middle 就可以讓文字和圖片垂直居中對(duì)齊了。

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

bug:圖片底側(cè)會(huì)有一個(gè)空白縫隙,原因是行內(nèi)塊元素會(huì)和文字的基線對(duì)齊。

主要解決方法有兩種:

1.給圖片添加 vertical-align:middle | top| bottom 等。 (提倡使用的)

2.把圖片轉(zhuǎn)換為塊級(jí)元素 display: block;

6. 溢出的文字省略號(hào)顯示

6.1 單行文本溢出顯示省略號(hào)

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

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

6.2 多行文本溢出顯示省略號(hào)(了解)

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

/*1. 超出的部分隱藏 */
overflow: hidden;

/*2. 文字用省略號(hào)替代超出的部分 */
text-overflow: ellipsis;

/* 3. 彈性伸縮盒子模型顯示 */
display: -webkit-box;

/* 4. 限制在一個(gè)塊元素顯示的文本的行數(shù) */
-webkit-line-clamp: 2;

/* 5. 設(shè)置或檢索伸縮盒對(duì)象的子元素的排列方式 */
-webkit-box-orient: vertical;

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

7. 常見(jiàn)布局技巧

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

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

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

1.讓每個(gè)盒子margin 往左側(cè)移動(dòng) -1px 正好壓住相鄰盒子邊框

2.鼠標(biāo)經(jīng)過(guò)某個(gè)盒子的時(shí)候,提高當(dāng)前盒子的層級(jí)即可(如果沒(méi)有有定位,則加相對(duì)定位(保留位置),如果有定位,則加z-index)

巧妙運(yùn)用浮動(dòng)元素不會(huì)壓住文字的特性

頁(yè)碼在頁(yè)面中間顯示:

  1. 把這些鏈接盒子轉(zhuǎn)換為行內(nèi)塊, 之后給父級(jí)指定 text-align:center;
  2. 利用行內(nèi)塊元素中間有縫隙,并且給父級(jí)添加 text-align:center; 行內(nèi)塊元素會(huì)水平會(huì)居中

8. CSS 初始化

不同瀏覽器對(duì)有些標(biāo)簽的默認(rèn)值是不同的,為了消除不同瀏覽器對(duì)HTML文本呈現(xiàn)的差異,照顧瀏覽器的兼容,我們需要對(duì)CSS 初始化

簡(jiǎn)單理解: CSS初始化是指重設(shè)瀏覽器的樣式。 (也稱為CSS reset)

每個(gè)網(wǎng)頁(yè)都必須首先進(jìn)行 CSS初始化。

Unicode編碼字體:

把中文字體的名稱用相應(yīng)的Unicode編碼來(lái)代替,這樣就可以有效的避免瀏覽器解釋CSS代碼時(shí)候出現(xiàn)亂碼的問(wèn)題。
·

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

相關(guān)閱讀更多精彩內(nèi)容

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