å¸å±åå å«å
ä¸ä¸ªå ç´ ç尺寸åä½ç½®ç»å¸¸åå ¶å å«åï¼containing blockï¼çå½±åã大夿°æ åµä¸ï¼å å«åå°±æ¯è¿ä¸ªå ç´ æè¿çç¥å åå ç´ çå 容åºåï¼ä½ä¹ä¸æ¯æ»æ¯è¿æ ·ã卿¬æä¸ï¼æä»¬æ¥è¿ä¸éç¡®å®å å«åçææå ç´ ã
å½ä¸ä¸ªå®¢æ·ç«¯ä»£çï¼æ¯å¦è¯´æµè§å¨ï¼å±ç¤ºä¸ä¸ªææ¡£çæ¶åï¼å¯¹äºæ¯ä¸ä¸ªå ç´ ï¼å®é½äº§çäºä¸ä¸ªçåãæ¯ä¸ä¸ªçåé½è¢«åå为å个åºåï¼
- å 容åº
- å è¾¹è·åº
- è¾¹æ¡åº
- å¤è¾¹è·åº

许å¤å¼åè 认为ä¸ä¸ªå ç´ çå å«åå°±æ¯ä»çç¶å ç´ çå 容åºï¼ä½è¿ä¸ä¸å®æ£ç¡®ãæ¥ä¸æ¥è®©æä»¬æ¥ççï¼ç¡®å®å ç´ å å«åçå ç´ é½æåªäºã
å å«åçå½±å
å¨å¦ä¹ å¦ä½ç¡®å®å ç´ å å«åä¹åï¼å äºè§£ä¸ä¸å®çéè¦æ§ã
å
ç´ ç尺寸åä½ç½®ï¼å¸¸å¸¸ä¼åå®çå
å«åæå½±åã对äºä¸äºå±æ§ï¼ä¾å¦ width, height, padding, marginï¼ç»å¯¹å®ä½å
ç´ çåç§»å¼ï¼æ¯å¦ position 被设置为 absolute æ fixedï¼ï¼å½æä»¬å¯¹å
¶èµäºç¾åæ¯å¼æ¶ï¼è¿äºå¼ç计ç®å¼ï¼å°±æ¯éè¿å
ç´ çå
å«å计ç®å¾æ¥ã
ç¡®å®å å«å
ç¡®å®ä¸ä¸ªå
ç´ çå
å«åçè¿ç¨å®å
¨ä¾èµäºè¿ä¸ªå
ç´ ç position 屿§ï¼
- 妿 position 屿§ä¸º
staticãrelativeæstickyï¼å å«åå¯è½ç±å®çæè¿çç¥å åå ç´ ï¼æ¯å¦è¯´ inline-block, block æ list-item å ç´ ï¼çå 容åºçè¾¹ç¼ç»æï¼ä¹å¯è½ä¼å»ºç«æ ¼å¼åä¸ä¸æ (æ¯å¦è¯´ a table container, flex container, grid container, æè æ¯ the block container èªèº«)ã - 妿 position 屿§ä¸º
absoluteï¼å å«åå°±æ¯ç±å®çæè¿ç position çå¼ä¸æ¯staticï¼ä¹å°±æ¯å¼ä¸ºfixed,absolute,relativeæstickyï¼çç¥å å ç´ çå è¾¹è·åºçè¾¹ç¼ç»æã - 妿 position 屿§æ¯
fixedï¼å¨è¿ç»åªä½çæ åµä¸ (continuous media) å å«åæ¯ viewport ,å¨å页åªä½ (paged media) ä¸çæ åµä¸å å«åæ¯å页åºå (page area)ã - 妿 position 屿§æ¯
absoluteæfixedï¼å å«åä¹å¯è½æ¯ç±æ»¡è¶³ä»¥ä¸æ¡ä»¶çæè¿ç¶çº§å ç´ çå è¾¹è·åºçè¾¹ç¼ç»æçï¼transformæperspectiveçå¼ä¸æ¯nonewill-changeç弿¯transformæperspectivefilterçå¼ä¸æ¯noneæwill-changeç弿¯filterï¼åªå¨ Firefox ä¸çæï¼ãcontainç弿¯layoutãpaintãstrictæcontentï¼ä¾å¦ï¼contain: paint;ï¼backdrop-filterçå¼ä¸æ¯noneï¼ä¾å¦ï¼backdrop-filter: blur(10px);ï¼
夿³¨ï¼æ ¹å
ç´ ï¼<html>ï¼æå¨çå
å«åæ¯ä¸ä¸ªè¢«ç§°ä¸ºåå§å
å«åçç©å½¢ãå®å
·æè§å£ï¼å¯¹äºè¿ç»åªä½ï¼æé¡µé¢åºåï¼å¯¹äºå页åªä½ï¼ç尺寸ã
夿³¨ï¼perspective å filter 屿§å¯¹å½¢æå
å«åçä½ç¨å卿µè§å¨ä¹é´çä¸ä¸è´æ§ã
æ ¹æ®å å«å计ç®ç¾åå¼
å¦ä¸æè¿°ï¼å½æäºå±æ§è¢«èµäºä¸ä¸ªç¾åæ¯å¼æ¶ï¼å®ç计ç®å¼åå³äºè¿ä¸ªå ç´ çå å«åã以è¿ç§æ¹å¼å·¥ä½ç屿§å æ¬ç模å屿§ååç§»å±æ§ï¼
heightãtopåbottom屿§æ ¹æ®å å«åçheight计ç®ç¾åæ¯å¼ãwidthãleftãrightãpaddingåmargin屿§æ ¹æ®å å«åçwidth计ç®ç¾åæ¯å¼ã
夿³¨ï¼ä¸ä¸ªå容å¨ï¼æ¯å¦ inline-blockãblock æ list-item å ç´ ï¼è¦ä¹åªå å«åä¸è¡çº§æ ¼å¼åä¸ä¸æçè¡çº§çåï¼è¦ä¹åªå å«åä¸åçº§æ ¼å¼åä¸ä¸æçå级çåãåªæå å«å级æè¡çº§çåçå ç´ ææ¯å容å¨ã
示ä¾
æ¥ä¸æ¥ç示ä¾ï¼é½ä½¿ç¨å¦ä¸ HTML 代ç ï¼
<body>
<section>
<p>This is a paragraph!</p>
</section>
</body>
ä¸é¢ç示ä¾ï¼åªæ CSS ä¸åã
ç¤ºä¾ 1
è¿ä¸ªç¤ºä¾ä¸ï¼P æ ç¾è®¾ç½®ä¸ºéæå®ä½ï¼æä»¥å®çå
å«å为 <section> ï¼å 为è·ç¦»æè¿çç¶èç¹å³æ¯å¥¹çå
å«åã
body {
background: beige;
}
section {
display: block;
width: 400px;
height: 160px;
background: lightgray;
}
p {
width: 50%; /* == 400px * .5 = 200px */
height: 25%; /* == 160px * .25 = 40px */
margin: 5%; /* == 400px * .05 = 20px */
padding: 5%; /* == 400px * .05 = 20px */
background: cyan;
}
ç¤ºä¾ 2
å¨è¿ä¸ªç¤ºä¾ä¸ï¼P æ ç¾çå
å«å为 <body> å
ç´ ï¼å 为 <section> ä¸åæ¯ä¸ä¸ªå容å¨ï¼æä»¥å¹¶æ²¡æå½¢æä¸ä¸ªæ ¼å¼ä¸ä¸æã
body {
background: beige;
}
section {
display: inline;
background: lightgray;
}
p {
width: 50%; /* == half the body's width */
height: 200px; /* Note: a percentage would be 0 */
background: cyan;
}
ç¤ºä¾ 3
è¿ä¸ªç¤ºä¾ä¸ï¼P å
ç´ çå
å«åæ¯ <section>ï¼å 为 <section> ç position 为 absolute ãP å
ç´ çç¾åå¼ä¼åå
¶å
å«åç padding æå½±åãä¸è¿ï¼å¦æå
å«åç box-sizing å¼è®¾ç½®ä¸º border-box ï¼å°±æ²¡æè¿ä¸ªé®é¢ã
body {
background: beige;
}
section {
position: absolute;
left: 30px;
top: 30px;
width: 400px;
height: 160px;
padding: 30px 20px;
background: lightgray;
}
p {
position: absolute;
width: 50%; /* == (400px + 20px + 20px) * .5 = 220px */
height: 25%; /* == (160px + 30px + 30px) * .25 = 55px */
margin: 5%; /* == (400px + 20px + 20px) * .05 = 22px */
padding: 5%; /* == (400px + 20px + 20px) * .05 = 22px */
background: cyan;
}
ç¤ºä¾ 4
è¿ä¸ªç¤ºä¾ä¸ï¼P å
ç´ ç position 为 fixedï¼æä»¥å®çå
å«åå°±æ¯åå§å
å«åï¼å¨å±å¹ä¸ï¼ä¹å°±æ¯ viewportï¼ãè¿æ ·çè¯ï¼P å
ç´ ç尺寸大å°ï¼å°ä¼éçæµè§å¨çªæ¡å¤§å°çååï¼èååã
body {
background: beige;
}
section {
width: 400px;
height: 480px;
margin: 30px;
padding: 15px;
background: lightgray;
}
p {
position: fixed;
width: 50%; /* == (50vw - (width of vertical scrollbar)) */
height: 50%; /* == (50vh - (height of horizontal scrollbar)) */
margin: 5%; /* == (5vw - (width of vertical scrollbar)) */
padding: 5%; /* == (5vw - (width of vertical scrollbar)) */
background: cyan;
}
ç¤ºä¾ 5
è¿ä¸ªç¤ºä¾ä¸ï¼P å
ç´ ç position 为 absoluteï¼æä»¥å®çå
å«åæ¯ <section>ï¼ä¹å°±æ¯è·ç¦»å®æè¿çä¸ä¸ª transform å¼ä¸ä¸º none çç¶å
ç´ ã
body {
background: beige;
}
section {
transform: rotate(0deg);
width: 400px;
height: 160px;
background: lightgray;
}
p {
position: absolute;
left: 80px;
top: 30px;
width: 50%; /* == 200px */
height: 25%; /* == 40px */
margin: 5%; /* == 20px */
padding: 5%; /* == 20px */
background: cyan;
}
åè§
-
CSS éè¦æ¦å¿µï¼
-
all屿§å¯å°ææ CSS 声æéç½®ä¸ºå®ææå®çç¶æ