任務9-CSS常見技巧

課程目標

  • 熟悉常見的樣式寫法,如背景圖片、居中、透明等

學習建議

問答題一定要動手寫 demo ,否則學習效果只能達到5成

課程任務

1. CSS Sprite(雪碧圖|精靈圖)指什么?有什么作用

雪碧圖被運用在眾多使用了很多小圖標的網(wǎng)站上。相對于把每張小圖標以.png格式文件的形式引用到頁面上,使用雪碧圖只需要引用一張圖片,對內(nèi)存和帶寬更加友好。

把多張圖片拼到一張圖中。把小圖標放在同一張圖片文件里,通過 background-position 顯示那張圖片文件的不同位置,以減少 HTTP 請求的數(shù)量。(sprites 適用于 icon 級的小圖片。)

雪碧圖簡單總結(jié):

優(yōu)勢

  • 減少 HTTP 請求數(shù)
  • 可以是任意圖形,也可以是任意色彩
  • 兼容性極好(位于位圖的 Sprites 兼容性都非常的好,但對于 SVG 的 Sprites,還是受到瀏覽器的限制,最起碼要支持 SVG 的瀏覽器才能得到支持)

劣勢

  • 增加開發(fā)時間,需要人肉或通過相關(guān)工具,將零散的圖形合并到一起,而不同的合并方式,圖形的色彩對 Web 的性能有直接的影響
  • 增加維護成本,要增加新的圖標合成進來,是件較難的事情,甚至直接會影響到前面定位好的圖片。目前為止,使用自動編譯工具,相對比人肉處理要理想一些
  • 圖片尺寸固定,在位圖的 Sprites 中無法通過 CSS 來修改圖標的大小,但在 SVG 的 Sprites 中可以配合CSS 的 background-size 調(diào)整圖標的大小
來個demo
icon1.png
icon2.jpeg
icon3.png

在線工具合并:
result.png

代碼:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Sprites-demo</title>
    <style media="screen">
        .icon {
            width: 225px;
            height: 225px;
            background: url(result.png) no-repeat;
            border: 1px solid red;
        }
        .s1 {
            background-position: 0px 0px;
        }
        .s2 {
            background-position: 0px -235px;
        }
        .s3 {
            background-position: 0px -470px;
        }
        /*
        下,右,都是負。
        */
    </style>
</head>
<body>
    <div class="icon s1"></div>
    <div class="icon s2"></div>
    <div class="icon s3"></div>
</body>
</html>

在瀏覽器上
demo.png
拓展閱讀:
  1. Web中的圖標
  2. CSS Sprite雪碧圖應用
  3. 幾種合成雪碧圖工具

2. img 標簽和 CSS 背景使用圖片在使用場景上有何區(qū)別

對于固定不變的內(nèi)容,如圖標等用背景圖。(不可點擊的)

對于可變的內(nèi)容,圖片是和內(nèi)容相關(guān)的,用圖片。(可點擊的,跳轉(zhuǎn)到別的頁面)
例如,用戶頭像(可變的),網(wǎng)站logo(可點擊的)等。

注意:padding 有背景色,margin 沒有。
就是 border 里面有顏色,外面沒有顏色。

  • 行內(nèi)元素上下 padding 雖然不會占位,但是設了背景顏色,依然可以看見上下 padding 有顏色。(所以行內(nèi)元素最好不要直接用 padding ,而改用 padding-left 和 padding-right。-- 除非給這個行內(nèi)元素加 block 或者 inline-block。)行內(nèi)元素設置不了 height。
  • 塊級元素可以設置 width, height, margin, padding 。而行內(nèi)元素不可以設置上下 margin padding 以及 width height。
拓展閱讀

CSS 最核心的幾個概念

3. titlealt 屬性分別有什么作用?

title 屬性規(guī)定關(guān)于元素的額外信息。這些信息通常會在鼠標移到元素上時顯示“提示文本”。

alt 屬性規(guī)定圖像無法顯示時的替代文本。

4. background: url(abc.png) 0 0 no-repeat; 這句話是什么意思

選用當前目錄下的 abc.png 充當背景圖片,在瀏覽器左上角顯示,不重復。

5. background-size 有什么作用?兼容性如何?常用的值是?

background-size 用來指定背景圖片的大小。屬于 CSS3 的屬性。

常用值有:length(px)、percentage(%)、cover、contain

其中,cover 會讓背景鋪滿容器(調(diào)整背景圖片的寬度或高度(較小者),以鋪滿整個容器。而且還會保持背景圖片的寬高比。)

contain 會讓容器包含整個背景圖片(調(diào)整背景圖片的寬度或高度(較大者),令背景圖片全部包含在元素中。同時還會保持背景圖片的寬高比。)

來個 demo

無論 cover 還是 contain,都會保持寬高比

原始大小-128px-128px.png

這是圖片的原始大?。?28px-128px

當background: cover;

.img-wrap {
            width: 128px;
            height: 50px;
            border: 1px solid red;
            background-image: url(http://www.w3school.com.cn/i/eg_smile.gif);
            background-size: cover;
        }
cover.png

可以看出,cover 為了讓背景圖片鋪滿容器,圖片下半部分"不得不"沒了。

當background: contain;

.img-wrap {
            width: 128px;
            height: 50px;
            border: 1px solid red;
            background-image: url(http://www.w3school.com.cn/i/eg_smile.gif);
            background-size: contain;
        }
contain.png

可以看出,當容器變小時,contain 為了讓容器包含整個背景圖片而調(diào)整圖片的寬高,使之整體變小,且會出現(xiàn)重復背景圖片。


cover 會讓圖片鋪滿容器而不去考慮圖片是否能完整展示;
contain 優(yōu)先考慮展現(xiàn)圖片而不去考慮圖片是否會重復。
而且兩者都會保持原始圖片的寬高比!

總結(jié):結(jié)合「容器寬高」和「圖片的寬高」以及 「cover 和 contain 都會保持圖片寬高比這個特性」,可以很快得出 cover 和 contain 在不同條件下會如何展示背景圖片。

拓展閱讀:
  1. 通俗cover-contain.demo
  2. w3cplus.background-size

6. 如何讓一個 div 水平居中?如何讓圖片水平居中

讓 div(塊級元素)水平居中可以設置兩邊 margin 為 auto。

讓 img(行內(nèi)元素)水平居中可以設置 text-align: center;

來個demo
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>div-img-"水平居中"</title>
    <style media="screen">
        .test {
            width: 500px;
            height: 300px;
            border: 1px solid red;
            margin: 0 auto;
            /*塊級元素居中*/

            text-align: center;
            /*行內(nèi)元素居中*/
        }
    </style>
</head>
<body>
    <div class="test">
        <img src="icon1.png" alt="icon" />
    </div>
</body>
</html>
居中.png

7. 如何設置元素透明?兼容性?

opacity,指定不透明度。從 0.0(完全透明)到 1.0 (完全不透明)

主流瀏覽器都支持這個特性(IE8以上)。

caniuse-opacity兼容性

8. opacityrgba 都能設置透明,有什么區(qū)別

簡單來說,opacity 會讓子元素也變成半透明。
ragb 方式只會對該元素有效,不會影響到子元素。

來個 demo
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>opacity-rgba</title>
    <style media="screen">
        .opacity,.rgba {
            width: 500px;
            height: 400px;
            margin: 0 auto;
            border: 1px solid red;
            text-align: center;
            display: table-cell;
            vertical-align: middle;
            font-size: 30px;
        }
        .opacity {
            background-color: red;
            opacity: 0.5;
        }
        .rgba {
            background-color: rgba(255,0,0,0.5);
        }
    </style>
</head>
<body>
    <div class="opacity">
        opacity不僅會對該元素有效,而且還會影響到子元素
    </div>
    <div class="rgba">
        rgba只會對該元素有效
    </div>
</body>
</html>
opacityVSrgba.png

opacity里面的字都變透明了,額,對比很明顯。

代碼
代碼1預覽
代碼2預覽
代碼3預覽

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

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

  • 1、CSS Sprite(雪碧圖|精靈圖)指什么? 有什么作用 簡介CSS Sprites(雪碧圖|精靈圖)是一種...
    _hello__world_閱讀 345評論 0 0
  • 2016/05/18 @hunger 說: CSS Sprite(雪碧圖|精靈圖)指什么? 有什么作用 主要是指將...
    嘿菠蘿閱讀 322評論 0 0
  • 一、CSS Sprite(雪碧圖|精靈圖)指什么? 有什么作用? 1.雪碧圖是把頁面中需要用到的若干小圖標集合在一...
    咩咩咩1024閱讀 269評論 0 0
  • CSS Sprite(雪碧圖|精靈圖)指什么? 有什么作用? 為了提高網(wǎng)頁的性能,減少加載次數(shù)(減少http請求次...
    咸吧閱讀 351評論 0 0
  • 1.CSS Sprite(雪碧圖|精靈圖)指什么? 有什么作用 雪碧圖指的是把一個網(wǎng)頁上需要用到的多張圖片整合到一...
    饑人谷_kule閱讀 341評論 0 0

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