HTML5&CSS3

1.1 盒子模型

每個(gè)HTML元素都可以看作一個(gè)裝了東西的盒子:
● 寬度、高度:盒子本身具有寬度(width)和高度(height)
● 內(nèi)邊距:盒子里面的內(nèi)容到盒子邊框之間的距離即內(nèi)邊距(padding)
● 邊框:盒子本身有邊框(border)
● 外邊距:盒子邊框外和其他盒子之間,元素與元素之間的距離,即外邊距(margin)


標(biāo)準(zhǔn)盒子模型示意圖.png
  • 外邊距樣式
屬性名 含義
margin-top 上外邊距寬度
margin-right 右外邊距寬度
margin-bottom 下外邊距寬度
margin-left 左邊距寬度
margin 四個(gè)邊外邊距寬度(上、右、下、左)
  • 外框樣式
屬性:border-width(邊框?qū)挾龋?/th> 含義
border-top-width 上邊框厚度
border-right-width 右邊框厚度
border-bottom-width 下邊框厚度
border-left-width 左邊框厚度
border-width 邊框厚度(上、右、下、左)
屬性:border-color(邊框顏色) 含義
border-top-color 上邊框顏色
border-right-color 右邊框顏色
border-bottom-color 下邊框顏色
border-left-color 左邊框顏色
border-color 邊框顏色(上、右、下、左)
屬性:border-style(邊框樣式) 含義
border-top-style 上邊框樣式
border-right-style 右邊框樣式
border-bottom-style 下邊框樣式
border-left-style 左邊框樣式
border-style 邊框樣式(上、右、下、左)
  • 內(nèi)邊距樣式
屬性 含義
paddingr-top 上內(nèi)邊距樣式
padding-righ 右內(nèi)邊距樣式
padding-bottom 下內(nèi)邊距樣式
padding-left 左內(nèi)邊距樣式
padding 內(nèi)邊距樣式(上、右、下、左)
  • 盒子模型尺寸

盒子模型總尺寸=border(兩個(gè)邊框?qū)挾龋? padding(兩個(gè)內(nèi)邊距寬度)+ 內(nèi)容寬度
盒子模型占用空間=margin(兩個(gè)外邊距寬度)+ 盒子模型總尺寸

1.2 元素默認(rèn)樣式于CSS重置

常用元素默認(rèn)樣式:

  • 標(biāo)簽的margin為8px
  • p標(biāo)簽的上下外邊距為16px
  • h1標(biāo)簽的上下外邊距為21.440px
  • ul標(biāo)簽的上下外邊距也為16px,左內(nèi)邊距也為40px

CSS重置:在實(shí)際開發(fā)中,為了兼容性,也為了開發(fā)者更好的設(shè)置自己想要的樣式,那么凡是瀏覽默認(rèn)的樣式,都不會(huì)使用,這就是CSS重置。

/********************** 這是一個(gè)最簡(jiǎn)單的CSS重置 **********************/
body,div,ul,ol,li,p,h1,h2,h3,h4,h5,h6,span,a,img,form{
    margin: 0;
    padding: 0;
}
ul{
    list-style: none;
}
a{
    text-decoration: none;
}

1.3 元素分類

  • 行級(jí)元素(內(nèi)聯(lián)元素)

獨(dú)占一行,可以指定寬高(不指定寬高,高度由內(nèi)容決定)

  • 塊級(jí)元素

不獨(dú)占一行,默認(rèn)大小由內(nèi)容決定,不能指定寬高

  • 行級(jí)塊元素(塊級(jí)內(nèi)聯(lián)元素)

<!-- 行級(jí)元素轉(zhuǎn)為行級(jí)塊元素 -->
<style>
    span{
            background-color: aqua;
        border: 1px solid black;
        width: 100px;
        height: 100px;
        /* 轉(zhuǎn)為行級(jí)塊元素 */
        display: inline-block;
        }
</style>

<body>
    <span>這是span標(biāo)簽</span>
    <span>這是span標(biāo)簽</span>
    <span>這是span標(biāo)簽</span>
</body>

1.4 塊狀元素與內(nèi)聯(lián)元素的盒子模型

  1. 內(nèi)聯(lián)元素從左到右橫向排列,到最右端自動(dòng)折行,即不獨(dú)占一行 塊級(jí)以塊狀顯現(xiàn),并和同級(jí)塊依次垂直排列,左右撐滿,即獨(dú)占一行。
  2. 塊級(jí)元素可以包含內(nèi)聯(lián)元素和塊級(jí)元素(P標(biāo)簽不能包含P標(biāo)簽)。 但內(nèi)聯(lián)元素不能包含塊級(jí)元素。
  3. 內(nèi)聯(lián)元素與塊級(jí)元素屬性的不同,還主要體現(xiàn)在盒模型屬性上。
  • 內(nèi)聯(lián)元素它的寬度和高度是自動(dòng)的、也就是由內(nèi)容撐開的。因此設(shè)置width無效,height無效。但可以設(shè)置line-height。
  • 內(nèi)聯(lián)元素的border無效,margin上下無效,padding上下無效。也就是padding和margin的left和right是可以設(shè)置的 。
  1. img比較特殊,它的border,margin,padding是有效的。

1.5 顯示與隱藏

display樣式有兩個(gè)功能:控制元素的顯示和隱藏;塊級(jí)元素與行級(jí)(內(nèi)聯(lián))元素的轉(zhuǎn)變

說明
block 塊級(jí)元素的默認(rèn)值,元素會(huì)被顯示為塊級(jí)元素,該元素前后會(huì)帶有換行符
inline 內(nèi)聯(lián)元素的默認(rèn)值。元素會(huì)被顯示為內(nèi)聯(lián)元素,該元素前后沒有換行符
none 設(shè)置元素不會(huì)被顯示(被隱藏的對(duì)元素象不保留物理空間)
inline-block 指定對(duì)象為內(nèi)聯(lián)塊元素(具有寬度高度,又具有同行特性)。.

實(shí)際上,瀏覽器中就有默認(rèn)的天生inline-block元素,既擁有內(nèi)在尺寸,可設(shè)置高寬,而且也不會(huì)自動(dòng)換行。<input>、<img>、<button>、<textarea>、<label>

1.6 內(nèi)容溢出處理

如果塊的尺寸是固定的,而內(nèi)容卻有可能超出其尺寸時(shí),可以使用overflow。
overflow屬性:設(shè)置當(dāng)對(duì)象的內(nèi)容超過其指定的高度或?qū)挾葧r(shí)如何處理內(nèi)容。

說明
visible 默認(rèn)值。內(nèi)容不會(huì)被修剪,會(huì)呈現(xiàn)在盒子之外
hidden 內(nèi)容會(huì)被修剪,并且其余內(nèi)容是不可見的
auto 如果內(nèi)容被修剪,則瀏覽器會(huì)顯示滾動(dòng)條以便查看其余的內(nèi)容

1.7 新盒子模型

CSS3之后新增了一種盒子模型,可以說是border-box型盒子,即寬和高為邊框,我們通常稱為邊框盒子。邊框盒子的總體尺寸不會(huì)受到邊框、或內(nèi)邊距的影響,總體尺寸始終等于width與height的設(shè)置。
可以使用box-sizing屬性來設(shè)置盒子模型類型,此屬性值有兩個(gè):
border-box:邊框盒子
content-box:內(nèi)容盒子(默認(rèn))

div{
    width: 200px;
    height: 200px;
    /*值有兩個(gè): border-box:邊框盒子; content-box:內(nèi)容盒子(默認(rèn))*/
    box-sizing: border-box;   
    padding: 30px;
    background-color: orange;
    border: solid 30px blue;
    margin: 50px;
}
 /*使用了邊框盒子,就可以任意設(shè)置內(nèi)邊距、邊框了,而且不用擔(dān)心會(huì)改變盒子的總體尺寸。*/

2.1 元素定位

為了實(shí)現(xiàn)網(wǎng)頁整體布局,我們先要知道,一個(gè)元素,是如何定位到頁面上的某個(gè)位置的,這就是元素定位。
元素定位有四種,可以使用position樣式來設(shè)置元素定位,所以此屬性值有四種:

  1. static靜態(tài)定位(默認(rèn))。依據(jù)文檔流定位。
  2. relative相對(duì)定位。以自身為基準(zhǔn),設(shè)置坐標(biāo)(left、top、right、bottom),不脫離文檔流。
  3. absolute絕對(duì)定位。以父元素為基準(zhǔn),設(shè)置坐標(biāo)(left、top、right、bottom),脫離文檔流。
  4. fixed固定定位。以瀏覽器窗口為基準(zhǔn),設(shè)置坐標(biāo)(left、top、right、bottom),脫離文檔流。
  • static靜態(tài)定位(文檔流定位)

  1. 將頁面上的元素,按照html的書寫順序,從上到下,從左到右,依次排列。
  2. 內(nèi)聯(lián)元素不獨(dú)占一行,塊級(jí)元素獨(dú)占一行。
  • relative相對(duì)定位

  1. 以自身為基準(zhǔn)定位。
  2. 不脫離文檔流。也就是說:相對(duì)定位元素仍然會(huì)被文檔流中的其它元素所影響。
  3. 根據(jù)坐標(biāo)定位到新位置之后,并不回收原位置空間。
  • absolute絕對(duì)定位

  1. 脫離文檔流。也就是說:絕對(duì)定位元素將不在被文檔流中的其它元素所影響。
  2. 根據(jù)坐標(biāo)定位到新位置之后,原位置空間會(huì)被回收。
  3. 如果父元素也為relative或absolute定位,那么就以父元素為基準(zhǔn)。
  4. 如果父元素不是relative定位,也不是absolute定位,那么一律以body為基準(zhǔn)。
  • fixed固定定位

元素始終固定在某個(gè)坐標(biāo)位置,body以及body中的任何元素都不會(huì)對(duì)其產(chǎn)生任何影響。

2.2 z-index樣式

z-index解決元素之間如何重疊的問題,z-index樣式的值是一個(gè)整形數(shù),就表示元素所在的層級(jí)。較大的重疊元素會(huì)覆蓋較小的元素

<style>
    .one{
        width: 200px;
        height: 200px;
        background-color: red;
        position: absolute;
        left: 0;
        top:0;
        z-index: 2;
    }
    .two{
        width: 200px;
        height: 200px;
        background-color: blue;
        position: absolute;
        left: 100px;
        top:100px;
        z-index: 1;
    }
</style>
<div class="one"></div>
<div class="two"></div>

2.3 彈性布局

display:flex /*flex是flexible box的縮寫*/
一個(gè)元素的display屬性值設(shè)為flex,那么這個(gè)元素中的子元素,就會(huì)遵循彈性布局的規(guī)則。

  • flex-direction樣式

flex-direction屬性就是用來設(shè)置主軸方向的。

flex-direction:row        /*子元素沿主軸方向排列,也就是水平方向。 row為默認(rèn)值*/
flex-direction:column     /*子元素沿側(cè)軸方向排列,也就是垂直方向。*/
  • flex-wrap樣式

由于彈性布局中的子元素能自動(dòng)伸縮,所以,當(dāng)父容器此次小于子元素整體尺寸時(shí),子元素不會(huì)自動(dòng)換行,而是自動(dòng)收縮。

body{
    display: flex;
}

如果想要讓子元素自動(dòng)換行,可以使用flex-wrap:wrap

body{
    display: flex;
    flex-wrap: wrap;   /*當(dāng)彈性布局容器尺寸小于所以子元素尺寸時(shí),子元素會(huì)自動(dòng)換行*/
}
  • justify-content樣式

以主軸方向?yàn)槔鹤釉厮椒较蚺帕泻螅J(rèn)依次靠左排列。如果想讓子元素居中、居右等,那么就可以設(shè)置justify-content樣式。值有五種:

  1. flex-start(默認(rèn)):左對(duì)齊。
  2. flex-end:右對(duì)齊。
  3. center:居中。
  4. space-between:兩端對(duì)齊,子元素之間間距都相等。
  5. space-around:每個(gè)子元素兩側(cè)的間距相等。所以子元素之間間距比子元素到邊框 間距大一倍。
body{
    display: flex;
    justify-content: space-between;    /*兩端對(duì)齊,子元素之間間距都相等。*/
}
  • align-items與align-content樣式

以主軸方向?yàn)槔鹤釉厮椒较蚺帕泻螅绻胱屪釉卮怪本又?,那么就可以設(shè)置align-items樣式。
常用值有三種:flex-start(默認(rèn)):上對(duì)齊,flex-end:下對(duì)齊center:居中

在彈性盒子中,子元素側(cè)軸對(duì)齊方式可以使用align-items或align-content:
align-items對(duì)單行和多行都有效,align-content對(duì)單行無效。
在多行中,align-items讓每一行都在各自范圍內(nèi)垂直居中。 align-content將多行作為一個(gè)整體,然后居中。

html,body{
    height: 100%;               /*html與body的高度默認(rèn)為0,所以要設(shè)置高度*/
}
body{
    display: flex;
    flex-wrap: wrap;           /*如果允許換行,那么換行后,多行元素中的每一行也會(huì)垂直居中*/
    justify-content: center;
    align-items: center;       /*不論是一行,還是多行,都會(huì)垂直居中*/
}
  • flex樣式

如果想讓每個(gè)子元素所占空間不一致,那么可以使用flex給子元素分配空間。 使用flex時(shí)要注意一下兩點(diǎn):

  1. flex樣式是設(shè)置在子元素上的。
  2. 如果設(shè)置了flex,那就說明要給子元素按比例分配空間,因此width與height就失效了。
偶的的(示例)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            html,body{
                height: 100%;
            }
            body{
                display: flex;
            }
            .son{
                width: 100px;
                height: 100px;
                border: solid 2px #f90;
                background-color: yellow;
            }
        </style>
    </head>
    <body>
        <div class="son" style="flex:1;">1</div>
        <div class="son" style="flex:1;">2</div>
        <div class="son" style="flex:2;">3</div>
        <div class="son" style="flex:2;">3</div>
    </body>
</html>
最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、HTML基礎(chǔ)標(biāo)簽 1.HTML簡(jiǎn)介 超文本標(biāo)記語言(英語:HyperText Markup Language,...
    是陽仔啊閱讀 328評(píng)論 0 0
  • 好看的網(wǎng)頁千篇一律,有趣的代碼萬里挑一。 祝大家元宵節(jié)快樂!做個(gè)快樂的小腦斧。。。-今天過后,全面復(fù)工啦!要收心工...
    云瑤糖糖閱讀 907評(píng)論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,189評(píng)論 1 92
  • 第一章 什么是HTML文件? 類似于txt、word文本記錄文件 需要使用瀏覽器打開 展示文字和其他信息 使用標(biāo)簽...
    arima閱讀 1,736評(píng)論 0 3
  • HTML是一種超文本標(biāo)記語言 一、選擇器 類選擇器:.class id選擇器:#id 通配選擇器:*(選擇所有元素...
    行走在路上的大熊閱讀 540評(píng)論 0 1

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