break-inside
åºçº¿
广æ³å¯ç¨
*
èª 2019å¹´1æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
break-inside CSS 屿§è®¾ç½®çæççåå
é¨ç页é¢ãæ æåºååºæç䏿è¡ä¸ºãå¦ææ²¡æçæçåï¼åè¯¥å±æ§å°è¢«å¿½ç¥ã
å°è¯ä¸ä¸
break-inside: auto;
break-inside: avoid;
<section id="default-example">
<div>
<p>
The effect of this property can be noticed when the document is being
printed or a preview of a print is displayed.
</p>
<button id="print-btn">Show Print Preview</button>
<div class="box-container">
<div class="box">Content before the property</div>
<div class="box" id="example-element">Content with 'break-inside'</div>
<div class="box">Content after the property</div>
</div>
</div>
</section>
.box {
border: solid #5b6dcd 5px;
background-color: #5b6dcd;
margin: 10px 0;
padding: 5px;
}
#example-element {
border: solid 5px #ffc129;
background-color: #ffc129;
color: black;
}
.hide-element {
display: none;
}
@media print {
#example-element {
height: 25cm;
}
}
const btn = document.getElementById("print-btn");
const editorContainer = document.getElementsByClassName(
"css-editor-container",
)[0];
const exampleHTMLElement = document.getElementById("default-example");
const printableSection = document.createElement("div");
printableSection.setAttribute("id", "printable-section");
printableSection.classList.add("hide-element");
document.body.appendChild(printableSection);
btn.addEventListener("click", () => {
const exampleContent = exampleHTMLElement.innerHTML;
editorContainer.classList.add("hide-element");
printableSection.innerHTML = exampleContent;
printableSection.classList.remove("hide-element");
window.print();
printableSection.classList.add("hide-element");
printableSection.innerHTML = "";
editorContainer.classList.remove("hide-element");
});
è¯æ³
/* å
³é®åå¼ */
break-inside: auto;
break-inside: avoid;
break-inside: avoid-page;
break-inside: avoid-column;
break-inside: avoid-region;
/* å
¨å±å¼ */
break-inside: inherit;
break-inside: initial;
break-inside: revert;
break-inside: revert-layer;
break-inside: unset;
æ¯ä¸ä¸ªå¯è½ç䏿ç¹ï¼æ¢å¥è¯è¯´ï¼å
ç´ çè¾¹çï¼åä¸ä¸ªå±æ§çå½±åãåä¸ä¸ªå
ç´ break-after çå¼ãåä¸ä¸ªå
ç´ break-before çå¼ï¼ä»¥åå
å«å
ç´ break-inside çå¼ã
ä¼åºç¨ä»¥ä¸è§åæ¥ç¡®å®æ¯å¦å¿ 须产ç䏿ç¹ï¼
- 妿è¿ä¸ä¸ªä¸æå±æ§ç弿ä¸ä¸ªæ¯å¼ºå¶ä¸æå¼ï¼
alwaysãleftãrightãpageãcolumnæregionï¼ï¼åè¯¥å±æ§å ·æä¼å æãå¦æå ¶ä¸æå¤ä¸ªè¿æ ·ç䏿ï¼åä½¿ç¨æµä¸æååºç°çå ç´ çå¼ãå æ¤ï¼break-beforeå¼ä¼å äºbreak-afterå¼ï¼èåè åä¼å äºbreak-insideå¼ã - 妿ä¸ä¸ªç¸å
³å¼ä¸çä»»ä½ä¸ä¸ªæ¯é¿å
䏿å¼ï¼
avoidãavoid-pageãavoid-regionæavoid-columnï¼ï¼åä¸å¨è¯¥ç¹åºç¨æ¤ç±»ä¸æã
䏿¦åºç¨äºå¼ºå¶ä¸æï¼å¦æéè¦ï¼å¯ä»¥æ·»å è½¯ä¸æï¼é¤äºç¸åºå¼è§£æä¸º avoid çå
ç´ è¾¹çã
| åå§å¼ | auto |
|---|---|
| éç¨å ç´ | block-level elements |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | as specified |
| å¨ç»ç±»å | 离æ£å¼ |
å¼
auto-
å 许ï¼ä½ä¸å¼ºå¶ï¼å¨ä¸»æ¡ä¸æå ¥ä»»ä½ä¸æï¼é¡µãæ æåºåï¼ã
avoid-
é¿å å¨ä¸»æ¡ä¸æå ¥ä»»ä½ä¸æï¼é¡µãæ æåºåï¼ã
avoid-page-
é¿å 主æ¡ä¸çä»»ä½é¡µä¸æã
avoid-column-
é¿å 主æ¡ä¸ç任使 䏿ã
avoid-region-
é¿å 主æ¡ä¸çä»»ä½åºå䏿ã
页䏿çå«å
ç±äºå
¼å®¹æ§åå ï¼æ§ç page-break-inside 屿§åºè¯¥è¢«æµè§å¨è§ä¸º break-inside çå«åãè¿æ ·å¯ä»¥ç¡®ä¿ä½¿ç¨ page-break-inside çç«ç¹ç»§ç»æè®¾è®¡è¿è¡ãåªæä¸é¨åå¼å¯ä½¿ç¨å«åï¼å¦ä¸æç¤ºï¼
| page-break-inside | break-inside |
|---|---|
auto |
auto |
avoid |
avoid |
å½¢å¼å®ä¹
| åå§å¼ | auto |
|---|---|
| éç¨å ç´ | block-level elements |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | as specified |
| å¨ç»ç±»å | 离æ£å¼ |
å½¢å¼è¯æ³
break-inside =
auto |
avoid |
avoid-page |
avoid-column |
avoid-region
示ä¾
>é¿å
䏿 <figure>
å¨ä¸é¢ç示ä¾ä¸ï¼æä»¬æä¸ä¸ªå®¹å¨ï¼å
¶ä¸å
å«ä¸ä¸ªæ¨ªè·¨æææ ç <h1>ï¼ä½¿ç¨ column-span: all å®ç°ï¼ï¼ä»¥åå¨å¤æ ä¸ä½¿ç¨ column-width: 200px å¸å±çä¸ç³»å段è½ãæä»¬è¿æä¸ä¸ªå
å«å¾ååæ é¢ç <figure>ã
é»è®¤æ
åµä¸ï¼å¾ååå
¶æ é¢ä¹é´å¯è½ä¼åç䏿ï¼è¿ä¸æ¯æä»¬æ³è¦çã为äºé¿å
è¿ç§æ
åµï¼æä»¬å¨ <figure> ä¸è®¾ç½®äº break-inside: avoidï¼è¿æ ·å®ä»¬å°±ä¼å§ç»ä¿æå¨ä¸èµ·ã
HTML
<article>
<h1>主æ é¢</h1>
<p>
å°ççå½ççæ¯å®å®ä¸å¶ç¶éçå¶ç¶ï¼å®å®æ¯ä¸ªç©ºè¡è¡ç大宫殿ï¼äººç±»æ¯è¿å®«æ®¿ä¸å¯ä¸çä¸åªå°èèãè¿æ³æ³è®©æçååè¾åæä¸ç§å¾çç¾çå¿æï¼ææ¶è§å¾çå½ççè´µï¼ä¸åé½é妿³°å±±ï¼ææ¶åè§å¾äººæ¯é£ä¹æ¸ºå°ï¼ä»ä¹é½ä¸å¼ä¸æã忣æ¥åå°±å¨è¿ç§å¥æªçæè§ä¸ä¸å¤©å¤©è¿å»ï¼ä¸ç¥ä¸è§äººå°±èäºâ¦â¦
</p>
<figure>
<img
src="/proxy/mdn.dev/archives/media/attachments/2020/07/29/17350/3b4892b7e820122ac6dd7678891d4507/firefox.png" />
<figcaption>Firefox æ è¯ââç»ä¸çä¸åççç¸</figcaption>
</figure>
<p>
å¯ä¸ä¸å¯é»æ¡çæ¯æ¶é´ï¼å®å䏿å©åï¼æ 声å°åå¼äºå硬åæè½¯çä¸åï¼æå®çå忍è¿çï¼æ²¡æä»»ä½ä¸è¥¿è½å¤ä½¿å®çè¡å¾äº§ç䏿¯«é¢ ç°¸ï¼å®å´æ¹åçä¸åã
</p>
<p>
妿ä¸å»éåä¸çï¼æä»¬å°±ä¸ç¥éä»ä¹æ¯æä»¬ç²¾ç¥åæ
æç坿ï¼ä½æä»¬ä¸æ¦éåäºä¸çï¼å´åç°æä»¬å乿 æ³åå°é£ç¾å¥½çå°æ¹å»äºã彿们å¼å§å¯»æ±ï¼æä»¬å°±å·²ç»å¤±å»ï¼èæä»¬ä¸å¼å§å¯»æ±ï¼æä»¬æ ¹æ¬æ æ³ç¥éèªå·±èº«è¾¹çä¸åæ¯å¦æ¤å¯è´µã
</p>
</article>
CSS
html {
font-family: helvetica, arial, sans-serif;
}
body {
width: 80%;
margin: 0 auto;
}
h1 {
font-size: 3rem;
letter-spacing: 2px;
column-span: all;
}
h1 + p {
margin-top: 0;
}
p {
line-height: 1.5;
break-after: column;
}
figure {
break-inside: avoid;
}
img {
max-width: 70%;
display: block;
margin: 0 auto;
}
figcaption {
font-style: italic;
font-size: 0.8rem;
width: 70%;
}
article {
column-width: 200px;
gap: 20px;
}
ç»æ
è§è
| è§è |
|---|
| CSS Fragmentation Module Level 3> # break-within> |
| CSS Regions Module Level 1> # region-flow-break> |
| CSS Multi-column Layout Module Level 1> # break-before-break-after-break-inside> |