移动端常用布局

时间:2021-09-15 04:59:28

很长一段时间没有写静态页面布局,很多东西都开始模糊了,趁着最近做了一个小项目,把一些静态页面布局的知识简单梳理一下,加深自己的印象

一、流式布局——flex布局

1.流式布局的特征

 (1)宽度自适应,高度固定,但是不是百分百还原设计图

 (2)图标和字体的大小都是固定的,并不是所有的东西都是自适应的

 (3)对于大的banner图(主要指轮播图),宽度自适应

2.流式布局的类型

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

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

 (3)两侧固定,中间自适应

 (4)等分布局 

3-flex布局(弹性布局、伸缩布局)

 给一个盒子设置了属性:display:flex; 则该盒子就变成了一个弹性盒子,而弹性盒子有自己的布局规则

(1)弹性盒子的主轴排列方式

  justify-content——取值:flex-start 、flex-end、center、space-between、space-around

常用取值:space-between 均分对齐排列,两边贴边;space-around 均分对齐排列,不贴边 

(2)flex布局的换行问题

  flex布局和浮动不同,当多个盒子设置成左或右浮动时,如果一行排放不下时,会自动掉下去。但是flex布局多行排放需要手动设置flex-wrap属性

取值:

 nowrap默认值,不换行,此时不管有多少的子盒子,都排在一行,盒子越多,每个盒子所占的主轴空间越小;

 wrap 当父盒子宽度不够时就会换行

(3)flex属性:是使用flex实现自适应布局时重要属性 

  作用:当不想给盒子设置固定的宽度时,设置flex属性来按比例给盒子分配宽度,从而实现了盒子宽度的自适应(随父盒子宽度的改边而改变)

  取值:是数值 

例如:

<!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>
      .box{
        width: 600px;
        height: 300px;
        border: 1px solid red;
        margin:20px auto;
        display: flex;
      }
      .son1,.son2,.son3{
        /* 三个子盒子宽度相等 */
        flex:1;
        height: 100px;
        background: green;
      }
      .son2{
        /* flex:2  son1和son3占父盒子宽度的1/4  son2占父盒子的1/2*/ 
        background: pink;
      }
  </style>
</head>
<body>
  <div class=box>
    <div class="son1"></div>
    <div class="son2"></div>
    <div class="son3"></div>
  </div>
</body>
</html>

二、响应式布局——rem布局

  rem:是一个长度单位,会根据根元素(html)字体大小换算

  rem布局相对于flex布局的优点是:(1)能够让整个页面的字体和图标自适应,而且rem布局能够适配所有的屏幕,(2)不用管设计图的大小,flex布局要注意二倍图、三倍图

  rem布局原理:因为rem的基准点是根元素html的字体大小,因此给不同屏幕的html设置不同的font-size大小,就能使不同屏幕的布局元素得到适配

  适配不同屏幕的方法:rem 媒体查询

  rem布局开发的步骤:(1)给拿到的设计图固定一个font-size,推荐定为100px或50px,便于计算;(2)使用媒体查询,等比例的设置每一屏幕的html的字体大小,

比例关系:设计固定的font-size/设计图的大小 =当前屏幕的font-size/当前屏幕的大小;(3)在设计图上量出来的盒子大小全部转换为rem单位即可,不需要考虑设计图是否是二倍图、三倍图。

 

 /*rem   媒体查询:以设计图:640px  font-size:100px 为例 */

     /* 适配320px~400px的屏幕 */
     @media(min-width:320px){
       html{font-size:50px}
     }
      /* 适配400px~640px的屏幕 */
     @media(min-width:400px){
       html{
         font-size: 62.5px;
       }
     }
      /* 适配640px以上的屏幕 */
     @media(min-width:640px){
       html{
         font-size:100px; 
       }
     }
/*注意点:使用媒体查询适配不同屏幕时,屏幕大小要从小的往大的写,如上,因为后写的会覆盖先写的*/