• html5--flex布局问题


    移动端布局;

    移动端布局目前流行的是两种;一种是利用弹性盒模型flex布局,一种是使用rem单位搭配viewport标签使宽度自适应,还需要借助一小段js;才能完美制作出自适应页面;下面记录总结一下,自己这两天的作页面时应用到的属性;

    一、Flex布局是什么?

    Flex是Flexible Box的缩写,意为”弹性布局”。任何一个盒模型都可以用flex布局。display:flex;一般加给盒模型的父级;

    <style>
    .box{
        display:flex;
      }
    </style>
    <
    body> <div class="box"> <div></div> </div> </body>

    注意:不仅块元素可以使用display:flex;行内元素也可以;display:inline-flex;flex:1;等比;自动分配剩余空间分为1份;

    flex容器的属性(注意一下效果都是给父级加子级实现的效果;)

    1.flex-direction

    主要设置主轴的方向,元素在父级的排列方式。

    flex-direction:row;从左到右排列;加上-reverse反向排列;

    flex-direction:column;从上到下排列;

    2.flex-wrap 主要设置元素是否折行显示;如果希望控制元素一行或者多行排列,可以使用flex-wrap;

    flex项目在flex容器中默认只显示一行。

    flex-wrap:nowrap;根据屏幕自动缩放大小;

    flex-wrap:wrap;根据每个子item动态布局;

    3.flex-basis:80px;设置弹性盒模型的初始长度为80px;可接收数值,auto,initial,inherit

    4.justify-content 元素自己在flex容器中的水平方向对齐方式;

    flex-start左边靠齐(默认)

    flex-end右边靠齐

    center居中对齐

    space-between:平分空白空间;左右两边靠拢剩下平分;


    <
    style> .box{ width:500px; height:500px; border:1px solid #000; display:flex; justify-content:space-between; } .box div{ width:60px; height:100px; border:1px solid #F00; } </style> </head> <body> <div class="box"> <div></div> <div></div> <div></div> <div></div> <div></div> </div> </body>

    space-around:分布在flex容器内,左右两边的空隙是元素与元素间的一般

     
    <style>
        .box{
            500px;
            height:500px;
            border:1px solid #000;
            display:flex;
            justify-content:space-around;
        }
        .box div{
            60px;
            height:100px;
            border:1px solid #F00;
            
        }
    </style>

    </head>

    <body>
        <div class="box">
            <div></div>
            <div></div>
            <div></div>
            <div></div>
            <div></div>
        </div>
    </body>

     5.align-items flex项目在容器中的对齐方式;类似与justify-content;只不过它是纵向对齐方式;可以设置容器内所有元;可以与justify-content搭配使用;

    接收值为,flex-start,center,flex-end ,stretch(默认拉伸充满flex容器),space-between,space-around;

    6.align-self:改变本身的对齐方式;justify-content + align-items改变的是子级的排列方式;
       center/flex-start/flex-end7.复合使用;.justify-content + align-items出现的一些效果。代码就不传了,很简单的;(注意属性都是加给父级的)

    display:flex;     默认是首行居左的效果
    justify-content:center; 首行居中效果;
    justify-content:flex-end;首行居右;
    align-items:center; 靠左居中效果;
    align-items:center;justify-content:center; 上下左右居中效果;
    justify-content:center;align-items:flex-end;靠下居中;
    justify-content:flex-end;align-itmes:felx-end;右下角;
    justify-content:space-between;空白之间;都向左右两边靠拢;
    felx-direction:column( 改变方向由行改变成列;);justify-content:space-between;靠左一上一下;
    felx-direction:column;justify-content:space-between;justify-content:center;靠中间一上一下;

    注意:当主轴方向是row时,align-items的对齐方式是纵向,当主轴方向为column时,align-items对齐方式是水平方向;


    二.viewport+rem布局

    1.什么是viewport???

    viewport浏览器显示网页的实际宽度;成为网页可视区。目前viewPort的值大多数是980px;viewport的对于多屏时代的移动端布局有着极为重要的作用;

    2.设置viewport

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    • width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
    • height:和 width 相对应,指定高度。
    • initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。(如果设为0.5的话切图时可以按照原先大小布局,不过有兼容性问题)
    • maximum-scale:允许用户缩放到的最大比例。
    • minimum-scale:允许用户缩放到的最小比例。
    • user-scalable:用户是否可以手动缩放。

    3.rem是css新增加的一个相对单位(root em,根em)使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML字体根元素。一般给html标签设置字体大小,相对于这个值来计算尺寸大小;

    px与rem可以一起搭配使用不过如何选择?

    对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可 。

    对于需要适配各种移动设备,使用rem,例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备。

    为了更好的适应不同浏览器我们还需要js动态改变根节点字体的大小
    <script> var doc = document.documentElement; alert(doc.clientWidth) doc.style.fontSize = doc.clientWidth/320 * 100 + 'px'; window.onresize = function(){ doc.style.fontSize = doc.clientWidth/320 * 100 + 'px'; } </script>

    1.clientWidth是不同屏幕的可视区宽
    2.320是设计稿的宽
    3.100是根字体大小

    三,移动端布局总结!

    1.切图时实际像素与视觉有一个1:2的比例;所以需要计算实际尺寸;

    2.当切一些图片时,按照设计稿大小切。在HTML中利用background-size进行压缩;

    3.移动端盒模型,使用box-sizing:border-box;使盒模型边框放在盒模型内部不占用空间。否则页面会有偏差;

    4.移动端一布局一般采用,两头固定中间自适应布局;

    11
  • 相关阅读:
    封装异常处理之坑
    30multipart/form-data和application/x-www-form-urlencoded的区别(二)urlencoded之自动deocde
    使用MAT时的Shallow Size和 Retained Size的区别
    当动态代理遇到ioc
    线程池的原理
    synchroned原理与对象头(yet)
    mysql压力测试与qps监控
    一种mysql jvm死锁
    Android Jni变量对照表
    结构体中使用函数指针
  • 原文地址:https://www.cnblogs.com/milx/p/6236495.html
Copyright © 2020-2023  润新知