• 网页布局方式


    网页布局的那些样儿

    • 固定布局
    • 流式布局
    • 弹性布局
    • 网格grid布局
    • 自适应布局
    • 响应式布局
    • 伸缩布局

    固定布局

      固定布局(Fixed Layout):网页上所有的元素宽度以像素(px)为单位,不用去在乎什么设备什么浏览器,都是用同一套尺寸去进行布局。在不同环境下的状态时相同的,最常见PC端网上。

    流式布局

      流式布局(Liquid Layout):元素的宽度按照屏幕分辨率自动进行适配调整,保证当前屏幕分辨率发生改变的时候,页面中的元素大小也可以跟着改变。移动端一般采用流式布局(百分比布局)

    1. 左侧固定,右侧自适应等
    2. 两侧固定,中间自适应(圣杯布局)
    3. 等分布局

      (1)左侧固定,右侧自适应

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <style>
        .father {
            display: flex;
            height: 800px;
            background-color: pink;
        }
    
        .left {
             200px;
            height: 300px;
            background-color: red;
        }
    
        .right {
            flex: 1;
            height: 500px;
            background-color: green;
        }
    </style>
    
    <body>
        <div class="father">
            <div class="left"></div>
            <div class="right"></div>
        </div>
    </body>
    
    </html>

      (2)两边固定,中间自适应

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            .father {
                height: 800px;
                background-color: pink;
                margin-left: 200px;
                margin-right: 200px;
            }
    
            .left {
                 200px;
                height: 400px;
                background-color: red;
                position: absolute;
                top: 0;
                left: 0;
            }
    
            .right {
                 200px;
                height: 600px;
                background-color: green;
                position: absolute;
                top: 0;
                right: 0;
            }
        </style>
    </head>
    
    <body>
        <div class="father">
            <div class="left"></div>
            <div class="right"></div>
        </div>
    </body>
    
    </html>

      (3)等分布局

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
                box-sizing: border-box;
            }
    
            ul {
                overflow: hidden;
            }
    
            li {
                 25%;
                float: left;
                list-style: none;
                background-color: pink;
                height: 200px;
                border: 1px solid #000;
            }
        </style>
    </head>
    
    <body>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </body>
    
    </html>

    弹性布局

       弹性布局跟流布局很像,网页宽度不固定,使用 em 或 rem 单位进行相对布局,相对%百分比更加灵活,同时可以支持浏览器的字体大小调整和缩放等的正常显示。但弹性布局也有局限性,如果不对这种布局设置一个最小宽度,当用户缩小窗口到足够小时会造成布局严重错位。(插件flexible.js)。

      rem 结合vw进行移动端适配

       设计图为640px情况下:

        dpr=2

        640px/2=320px

        100vw=320px

        1vw=3.2px

        100px/3.2px=31.25vw

        font-size31.25vw;

         总结

          设计图640px

        html{  font-size31.25vw}

      设计图750px

        html{  font-size26.67vw}

      移动端可以直接加*{box-sizingborder-box}

      不用再去对borderpadding相减

      移动端:

              1、准备工作

                    1: meta标签的设置(禁止缩放)

                    2: dpr设备像素比

                    3: rem单位  vw单位

              vw 结合 rem实现移动端适配

                    设计图为 640px   html{ font-size:31.25vw; }

                    设计图为 750px   html{ font-size:26.67vw; }

                 rem的设置流程:

                    设计图中的大小 / dpr / htmlfont-size == rem

      2分两列的内容  宽度写成百分比

        flexible.js

        流程:

          1:引入插件 flexible.js

            <script src="flexible.js"></script>

          2:删除视口代码  mate

          3:设计图的大小  /100==rem

     

    网格grid布局

      在我们的Web内容中,可以将其分割成很多个内容块,而这些内容块都占据自己的区域(regions),可以将这些区域想像成是一个虚拟的网格。到目前为止,在一个模板中使用不同的结构标签,使用多个浮动和手动计算实现一个布局。这对于Web前端人员来说,这是一件痛苦之事。而网格布局将让你摆脱这样的困局,让你的布局方法变得非常简单与清晰。
      网格布局给了我们一种方法——创建的结构与使用表格(table)布局并没有什么不同。然而,他是在CSS中实现而不是在HTML中实现,同时还可以依赖于媒体查询根据不同的上下文得新定义布局。这对于喜欢响应式设计的同学来说是一个绝对利好的消息。因为你不在需要再担心你的HTML结构而影响你的布局。
      网格布局还可以让我们摆脱现在布局中存在的文档流限制,换句话说,你的结构不需要根据设计稿从上往上布置了。这也意味着您可以自由地更改页面元素位置。这最适合你在不同的断点位置实现你最需要的布局,而不再需要为响应你的设计而担心HTML结构的问题。

    网格布局

          1、触发网格布局:

      displaygrid;(父元素)

          2、设置几行几列

      grid-template-columns:;

      grid-template-rows:;

      根据属性值的个数确定行列数,属性值可以使百分比,也可以是具体像素

          3、关键字 repeat(参数1,参数2

      参数1:重复几次

      参数2:列宽或行高

      如:grid-template-columnsrepeat3,200px);

          4、关键字  auto-fill

      repeatauto-fill):不确定重复多少次

      当容器不确定的情况下,不能用

          5、关键字 fr(片段,分数)

      注意:列宽的分数

      如:grid-template-columns1fr2fr3fr

          6minmaix(最小最大)

      列宽最小不低于多大,最大不超过某一直

           7、关键字

      auto:自动填充

         8、设置行间距和列间距

      grid-row-gap:;

      grid-colum-gap:;

        grid-gap:;

         9、规定元素占有的网格区域

      grid-templete-areas“a b c”“”

      注意:网格里面每个元素必须通过grid-area:; 指定名称

        10、排列顺序

       grid-auto-flow:;columrow

         11:设置每一个内容在单元格内部的对齐方式:

                justify-items: start | end | center | stretch;

                align-items: start | end | center | stretch;

                place-items:  <justify-items>  <align-items>   /*复合式写法*/

          12:设置整个内容区域在容器里面的水平 | 垂直 对齐方式

                justify-content:start | end | center | stretch | space-around |

                space-between | space-evenly;

                align-content: start | end | center | stretch | space-around |

                space-between | space-evenly;

                place-content:  <justify-content>  <align-content>   /* 复合式写法 */

          13、添加在子元素

        grid-column:;

        gird-row:;

    自适应布局

      不同类别的设备创建不同的静态布局,每个静态布局对应一个屏幕分辨率范围。改变屏幕分辨率可以切换调用相应的布局(页面元素位置发生改变而大小不变),但在每个静态布局中,页面元素不随窗口大小的调整发生变化。可以把自适应布局看作是静态布局的一个系列。

      使用自适应布局时,首先在网页代码的头部,加入一样 viewport 标签:

    <meta name="viewport" content="width=device-width, initial-scale=1" />

    响应式布局

      响应式布局的目标是确保一个页面在所有终端上(各种尺寸的PC、手机、ipad等)都能显示出令人满意的效果。通过检测设备信息,决定网页布局方式,即用户如果采用不同的设备访问同一个网页,有可能会看到不一样的展示效果,一般情况下是检测设备屏幕的宽度来实现。可以把响应式布局看作是流式布局和自适应布局设计理念的融合。

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /

        width = device-width:   宽度等于当前设备的宽度

        initial-scale:       初始的缩放比例(默认设置为1.0

        minimum-scale:     允许用户缩放到的最小比例(默认设置为1.0

        maximum-scale:     允许用户缩放到的最大比例(默认设置为1.0

     

        user-scalable:      用户是否可以手动缩放

      媒体查询

        媒体类型和一个或多个检查媒体特性的条件表达式组成

        语法(媒体查询一般放在  css代码最后面)

        @media  媒体类型  and ( 表达式) and (表达式){

          选择符{css样式}

        }

    自适应布局和响应式布局对比:

      不同点:

        1.自适应需要开发多套界面;  响应式只需开发一套界面。

        2. 自适应对页面的屏幕适配是在一定的范围;  响应式是一套页面同时兼容在 pc 端、平板和手机端的各个不同视口,而不是为每个终端做一个特定的版本,所以需要考虑的状态非常多。

      相同点: 

        都是通过检测视口分辨率,使页面适应不同分辨率的视口。

    伸缩布局(Flex box)

      使用 css3 Flex 系列属性进行相对布局,用来为盒模型提供最大的灵活性。对于富媒体和复杂排版的支持非常大,但是存在兼容性问题。任何一个容器都可以指定为 flex 布局,行内元素也可以使用。

      注意:设为 flex 布局后,子元素的 float、clear、vertical-align 属性将失效。

     

     

     

     

     

     

     

     

     

     

     

     

    initial-scale: 初始的缩放比例(默认设置为1.0

    minimum-scale:允许用户缩放到的最小比例(默认设置为1.0

    maximum-scale:允许用户缩放到的最大比例(默认设置为1.0

    user-scalable:用户是否可以手动缩放(默认设置为no,因为我们不希望用户放大缩小页面)

  • 相关阅读:
    noip模拟赛 花
    noip模拟赛 柜(暴力)
    noip模拟赛 读
    Java基础知识强化47:StringBuffer类之StringBuffer的三个面试题
    Java基础知识强化46:StringBuffer类之判断一个字符串是否对称案例
    Java基础知识强化45:StringBuffer类之字符串反转的案例
    Java基础知识强化44:StringBuffer类之把数组拼接成指定格式的字符串的案例
    Java基础知识强化43:StringBuffer类之StringBuffer和String的相互转化
    Java基础知识强化42:StringBuffer类之StringBuffer的截取功能
    Java基础知识强化41:StringBuffer类之StringBuffer的反转功能
  • 原文地址:https://www.cnblogs.com/cyp926/p/13543714.html
Copyright © 2020-2023  润新知