网站布局的几种方式

665 阅读5分钟

1.盒模型

这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战

感激相遇 你好 我是y大壮

作者:y大壮
链接:juejin.cn/user/756923… 来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

🌊🌈关于前言:

文章部分内容及图片出自网络,如有问题请与我本人联系

  • 盒模型的真实大小固定不变,增加内边距,改变的是内容区

    • 内容区,定义的高度和宽度

    • 边框,边框的粗细 边框的颜色 边框的类型 border

    • 内边距,内容区与边框之间的距离 padding

    • 外边距,元素与元素之间的距离 margin

      • /* 外边距,在水平方向上使用auto可以水平剧中,但是垂直方向上不可以,和元素所占的空间位置相关*/
        ​
        如何子盒子在父盒子中显示不了上边距就开启dfc
        1.border:1px solid yellow; 设置边框
        2.overflow:hidden;  清除浮动
        3.position:absolute;    设置定位
        <!DOCTYPE html>
        <html>
        <head>
            <title></title>
            <style type="text/css">
                .content{
                    width: 200px;
                    height: 200px;
                    background-color: seagreen;
                    /* 开启dfc*/
                    /*border: 1px solid yellow;*/
                    /*overflow: hidden;*/
                    /*position: absolute;*/
                    margin-top: 50px;
                }
                .item2{
                    width: 100px;
                    height: 100px;
                    border: 1px solid red;
                    background-color: sandybrown;
                    margin-top: 20px;
                }
        ​
            </style>
        </head>
        <body>
        <!--    盒模型:
        盒模型的真实大小固定不变,增加内边距,改变的是内容区
            1. 内容区,定义的高度和宽度
            2. 边框,边框的粗细 边框的颜色 边框的类型
            3. 内边距,内容区与边框之间的距离
            4. 外边距,元素与元素之间的距离
        -->
        <div class="content">
            <div class="item2"></div>
        </div>
        </body>
        </html>
        

2.网站的布局方式

  1. 元素之间的转换和浮动
    • 块级元素变成内联块元素

      display:inline-block;
      margin-left:-5px;                       
      
    • 浮动

    (1) 浮动的元素性质发生了改变,变成了内联块元素
    (2) 浮动元素脱离开文档流
    (3) 浮动的元素会导致父元素的高度塌陷
    (4) 浮动的元素在遇到包含框或者另一个浮动元素,则停止浮动
    ​
    高度塌陷
     解决方式:开启bfc
    
    • 解决高度塌陷的方法

      • 解决方式:开启bfc

        1. overflow: hidden; 副作用相对来说较小,但是会剪切掉超出元素的其他部分
        2. float: left;也会导致父元素脱离文档流
        3. position: absolute; 也会导致父元素脱离文档流
        4. display: inline-block; 但是会导致宽度
        5. .nav::after{ 终极解决 content: ""; display: block; clear: both; 清除浮动 }
  2. 定位
    position: absolute;
    
    定位:指定元素在浏览器中任意摆放位置
        默认值:没有开启定位 static
        (1) 相对定位,相对于元素原来的位置发生偏移 relative
            不会脱离文档流  元素的性质也不会发生改变
        (2) 绝对定位,absolute
            脱离文档流   元素性质也发生改变   元素的层级上升一个层级
               1-如果祖先元素开启定位,则绝对定位的元素相对于开启定位的祖先元素,发生偏移量。
               2-祖先元素没有开启定位,则以浏览器作为参照物发生偏移量
         (3) 固定定位(是绝对定位的特殊的一种情况)fixed 对于body
               参照物永远是相对于浏览器窗口body而定位,不会随着浏览器的滚动发生改变。
               
    z-index: 10;
     /* 元素的层级
       只有开启了定位的元素,z-index才生效
       值越大层级越高
     */
    
  3. 水平和垂直居中
    /*1、块级元素和块级元素之间的水平方向和垂直反向上的居中
    第一种情况
       position: absolute;
       left: 50%;
       right: 50%;
       margin-left: -100px;
       margin-top: -100px;
    第二种情况,不知道子元素的高度和宽度
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    第三种情况,改变元素所占的
       position: absolute;
       top: 0px;
       bottom: 0px;
       left: 0px;
       right: 0px;
       margin: auto;
                */
    
  4. 弹性布局
    /*弹性盒模型包含了弹性容器 和弹性子项目*/
    /* 1.开启弹性窗口 display: flex;*/
       display: flex;
    /* 2.决定子项目在主轴的排列方向
       row,水平方向
       column,垂直方向
    */
       flex-direction: row;
    /* 3.弹性子项目在水平方向上的对应方式 justify-content
       (1) flex-start,左对齐
       (2) flex-end,右对齐
       (3) space-between,两端对齐
       (4) center,居中对齐
       (5) space-around,均匀对齐
    */
        justify-content: space-around;
    /* 4.强制换行
        (1) wrap,强制换行
        (2) wrap-reverse,反向强制换行
    */
         flex-wrap: wrap;
    /* 5.在垂直方向上子项目之间的对齐方式
         (1) flex-start,顶部对齐
         (2) flex-end,底部对齐
         (3) center,居中
    */
        align-items: flex-start;
    
    .nav{
                border: 1px solid red;
                /*弹性盒模型包含了弹性容器 和弹性子项目*/
                /* 1.开启弹性窗口 display: flex;*/
                display: flex;
                /* 2.决定子项目在主轴的排列方向
                row,水平方向
                column,垂直方向
                */
                flex-direction: row;
                /* 3.弹性子项目在水平方向上的对应方式 justify-content
                    (1) flex-start,左对齐
                    (2) flex-end,右对齐
                    (3) space-between,两端对齐
                    (4) center,居中对齐
                    (5) space-around,均匀对齐
                    */
                justify-content: space-around;
                /* 4.强制换行
                    (1) wrap,强制换行
                    (2) wrap-reverse,反向强制换行
                */
                flex-wrap: wrap;
                /* 5.在垂直方向上子项目之间的对齐方式
                    (1) flex-start,顶部对齐
                    (2) flex-end,底部对齐
                    (3) center,居中
                */
                align-items: flex-start;
            }
    
  5. 伪元素(图标)
    从阿里巴马图标库里面获取想要的图标,在下载代码,获取css,最后直接使用相应图标的名称。
     <link rel="stylesheet" href="./iconfont.css">
    
  6. 元素层级
    元素层级,只有开启定位的元素,此属性才生效
    z-index: 2;
    设置同一级的元素
    

3.背景定位

/* 1.背景图像*/
    background-image: url("img/login3.jpg");
/* 2.背景平铺方式
    (1) no-repeat,不平铺
    (2) repeat-x,水平方向平铺
    (3) repeat-y,垂直方向平铺
*/
    background-repeat: repeat-x;
/* 3.背景图像的大小
    (1) 100%,水平方向和元素宽度一样,垂直方向自动等比例缩放
    (2) 100% 100%,水平和垂直方向都是100%
    (3) cover 覆盖,图像先无限放大
*/
     background-size: cover;

使用了精灵图的方式(就使用定位的方式,来定位图片的位置)

background-image: url("img/精灵图.png");
/* 1.背景定位 水平方向上 垂直方向上*/
background-position: -190px -10px;