介绍前端知识点——vh,vw是什么?宽度的默认行为?视口?文档流?margin :0 auto;实现块级元素水平居中的原理?

06-01 1318阅读

介绍前端知识点——vh,vw是什么?宽度的默认行为?视口?文档流?margin :0 auto;实现块级元素水平居中的原理?

介绍前端知识点——vh,vw是什么?宽度的默认行为?视口?文档流?margin :0 auto;实现块级元素水平居中的原理?

目录

一、介绍视口、vh和vw 

1、视口(viewport)

2. vh(viewport height)

3. vw(viewport width)

4. vh 和 vw 的关系

5、与其他单位的对比

6. 实际应用

7. 注意事项

8. 性能优势

 二、介绍文档流

文档流的特点

块级元素(Block-level Elements):

行内元素(Inline Elements):

混合元素(Inline-block Elements):

文档流的布局规则

 三、宽度的默认行为

默认行为

示例

效果

为什么宽度会占满视口宽度?

如何控制宽度

1. 设置固定宽度

2. 设置百分比宽度

3. 使用 vw 单位

总结

四、margin :0 auto;水平居中的原理 

1. 块级元素的默认行为

2. margin: 0 auto; 的原理

3. 实现水平居中的条件

4. 示例

效果

5. 注意事项

6. 性能优势

7、疑问解答 :为什么上下外边距要设为0?

4-7-1. 避免垂直方向上的额外间距

4-7-2. 防止元素的默认 margin 影响布局

4-7-3. 避免 margin 继承问题

4-7-4. 确保垂直方向上的对齐

4-7-5. 性能和可维护性


一、介绍视口、vh和vw 

   vh 和 vw 是 CSS 中的相对单位,分别代表视口高度(viewport height)和视口宽度(viewport width)的百分比。它们与视口的尺寸密切相关,用于创建响应式布局。以下是详细介绍:

1、视口(viewport)

  • 定义:视口是用户在浏览器中看到的网页区域的大小。

  • 尺寸:视口的宽度和高度取决于设备屏幕的大小和浏览器窗口的大小。

  • 响应式设计:在响应式设计中,视口的尺寸会根据设备的不同而变化。

    2. vh(viewport height)

    • 定义:1vh 等于视口高度的 1%。

    • 用途:用于根据视口高度设置元素的高度。

    • 示例

      .element {
          height: 100vh; /* 元素高度为视口高度的100% */
      }

      3. vw(viewport width)

      • 定义:1vw 等于视口宽度的 1%。

      • 用途:用于根据视口宽度设置元素的宽度。

      • 示例

        .element {
            width: 50vw; /* 元素宽度为视口宽度的50% */
        }

        4. vh 和 vw 的关系

        • 独立性:vh 和 vw 是独立的单位,分别基于视口的高度和宽度。

        • 响应性:当视口的尺寸发生变化时,vh 和 vw 的值也会相应变化。

        • 灵活性:可以单独或组合使用 vh 和 vw 来创建灵活的布局。

          5、与其他单位的对比

          • px(像素):固定单位,不随视口大小变化。

          • %(百分比):相对于父元素的高度,而不是视口。

          • vh:相对于视口的高度,不依赖于父元素。

            6. 实际应用

            • 全屏布局:使用 height: 100vh; 创建全屏的网页布局。

            • 响应式设计:使用 vw 和 vh 确保元素在不同设备上保持一致的视觉效果。

            • 动态调整:根据视口的尺寸动态调整元素的大小。

              7. 注意事项

              • 浏览器兼容性:vh 和 vw 在现代浏览器中得到了广泛支持,但在一些旧版本的浏览器中可能存在问题。

              • 滚动条的影响:在某些浏览器中,100vh 或 100vw 可能会计算到滚动条的宽度,导致布局问题。可以通过以下方式解决

                .element {
                    height: 100vh;
                    box-sizing: border-box; /* 包括边框和内边距在内 */
                }

                8. 性能优势

                • 减少 JavaScript 依赖:使用 vh 和 vw 可以减少对 JavaScript 的依赖,简化布局代码。

                • 提高用户体验:确保网页在不同设备上的表现更加一致,从而提高用户体验。

                   二、介绍文档流

                  在网页设计和开发中,文档流(Document Flow)是指网页元素在页面上按照默认的布局规则自动排列的方式。文档流是浏览器在没有额外样式干预的情况下,按照 HTML 元素的默认行为进行布局的一种机制。

                  文档流的特点

                  1. 块级元素(Block-level Elements):
                    • 块级元素默认占据一行,从上到下垂直排列。

                    • 常见的块级元素包括:、

                        等。
                    • 块级元素的宽度默认为父容器的宽度,高度由内容决定。

                    • 行内元素(Inline Elements):
                      • 行内元素默认与相邻的元素在同一行排列,直到遇到块级元素或行内元素的宽度超出父容器。

                      • 常见的行内元素包括:、、、、 等。

                      • 行内元素的宽度和高度由内容决定。

                      • 混合元素(Inline-block Elements):
                        • 行内块级元素结合了块级元素和行内元素的特性。

                        • 它们可以与其他元素在同一行排列,但可以设置宽度、高度和边距等块级属性。

                        • 常见的行内块级元素包括:、 等。

                  文档流的布局规则

                  • 垂直排列:块级元素按照从上到下的顺序垂直排列。

                  • 水平排列:行内元素按照从左到右的顺序水平排列。

                  • 父容器影响:子元素的排列方式受父容器的影响,父容器的宽度和高度会影响子元素的布局。

                     三、宽度的默认行为

                    默认行为

                    • 块级元素(如 div):默认情况下,块级元素会占据其父容器的全部可用宽度。

                    • 内联元素(如 span):默认情况下,内联元素的宽度由其内容决定,不会自动占满父容器。

                      示例

                      假设我们有一个 div 元素,我们只设置了 height: 100vh;:

                       
                      
                      .fullscreen {
                          height: 100vh; /* 设置高度为视口高度的100% */
                          background-color: #f0f0f0; /* 设置背景颜色 */
                      }
                      效果
                      • div 元素的高度将始终等于视口的高度。

                      • div 元素的宽度将默认占满其父容器的宽度(通常是整个视口宽度)。

                        为什么宽度会占满视口宽度?

                        这是因为 div 是一个块级元素,其默认的 width 是 auto,这意味着它会尽可能地占据父容器的宽度。如果父容器的宽度是视口宽度(例如 body 的宽度默认是视口宽度),那么 div 的宽度也会占满视口宽度。

                        如何控制宽度

                        如果你希望明确设置宽度,可以使用以下方法:

                        1. 设置固定宽度
                        .fullscreen {
                            height: 100vh;
                            width: 500px; /* 设置固定宽度 */
                            margin: 0 auto; /* 水平居中 */
                        }
                        2. 设置百分比宽度
                        .fullscreen {
                            height: 100vh;
                            width: 80%; /* 设置宽度为父容器宽度的80% */
                            margin: 0 auto; /* 水平居中 */
                        }
                        3. 使用 vw 单位
                        .fullscreen {
                            height: 100vh;
                            width: 100vw; /* 设置宽度为视口宽度的100% */
                        }

                        总结

                        • height: 100vh;:设置元素的高度为视口高度的 100%。

                        • 宽度行为:块级元素默认会占满父容器的宽度,这并不依赖于 height 的设置。

                        • 控制宽度:可以通过 width 属性或 vw 单位显式设置宽度。

                          四、margin :0 auto;水平居中的原理 

                          margin: 0 auto; 是 CSS 中用于水平居中块级元素的一种常见方法。它通过设置元素的左右外边距为 auto,使元素在父容器中水平居中。以下是详细解释:

                          1. 块级元素的默认行为

                          • 块级元素(如 div、p 等)默认会占据其父容器的全部可用宽度。

                          • 内联元素(如 span、a 等)默认不会占据父容器的全部宽度。

                            2. margin: 0 auto; 的原理

                            • margin 属性:用于设置元素周围的外边距。

                            • auto 值:当左右外边距设置为 auto 时,浏览器会自动计算并分配相等的左右外边距,从而使元素水平居中。

                              3. 实现水平居中的条件

                              • 元素必须是块级元素。

                              • 元素的宽度不能是 auto(默认值),否则元素会占据父容器的全部宽度,无法居中。

                                4. 示例

                                假设我们有一个 div 元素,我们希望它在父容器中水平居中:

                                
                                	
                                		
                                		水平居中
                                		
                                			.container {
                                				width: 800px; /* 父容器的宽度 */
                                				height: 400px; /* 父容器的高度 */
                                				background-color: #f0f0f0; /* 父容器的背景颜色 */
                                			}
                                			
                                			.centered-box {
                                				width: 500px; /* 子元素的宽度 */
                                				height: 300px; /* 子元素的高度 */
                                				background-color: #d4b5d5; /* 子元素的背景颜色 */
                                				margin: 0 auto; /* 水平居中 */
                                			}	
                                		
                                		
                                	
                                	
                                		
                                		    
                                		
                                	
                                
                                效果
                                • centered-box 元素的宽度被设置为 500px。

                                • margin: 0 auto; 将 centered-box 的上下外边距设置为 0,左右外边距设置为 auto。

                                • 浏览器会自动计算左右外边距,使 centered-box 在 container 中水平居中。

                                  介绍前端知识点——vh,vw是什么?宽度的默认行为?视口?文档流?margin :0 auto;实现块级元素水平居中的原理?

                                  5. 注意事项

                                  • 宽度必须明确:子元素的宽度不能是 auto,否则无法居中。

                                  • 块级元素:这种方法只适用于块级元素。

                                  • 响应式设计:在响应式设计中,可以结合 vw 单位或百分比宽度来实现更灵活的布局。

                                    6. 性能优势

                                    • 使用 margin: 0 auto; 是一种纯 CSS 的解决方案,不需要 JavaScript。

                                    • 它使得布局代码简洁,提高了可维护性。

                                      7、疑问解答 :为什么上下外边距要设为0?

                                              在使用 margin: 0 auto; 实现水平居中时,上下边距设置为 0 是为了确保元素在垂直方向上没有额外的间距,从而保持布局的整洁和预期效果。以下是具体原因:

                                      4-7-1. 避免垂直方向上的额外间距
                                      • 默认行为:块级元素通常有默认的上下边距,这可能会导致元素在垂直方向上出现不必要的间距。

                                      • 设置为 0:将上下边距设置为 0 可以消除这些默认的垂直间距,确保元素紧密贴合父容器的上下边缘。

                                        4-7-2. 防止元素的默认 margin 影响布局
                                        • 默认 margin:某些块级元素(如 h1、p 等)有默认的上下边距,这可能会干扰布局。

                                        • 显式设置:通过显式地将上下边距设置为 0,可以确保这些默认值不会影响元素的垂直位置。

                                          4-7-3. 避免 margin 继承问题
                                          • 继承问题:虽然块级元素通常不会继承父元素的 margin,但在某些情况下可能会出现意外的边距。

                                          • 显式控制:设置上下边距为 0 可以避免这种不确定性,确保布局的一致性。

                                            4-7-4. 确保垂直方向上的对齐
                                            • 垂直对齐:在水平居中的同时,通常希望元素在垂直方向上也保持预期的位置。

                                            • 设置为 0:通过将上下边距设置为 0,可以确保元素在垂直方向上没有偏移,从而保持布局的整洁。

                                              4-7-5. 性能和可维护性
                                              • 简洁代码:显式设置上下边距为 0 可以减少不必要的 CSS 重置代码,使布局代码更简洁。

                                              • 可维护性:明确的设置可以提高代码的可读性和可维护性,减少未来调试和修改的难度。

                                                 介绍前端知识点——vh,vw是什么?宽度的默认行为?视口?文档流?margin :0 auto;实现块级元素水平居中的原理?

                                                介绍前端知识点——vh,vw是什么?宽度的默认行为?视口?文档流?margin :0 auto;实现块级元素水平居中的原理?

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码