
批改狀態(tài):合格
老師批語:
盒模型五大常用屬性:
默認(rèn)情況下,給一個盒模型設(shè)置了樣式后,盒模型默認(rèn)狀態(tài)下的計算方式應(yīng)該是 w3c 標(biāo)準(zhǔn)盒子計算方式,即: 實際寬度=width+height+border+padding,如:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>box-sizing</title>
<style>
.box {
width: 200px;
height: 200px;
padding: 10px;
border: 10px dashed;
background-color: hotpink;
background-clip: content-box;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
該 div 的盒子的實際寬高為 width 或 height 的 200+左右或上下 padding 的 10×2+左右或上下的 border10×2,最終值就為(200+10×2+10×2)=240。
但是按照一般習(xí)慣,也為了方便布局,應(yīng)該是 width 的實際寬度就是 width 的寬度,height 的實際高度就是 height 的高度,此時可以使用box-sizing: border-box;
來限制 width 的內(nèi)容區(qū)根據(jù) border 跟 padding 自適應(yīng),如:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>box-sizing</title>
<style>
.box {
width: 200px;
height: 200px;
padding: 10px;
border: 10px dashed;
background-color: hotpink;
background-clip: content-box;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
此時實際寬高就變成了 200,內(nèi)容區(qū)變成了 width 或 height 的 200-左右或上下 padding 的 10×2-左右或上下的 border10×2,最終內(nèi)容區(qū)的值就為(200-10×2-10×2)=160。
常用偽類選擇器 | 注釋 |
---|---|
:nth-of-type() |
分組匹配,在匹配之前將元素根據(jù)類型進(jìn)行分組后再匹配,常用于選擇同組單個元素或者從上往下選擇 |
:nth-last-of-type() |
分組匹配,在匹配之前將元素根據(jù)類型進(jìn)行分組后再匹配,常用于選擇同組單個元素或者從下往上選擇 |
:first-of-type |
常用于選擇第一個元素 |
:last-of-type |
常用于選擇最后一個元素 |
:not() |
在一個集合中,去掉某一些元素 |
分組匹配:nth-of-type()
與:nth-last-of-type()
的參數(shù)都為 an+b,其中 a 是系數(shù),n 為從 0 開始自增的計數(shù)器,b 為最小值為 1 的偏移量。ps:需要注意元素的有效編號是從 1 開始的,如:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>分組匹配</title>
<style>
.l {
position: relative;
}
.l1 {
width: 300px;
position: absolute;
left: 0;
top: 0;
border: 6px solid gray;
}
.l2 {
width: 300px;
top: 0;
left: 350px;
position: absolute;
border: 6px solid gray;
}
.l3 {
width: 300px;
top: 0;
left: 700px;
position: absolute;
border: 6px solid gray;
}
/* :nth-of-type()選中l(wèi)ist類下li同類的正數(shù)第5個子元素 */
.list > :nth-of-type(5) {
background-color: hotpink;
}
/* :nth-last-of-type()選中l(wèi)ist類下li同類的倒數(shù)第5個元素 */
.list > :nth-last-of-type(5) {
background-color: red;
}
/* :first-of-type選中l(wèi)ist類中第一個元素,由于li跟p是兩個不同的元素,因此兩個分組會分開取值,這里用:not()排除掉p元素 */
.list > :first-of-type:not(p:first-of-type) {
background-color: green;
}
/* :last-of-type選中l(wèi)ist類中最后一個元素 */
.list > :last-of-type:not(p:last-of-type) {
background-color: lightblue;
}
/* 從list2類第9個元素開始從上往下每3個選中1個選中所有元素 */
.list2 > :nth-of-type(3n + 9) {
background-color: yellow;
}
/* 從list2類倒數(shù)第9個元素開始從下往上每4個選中1個選中所有元素 */
.list2 > :nth-last-of-type(4n + 9) {
background-color: slateblue;
}
/* 從list2類中的list7類中選取偶數(shù)元素,這里需要注意兩個:nth-of-type()之間要用空格隔開 */
.list2 .list7 > :nth-of-type(even) {
background-color: tomato;
}
/* 從list2類中的list8類中選取偶數(shù)元素,這里需要注意兩個:nth-of-type()之間要用空格隔開 */
.list2 .list8 > :nth-of-type(odd) {
background-color: lightblue;
}
/* 從list3中選擇前6個元素 */
.list3 > :nth-of-type(-n + 6) {
background-color: lightseagreen;
}
/* 從list3中選擇后6個元素 */
.list3 > :nth-last-of-type(-n + 6) {
background-color: magenta;
}
</style>
</head>
<body>
<div class="l">
<div class="l1">
<ul class="list">
<li>item1</li>
<li>item2</li>
<p>------</p>
<li>item3</li>
<p>------</p>
<li>item4</li>
<p>------</p>
<li>item5</li>
<p>------</p>
<li>item6</li>
</ul>
</div>
<div class="l2">
<ul class="list2">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>
item7
<ul class="list7">
<li>item7-1</li>
<li>item7-2</li>
<li>item7-3</li>
<li>item7-4</li>
<li>item7-5</li>
<li>item7-6</li>
</ul>
</li>
<li>
item8
<ul class="list8">
<li>item8-1</li>
<li>item8-2</li>
<li>item8-3</li>
<li>item8-4</li>
<li>item8-5</li>
<li>item8-6</li>
</ul>
</li>
<li>item9</li>
<li>item10</li>
<li>item11</li>
<li>item12</li>
<li>item13</li>
<li>item14</li>
</ul>
</div>
<div class="l3">
<ul class="list3">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
<li>item9</li>
<li>item10</li>
<li>item11</li>
<li>item12</li>
<li>item13</li>
<li>item14</li>
<li>item15</li>
<li>item16</li>
<li>item17</li>
<li>item18</li>
</ul>
</div>
</div>
</body>
</html>
以上代碼中
:nth-of-type(5)
等同于:nth-of-type(0n+5)
:nth-last-of-type(5)
等同于:nth-last-of-type(0n+5)
:nth-of-type(even)
等同于:nth-of-type(2n+0)
:nth-of-type(odd)
等同于:nth-of-type(2n+1)
:nth-of-type(-n + 6)
及:nth-last-of-type(-n + 6)
n 前面加-號可以實現(xiàn)反選操作,以選中前幾位或后幾位:nth-of-type(an + b)
需要注意,b 前面不建議使用-號,雖然會默認(rèn)忽略報錯不影響顯示,但并不符合規(guī)范使用媒體查詢可以針對不同的屏幕設(shè)置不同的樣式,達(dá)到適配不同型號屏幕的效果
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>媒體查詢</title>
<style>
/* 給頁面加一些初始樣式 */
html {
font-size: 10px;
}
body {
font-size: 1.6rem;
}
p {
border: 0.1rem solid red;
width: 9rem;
background-color: hotpink;
}
/* 開始媒體查詢 */
/* 以移動優(yōu)先,從小到大進(jìn)行屏幕的媒體查詢 */
/* 設(shè)置最小480手機(jī)寬度的字體大小 */
@media (min-width: 480px) {
html {
font-size: 12px;
}
}
/* 設(shè)置第二個級別640手機(jī)寬度的字體大小 */
@media (min-width: 640px) {
html {
font-size: 24px;
}
}
/* 設(shè)置第三個級別720手機(jī)寬度的字體大小 */
@media (min-width: 720px) {
html {
font-size: 48px;
}
}
</style>
</head>
<body>
<p>hello world</p>
</body>
</html>
由于瀏覽器對最小字號有默認(rèn)限制,小于 480 的效果我們與 不小于 480 但是小于 640 的效果進(jìn)行對比
尺寸為 411 時的效果
尺寸為 481 時的效果
可以看到,由于瀏覽器默認(rèn)字號的限制,字號大小并沒有變化,但是我們設(shè)置的寬度是跟隨配置的最小 font-size 進(jìn)行了變化的
尺寸為 642 時的效果
尺寸為 721 時的效果
可以看到 480 以后都進(jìn)行了正常的變化
在從小到大進(jìn)行媒體查詢的時候,我們發(fā)現(xiàn)在小于設(shè)置的最小尺寸 480 的時候,font-size 為 10px 會自動生效,同樣的在從大到小進(jìn)行媒體查詢的時候,如果大于設(shè)置的最大尺寸的時候,font-size 為 10px 也會自動生效,這時候就需要我們設(shè)置最大尺寸的同時,以最大尺寸的尺寸設(shè)置一個最小尺寸,來避免這個情況發(fā)生
下面為了更好的理解先不加以最大尺寸的尺寸設(shè)置的最小尺寸來展示
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>媒體查詢</title>
<style>
/* 給頁面加一些初始樣式 */
html {
font-size: 10px;
}
body {
font-size: 1.6rem;
}
p {
border: 0.1rem solid red;
width: 9rem;
background-color: hotpink;
}
/* 開始媒體查詢 */
/* 以PC優(yōu)先,從大到小進(jìn)行屏幕的媒體查詢 */
/* 設(shè)置最大720手機(jī)寬度的字體大小 */
@media (max-width: 720px) {
html {
font-size: 48px;
}
}
/* 設(shè)置第二個級別640手機(jī)寬度的字體大小 */
@media (max-width: 640px) {
html {
font-size: 24px;
}
}
/* 設(shè)置第三個級別480手機(jī)寬度的字體大小 */
@media (max-width: 480px) {
html {
font-size: 12px;
}
}
</style>
</head>
<body>
<p>hello world</p>
</body>
</html>
尺寸為 435 時的效果
尺寸為 483 時的效果
尺寸為 641 時的效果
尺寸為 725 時的效果
通過以上發(fā)現(xiàn)尺寸在 720 以下時均能正常顯示,但是當(dāng)尺寸大于 720 以后字號反而恢復(fù)了最初默認(rèn)的 font-size 為 10px 的大小
這個時候我們就需要在最后面加一個最小 720 時的尺寸,來進(jìn)行限制,我們將以下代碼加入到 css 末尾
/* 設(shè)置當(dāng)大于720時的統(tǒng)一字體大小 */
@media (min-width: 720px) {
html {
font-size: 48px;
}
}
此時尺寸為 725 時恢復(fù)正常,即屏幕尺寸大于 720 也正常顯示設(shè)置字號的最大值
尺寸為 725 時的效果
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號