scroll-margin-inline-end
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2021å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
scroll-margin-inline-end ããããã£ã¯ãã¹ã¯ãã¼ã«ã¹ãããé åã®ã¤ã³ã©ã¤ã³æ¹åã«ãããæ«å°¾å´ã®ãã¼ã¸ã³ãå®ç¾©ãããã®ããã¯ã¹ãã¹ããããã¼ãã«ã¹ãããããããã«ä½¿ç¨ããã¾ããã¹ã¯ãã¼ã«ã¹ãããé åã¯å¤æãããå¢çããã¯ã¹ã«ãã£ã¦å®ç¾©ãããåè§å½¢ã®å²ã¿ããã¯ã¹ãæ¢ãã¦ï¼ã¹ã¯ãã¼ã«ã³ã³ããã¼ã®åº§æ¨ç©ºéã«ããã軸ã«åããããï¼ãããããæå®ãããå¤é¨è·é¢ã追å ããã¾ãã
試ãã¦ã¿ã¾ããã
scroll-margin-inline-end: 0;
scroll-margin-inline-end: 20px;
scroll-margin-inline-end: 2em;
<section class="default-example" id="default-example">
<div class="scroller">
<div>1</div>
<div id="example-element">2</div>
<div>3</div>
</div>
<div class="info">ã¹ã¯ãã¼ã« »</div>
</section>
.default-example {
flex-wrap: wrap;
}
.default-example .info {
width: 100%;
padding: 0.5em 0;
font-size: 90%;
}
.scroller {
text-align: left;
width: 250px;
height: 250px;
overflow-x: scroll;
display: flex;
box-sizing: border-box;
border: 1px solid black;
scroll-snap-type: x mandatory;
}
.scroller > div {
flex: 0 0 250px;
width: 250px;
background-color: rebeccapurple;
color: white;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: end;
}
.scroller > div:nth-child(even) {
background-color: white;
color: rebeccapurple;
}
æ§æ
/* <length> å¤ */
scroll-margin-inline-end: 10px;
scroll-margin-inline-end: 1em;
/* ã°ãã¼ãã«å¤ */
scroll-margin-inline-end: inherit;
scroll-margin-inline-end: initial;
scroll-margin-inline-end: revert;
scroll-margin-inline-end: revert-layer;
scroll-margin-inline-end: unset;
å¤
<length>-
ã¹ã¯ãã¼ã«ã³ã³ããã¼ã®ã¤ã³ã©ã¤ã³æ¹åã«ãããæ«å°¾å´ã®è¾ºããã¿ãå¤é¨ã®è·é¢ã§ãã
å ¬å¼å®ç¾©
| åæå¤ | 0 |
|---|---|
| é©ç¨å¯¾è±¡ | ãã¹ã¦ã®è¦ç´ |
| ç¶æ¿ | ãªã |
| è¨ç®å¤ | æå®éã |
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | è¨ç®å¤ã®åã«ãã |
形弿æ³
scroll-margin-inline-end =
<length>
ä¾
>åºæ¬çãªãã¢
ãã®ä¾ã§ã¯ãä¸è¨ã®ã¤ã³ã¿ã©ã¯ãã£ããµã³ãã«ã¨ã¨ã¦ãããä¼¼ããã®ãå®è£ ãã¦ãã¾ãããããã§ã¯ãã®å®è£ æ¹æ³ã説æãã¾ãã
ããã§ã®ç®çã¯ãæ°´å¹³æ¹åã«ã¹ã¯ãã¼ã«ãã 4 ã¤ã®ãããã¯ã使ãããã¨ã§ãã2 ã¤ç®ã¨ 3 ã¤ç®ã®ãããã¯ã¯ãããããã®ãããã¯ã®å³ç«¯ã«è¿ãã¨ããã§ã¹ããããã¾ãã
HTML
HTML ã«ã¯ã4 ã¤ã®åè¦ç´ ãæã¤ã¹ã¯ãã¼ã©ã¼ãããã¾ãã
<div class="scroller">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
CSS
CSS ãä¸éãè¦ã¦ã¿ã¾ããããå¤å´ã®ã³ã³ããã¼ã¯æ¬¡ã®ããã«ã¹ã¿ã¤ã«è¨å®ããã¦ãã¾ãã
.scroller {
text-align: left;
width: 250px;
height: 250px;
overflow-x: scroll;
display: flex;
box-sizing: border-box;
border: 1px solid black;
scroll-snap-type: x mandatory;
}
ã¹ã¯ãã¼ã«ã¹ãããã«é¢é£ãã主ãªé¨åã¯ãoverflow-x: scroll ã§ãã³ã³ãã³ããã¹ã¯ãã¼ã«ãã¦ãé ããªãããã«ãã¦ãã¾ããã¾ããscroll-snap-type: x mandatory ã§ãã¹ã¯ãã¼ã«ã®ã¹ãããã¯æ°´å¹³è»¸ã«æ²¿ã£ã¦è¡ããªããã°ãªãããã¹ã¯ãã¼ã«ã¯å¸¸ã«ã¹ãããç¹ã§éæ¢ããããã«ãªã£ã¦ãã¾ãã
åè¦ç´ ã®ã¹ã¿ã¤ã«ã¯æ¬¡ã®ããã«ãªã£ã¦ãã¾ãã
.scroller > div {
flex: 0 0 250px;
width: 250px;
background-color: rebeccapurple;
color: white;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: end;
}
.scroller > div:nth-child(2n) {
background-color: white;
color: rebeccapurple;
}
ããã§æãéè¦ãªã®ã¯ scroll-snap-align: end ã§ãããã¯å³å´ã®ç«¯ï¼ããã§ã¯ X 軸æ¹åã®ãæ«å°¾ãï¼ãã¹ãããç¹ã¨ãã¦æå®ãããã®ã§ãã
æå¾ã«ãã¹ã¯ãã¼ã«ã®ãã¼ã¸ã³å¤ãæå®ãã¾ããããã㯠2 çªç®ã¨ 3 çªç®ã®åè¦ç´ ã«å¯¾ãã¦ç°ãªãå¤ãæå®ãã¾ãã
.scroller > div:nth-child(2) {
scroll-margin-inline-end: 1rem;
}
.scroller > div:nth-child(3) {
scroll-margin-inline-end: 2rem;
}
ã¤ã¾ããçãä¸ã®åè¦ç´ ãéãã¦ã¹ã¯ãã¼ã«ããå ´åã2 çªç®ã® <div> ã®ã¤ã³ã©ã¤ã³ã®æ«å°¾ãã 1remã3 çªç®ã® <div> ã®ã¤ã³ã©ã¤ã³ã®æ«å°¾ãã 2rem ã®ã¨ããã§ã¹ããããããã¨ã«ãªãã¾ãã
çµæ
èªåã§ãã£ã¦ã¿ã¾ãããã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Scroll Snap Module Level 1 > # margin-longhands-logical > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- CSS ã¹ã¯ãã¼ã«ã¹ãããã¢ã¸ã¥ã¼ã«
- Well-controlled scrolling with CSS scroll snap - web.dev (2018)