diff --git a/files/zh-cn/web/css/scroll-margin-block-end/index.md b/files/zh-cn/web/css/scroll-margin-block-end/index.md new file mode 100644 index 00000000000000..84983a94ea9abb --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-block-end/index.md @@ -0,0 +1,51 @@ +--- +title: scroll-margin-block-end +slug: Web/CSS/scroll-margin-block-end +--- + +{{CSSRef}} + +**`scroll-margin-block-end`** 属性定义了滚动吸附区域在块向末侧的外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-block-end.html")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-block-end: 10px; +scroll-margin-block-end: 1em; + +/* 全局值 */ +scroll-margin-block-end: inherit; +scroll-margin-block-end: initial; +scroll-margin-block-end: revert; +scroll-margin-block-end: revert-layer; +scroll-margin-block-end: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器块末边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-block-start/index.md b/files/zh-cn/web/css/scroll-margin-block-start/index.md new file mode 100644 index 00000000000000..8be3082fc87529 --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-block-start/index.md @@ -0,0 +1,51 @@ +--- +title: scroll-margin-block-start +slug: Web/CSS/scroll-margin-block-start +--- + +{{CSSRef}} + +**`scroll-margin-block-start`** 属性定义了滚动吸附区域在块向末侧的外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-block-start.html")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-block-start: 10px; +scroll-margin-block-start: 1em; + +/* 全局值 */ +scroll-margin-block-start: inherit; +scroll-margin-block-start: initial; +scroll-margin-block-start: revert; +scroll-margin-block-start: revert-layer; +scroll-margin-block-start: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器块首边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-block/index.md b/files/zh-cn/web/css/scroll-margin-block/index.md index c0025bebae55bf..844638bf28962d 100644 --- a/files/zh-cn/web/css/scroll-margin-block/index.md +++ b/files/zh-cn/web/css/scroll-margin-block/index.md @@ -5,7 +5,7 @@ slug: Web/CSS/scroll-margin-block {{CSSRef}} -[简写属性](/zh-CN/docs/Web/CSS/Shorthand_properties) `scroll-margin-block` 设置了元素在块向的滚动外边距。 +[简写属性](/zh-CN/docs/Web/CSS/Shorthand_properties) `scroll-margin-block` 设置了元素的块向滚动外边距。 {{EmbedInteractiveExample("pages/css/scroll-margin-block.html")}} diff --git a/files/zh-cn/web/css/scroll-margin-bottom/index.md b/files/zh-cn/web/css/scroll-margin-bottom/index.md new file mode 100644 index 00000000000000..cc840f3aa1c020 --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-bottom/index.md @@ -0,0 +1,51 @@ +--- +title: scroll-margin-bottom +slug: Web/CSS/scroll-margin-bottom +--- + +{{CSSRef}} + +**`scroll-margin-bottom`** 属性定义了滚动吸附区域的下外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-bottom.html")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-bottom: 10px; +scroll-margin-bottom: 1em; + +/* 全局值 */ +scroll-margin-bottom: inherit; +scroll-margin-bottom: initial; +scroll-margin-bottom: revert; +scroll-margin-bottom: revert-layer; +scroll-margin-bottom: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器下侧边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-inline-end/index.md b/files/zh-cn/web/css/scroll-margin-inline-end/index.md new file mode 100644 index 00000000000000..55e9ef98a6f4fc --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-inline-end/index.md @@ -0,0 +1,134 @@ +--- +title: scroll-margin-inline-end +slug: Web/CSS/scroll-margin-inline-end +--- + +{{CSSRef}} + +**`scroll-margin-inline-end`** 属性定义了滚动吸附区域在行向末侧的外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-inline-end.html")}} + +## 语法 + +```css +/* 值 */ +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; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器行末边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 示例 + +### 简单演示 + +此示例所实现的内容与上述互动示例非常相似,但此处将解释其实现方法。 + +此处的目标为创建四个横向滚动区块,其中第二个和第三个吸附至指定位置——靠近但不恰好位于每个区块的右侧。 + +#### HTML + +表示这些区块的 HTML 非常简单: + +```html +
+
1
+
2
+
3
+
4
+
+``` + +#### CSS + +一起来过一遍 CSS。外层容器有如下样式: + +```css +.scroller { + text-align: left; + width: 250px; + height: 250px; + overflow-x: scroll; + display: flex; + box-sizing: border-box; + border: 1px solid #000; + scroll-snap-type: x mandatory; +} +``` + +与滚动吸附相关的主要部分为 `overflow-x: scroll`——确保内容可滚动且不被隐藏——以及 `scroll-snap-type: x mandatory`——要求必须沿横轴出现滚动吸附,且滚动总将止于吸附点。 + +子元素有如下样式: + +```css +.scroller > div { + flex: 0 0 250px; + width: 250px; + background-color: #663399; + color: #fff; + font-size: 30px; + display: flex; + align-items: center; + justify-content: center; + scroll-snap-align: end; +} + +.scroller > div:nth-child(2n) { + background-color: #fff; + color: #663399; +} +``` + +此处最相关的部分为 `scroll-snap-align: end`——指定右侧的边(即此情形中沿 x 轴的“末侧”)为吸附点。 + +最后指定滚动外边距的值,为第二个和第三个子元素指定不同的值: + +```css +.scroller > div:nth-child(2) { + scroll-margin-inline-end: 1rem; +} + +.scroller > div:nth-child(3) { + scroll-margin-inline-end: 2rem; +} +``` + +这意味着当滚动过中间的子元素后,滚动将吸附至第二个 `
` 行末边的 `1rem` 外处,及第三个 `
` 行末边的 `2rems` 外处。 + +#### 结果 + +请自行尝试: + +{{EmbedLiveSample("简单演示", "100%", 300)}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-inline-start/index.md b/files/zh-cn/web/css/scroll-margin-inline-start/index.md new file mode 100644 index 00000000000000..71369f14bc43f3 --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-inline-start/index.md @@ -0,0 +1,134 @@ +--- +title: scroll-margin-inline-start +slug: Web/CSS/scroll-margin-inline-start +--- + +{{CSSRef}} + +**`scroll-margin-inline-start`** 属性定义了滚动吸附区域在行向首侧的外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-inline-start.html")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-inline-start: 10px; +scroll-margin-inline-start: 1em; + +/* 全局值 */ +scroll-margin-inline-start: inherit; +scroll-margin-inline-start: initial; +scroll-margin-inline-start: revert; +scroll-margin-inline-start: revert-layer; +scroll-margin-inline-start: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器行首边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 示例 + +### 简单演示 + +此示例所实现的内容与上述互动示例非常相似,但此处将解释其实现方法。 + +此处的目标为创建四个横向滚动区块,其中第二个和第三个吸附至指定位置——靠近但不恰好位于每个区块的左侧。 + +#### HTML + +表示这些区块的 HTML 非常简单: + +```html +
+
1
+
2
+
3
+
4
+
+``` + +#### CSS + +一起来过一遍 CSS。外层容器有如下样式: + +```css +.scroller { + text-align: left; + width: 250px; + height: 250px; + overflow-x: scroll; + display: flex; + box-sizing: border-box; + border: 1px solid #000; + scroll-snap-type: x mandatory; +} +``` + +与滚动吸附相关的主要部分为 `overflow-x: scroll`——确保内容可滚动且不被隐藏——以及 `scroll-snap-type: x mandatory`——要求必须沿横轴出现滚动吸附,且滚动总将止于吸附点。 + +子元素有如下样式: + +```css +.scroller > div { + flex: 0 0 250px; + width: 250px; + background-color: #663399; + color: #fff; + font-size: 30px; + display: flex; + align-items: center; + justify-content: center; + scroll-snap-align: start; +} + +.scroller > div:nth-child(2n) { + background-color: #fff; + color: #663399; +} +``` + +此处最相关的部分为 `scroll-snap-align: start`——指定左侧的边(即此情形中沿 x 轴的“首侧”)为吸附点。 + +最后指定滚动外边距的值,为第二个和第三个子元素指定不同的值: + +```css +.scroller > div:nth-child(2) { + scroll-margin-inline-start: 1rem; +} + +.scroller > div:nth-child(3) { + scroll-margin-inline-start: 2rem; +} +``` + +这意味着当滚动过中间的子元素后,滚动将吸附至第二个 `
` 行首边的 `1rem` 外处,及第三个 `
` 行首边的 `2rems` 外处。 + +#### 结果 + +请自行尝试: + +{{EmbedLiveSample("简单演示", "100%", 300)}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-inline/index.md b/files/zh-cn/web/css/scroll-margin-inline/index.md new file mode 100644 index 00000000000000..56310bf122aac8 --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-inline/index.md @@ -0,0 +1,147 @@ +--- +title: scroll-margin-inline +slug: Web/CSS/scroll-margin-inline +--- + +{{CSSRef}} + +[简写属性](/zh-CN/docs/Web/CSS/Shorthand_properties) **`scroll-margin-inline`** 设置了元素的行向滚动外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-inline.html")}} + +## 属性构成 + +此属性为下列 CSS 属性的简写属性: + +- {{CSSXref("scroll-margin-inline-end")}} +- {{CSSXref("scroll-margin-inline-start")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-inline: 10px; +scroll-margin-inline: 1em 0.5em; + +/* 全局值 */ +scroll-margin-inline: inherit; +scroll-margin-inline: initial; +scroll-margin-inline: revert; +scroll-margin-inline: revert-layer; +scroll-margin-inline: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器对应边的外边距。 + +## 描述 + +`scroll-margin` 值表示定义滚动吸附区域的外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 示例 + +### 简单演示 + +此示例所实现的内容与上述互动示例非常相似,但此处将解释其实现方法。 + +此处的目标为创建四个横向滚动区块,其中第二个和第三个吸附至指定位置——靠近但不恰好位于每个区块的右侧。 + +#### HTML + +表示这些区块的 HTML 非常简单: + +```html +
+
1
+
2
+
3
+
4
+
+``` + +#### CSS + +一起来过一遍 CSS。外层容器有如下样式: + +```css +.scroller { + text-align: left; + width: 250px; + height: 250px; + overflow-x: scroll; + display: flex; + box-sizing: border-box; + border: 1px solid #000; + scroll-snap-type: x mandatory; +} +``` + +与滚动吸附相关的主要部分为 `overflow-x: scroll`——确保内容可滚动且不被隐藏——以及 `scroll-snap-type: x mandatory`——要求必须沿横轴出现滚动吸附,且滚动总将止于吸附点。 + +子元素有如下样式: + +```css +.scroller > div { + flex: 0 0 250px; + width: 250px; + background-color: #663399; + color: #fff; + font-size: 30px; + display: flex; + align-items: center; + justify-content: center; + scroll-snap-align: end; +} + +.scroller > div:nth-child(2n) { + background-color: #fff; + color: #663399; +} +``` + +此处最相关的部分为 `scroll-snap-align: end`——指定右侧的边(即此情形中沿 x 轴的“末侧”)为吸附点。 + +最后指定滚动外边距的值,为第二个和第三个子元素指定不同的值: + +```css +.scroller > div:nth-child(2) { + scroll-margin-inline: 1rem; +} + +.scroller > div:nth-child(3) { + scroll-margin-inline: 2rem; +} +``` + +这意味着当滚动过中间的子元素后,滚动将吸附至第二个 `
` 行末边的 `1rem` 外处,及第三个 `
` 行末边的 `2rems` 外处。 + +> **备注:** 此处虽然在行向轴(即此情形中的 x 轴)的首侧*和*末侧均设置了 `scroll-margin`,但真正相关的仅有末侧边。此处若仅在此边上设置滚动外边距,例如 `scroll-margin-inline: 0 1rem` 或 `scroll-margin-inline-end: 1rem`,则效果相同。 + +#### 结果 + +请自行尝试: + +{{EmbedLiveSample("简单演示", "100%", 300)}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-left/index.md b/files/zh-cn/web/css/scroll-margin-left/index.md new file mode 100644 index 00000000000000..150d961e009d77 --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-left/index.md @@ -0,0 +1,51 @@ +--- +title: scroll-margin-left +slug: Web/CSS/scroll-margin-left +--- + +{{CSSRef}} + +**`scroll-margin-left`** 属性定义了滚动吸附区域的左外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-left.html")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-left: 10px; +scroll-margin-left: 1em; + +/* 全局值 */ +scroll-margin-left: inherit; +scroll-margin-left: initial; +scroll-margin-left: revert; +scroll-margin-left: revert-layer; +scroll-margin-left: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器左侧边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-right/index.md b/files/zh-cn/web/css/scroll-margin-right/index.md new file mode 100644 index 00000000000000..8de106ec291442 --- /dev/null +++ b/files/zh-cn/web/css/scroll-margin-right/index.md @@ -0,0 +1,51 @@ +--- +title: scroll-margin-right +slug: Web/CSS/scroll-margin-right +--- + +{{CSSRef}} + +**`scroll-margin-right`** 属性定义了滚动吸附区域的右外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 + +{{EmbedInteractiveExample("pages/css/scroll-margin-right.html")}} + +## 语法 + +```css +/* 值 */ +scroll-margin-right: 10px; +scroll-margin-right: 1em; + +/* 全局值 */ +scroll-margin-right: inherit; +scroll-margin-right: initial; +scroll-margin-right: revert; +scroll-margin-right: revert-layer; +scroll-margin-right: unset; +``` + +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器右侧边的外边距。 + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 规范 + +{{Specifications}} + +## 浏览器兼容性 + +{{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin-top/index.md b/files/zh-cn/web/css/scroll-margin-top/index.md index 6fd87edc7f213e..4307722af3c865 100644 --- a/files/zh-cn/web/css/scroll-margin-top/index.md +++ b/files/zh-cn/web/css/scroll-margin-top/index.md @@ -5,35 +5,37 @@ slug: Web/CSS/scroll-margin-top {{CSSRef}} -`scroll-margin-top` 属性定义了滚动捕捉区域的顶边距,用于在捕捉视口上捕捉该盒子。滚动捕捉区域是由变换后的边框决定的,找到它的矩形边界框(在滚动容器的坐标空间轴中轴对齐),然后添加指定的起始点。 +**`scroll-margin-top`** 属性定义了滚动吸附区域的上外边距,此区域用于将此盒吸附至滚动口。滚动吸附区域的确定方法为:取变换后的边框盒,求其矩形包围盒(与滚动容器的坐标空间中的轴对齐),再加上指定的外边距。 {{EmbedInteractiveExample("pages/css/scroll-margin-top.html")}} ## 语法 ```css -/* values */ +/* 值 */ scroll-margin-top: 10px; scroll-margin-top: 1em; -/* Global values */ +/* 全局值 */ scroll-margin-top: inherit; scroll-margin-top: initial; +scroll-margin-top: revert; +scroll-margin-top: revert-layer; scroll-margin-top: unset; ``` -### 值 +### 取值 -- `` - - : 滚动容器顶部边缘的起点 +- {{CSSXref("<length>")}} + - : 滚动容器上侧边的外边距。 -## 标准定义 +## 形式定义 -{{cssinfo}} +{{CSSInfo}} -## 标准语法 +## 形式语法 -{{csssyntax}} +{{CSSSyntax}} ## 规范 @@ -42,3 +44,8 @@ scroll-margin-top: unset; ## 浏览器兼容性 {{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/) diff --git a/files/zh-cn/web/css/scroll-margin/index.md b/files/zh-cn/web/css/scroll-margin/index.md index 1ad7b11aa11863..0de98b5e2404b7 100644 --- a/files/zh-cn/web/css/scroll-margin/index.md +++ b/files/zh-cn/web/css/scroll-margin/index.md @@ -5,40 +5,147 @@ slug: Web/CSS/scroll-margin {{CSSRef}} -**`scroll-margin`** 属性是修改一系列 `scroll-margin` 手写特性的快捷方式,它分配值的方式与 `margin` 属性为各个 `margin-*` 手写特性分配值的方式非常类似。 +[简写属性](/zh-CN/docs/Web/CSS/Shorthand_properties) **`scroll-margin`** 同时设置元素的所有滚动外边距,其赋值方式较为类似 {{CSSXref("margin")}} 属性为元素外边距赋值的方式。 {{EmbedInteractiveExample("pages/css/scroll-margin.html")}} -`scroll-margin` 属性的值代表用于将盒元素拖拽到显示区域的拖拽滚动区域的起点。拖拽滚动区域由是由转换后边框大小的盒元素决定的,它会找到盒元素的矩形边界(在滚动的容器的坐标空间轴上),并添加指定的起点。 +## 属性构成 -{{cssinfo}} +此属性为下列 CSS 属性的简写属性: -## Syntax +- {{CSSXref("scroll-margin-bottom")}} +- {{CSSXref("scroll-margin-left")}} +- {{CSSXref("scroll-margin-right")}} +- {{CSSXref("scroll-margin-top")}} + +## 语法 ```css -/* values */ +/* 值 */ scroll-margin: 10px; scroll-margin: 1em 0.5em 1em 1em; -/* Global values */ +/* 全局值 */ scroll-margin: inherit; scroll-margin: initial; +scroll-margin: revert; +scroll-margin: revert-layer; scroll-margin: unset; ``` -### Values +### 取值 + +- {{CSSXref("<length>")}} + - : 滚动容器对应边的外边距。 + +## 描述 + +You can see the effect of `scroll-margin` by scrolling to a point partway between two of the "pages" of the example's content. The value specified for `scroll-margin` determines how much of the page that's primarily outside the snapport should remain visible. + +Thus, the `scroll-margin` values represent outsets defining the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + +## 形式定义 + +{{CSSInfo}} + +## 形式语法 + +{{CSSSyntax}} + +## 示例 -- {{cssxref("<length>")}} - - : 从滚动容器的相应边缘开始。 +### 简单演示 -### Formal syntax +此示例所实现的内容与上述互动示例非常相似,但此处将解释其实现方法。 -{{csssyntax}} +此处的目标为创建四个横向滚动区块,其中第二个和第三个吸附至指定位置——靠近但不恰好位于每个区块的左侧。 + +#### HTML + +表示这些区块的 HTML 非常简单: + +```html +
+
1
+
2
+
3
+
4
+
+``` + +#### CSS + +一起来过一遍 CSS。外层容器有如下样式: + +```css +.scroller { + text-align: left; + width: 250px; + height: 250px; + overflow-x: scroll; + display: flex; + box-sizing: border-box; + border: 1px solid #000; + scroll-snap-type: x mandatory; +} +``` -## Specification +与滚动吸附相关的主要部分为 `overflow-x: scroll`——确保内容可滚动且不被隐藏——以及 `scroll-snap-type: x mandatory`——要求必须沿横轴出现滚动吸附,且滚动总将止于吸附点。 + +子元素有如下样式: + +```css +.scroller > div { + flex: 0 0 250px; + width: 250px; + background-color: #663399; + color: #fff; + font-size: 30px; + display: flex; + align-items: center; + justify-content: center; + scroll-snap-align: start; +} + +.scroller > div:nth-child(2n) { + background-color: #fff; + color: #663399; +} +``` + +此处最相关的部分为 `scroll-snap-align: start`——指定左侧的边(即此情形中沿 x 轴的“首侧”)为吸附点。 + +最后指定滚动外边距的值,为第二个和第三个子元素指定不同的值: + +```css +.scroller > div:nth-child(2) { + scroll-margin: 1rem; +} + +.scroller > div:nth-child(3) { + scroll-margin: 2rem; +} +``` + +这意味着当滚动过中间的子元素后,滚动将吸附至第二个 `
` 左侧边的 `1rem` 外处,及第三个 `
` 左侧边的 `2rems` 外处。 + +> **备注:** 此处虽然在所有侧均设置了 `scroll-margin`,但真正相关的仅有首侧边。此处若仅在此边上设置滚动外边距,例如 `scroll-margin-inline-start: 1rem` 或 `scroll-margin: 0 0 0 1rem`,则效果相同。 + +#### 结果 + +请自行尝试: + +{{EmbedLiveSample("简单演示", "100%", 300)}} + +## 规范 {{Specifications}} -## Browser compatibility +## 浏览器兼容性 {{Compat}} + +## 参见 + +- [CSS 滚动吸附](/zh-CN/docs/Web/CSS/CSS_scroll_snap) +- [用 CSS 滚动吸附明确控制滚动](https://web.dev/css-scroll-snap/)