单独移动端页面-流式布局和flex弹性布局技术


前言

前面总结了很多pc端的布局以及方法,我们来谈谈移动端常见的两种布局方式,单独移动端页面,技术包括:流式布局、flex弹性布局、less+rem+媒体查询布局、混合布局。下面是小编介绍的流式布局和flex弹性布局。

说到移动端,首先来谈谈移动端的基础知识:

  • 视口:就是浏览器显示页面内容的屏幕区域,分为:布局视口、视觉视口、理想视口。主要使用的是理想视口,理想视口:meta视口标签布局宽度和理想视口宽度一致。在html头部区域加上:
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
  • 二倍图:物理像素(分辨率)、物理像素比。我们开发的1px不一定等于1个物理比,在pc端页面,1个px等于1个物理像素的,但是移动端就不尽相同.一个px的能够显示的物理像素点的个数,称为物理像素比或屏幕像素比,比如 iPhone8就存在1px=2个物理像素,物理像素比就是2。
  • 知识补充:
    1)背景缩放background-size:x y;里面的单位可以写百分比是相对于父元素来说的。属性值:cover使背景图片完全覆盖整个盒子,可能有部分背景图片显示不出、contain将高度和宽等比例拉伸,当宽度或高度铺满整个盒子就不会再拉伸来,可能有部分空白区域.
    2)二倍精灵图的缩放:步骤:1、将精灵图在ps中等比例缩放为原来的一半;2、之后根据所取的图大小测量坐标;3、再写background-size:精灵图原来宽度的一半 auto;
  • 移动端解决方案:
    1)下载并引入css初始化normalize.css/
    2)特殊样式:如下
/*让盒子变成css3盒子模型,在加上boder或者padding后不再撑大盒子了*/
box-sizing: border-box;
/*为移动端链接清除默认蓝色背景*/
-webkit-tap-highlight-color:transparent;
/*为移动端去掉外观样式*/
-webkit-appearance:none;
/* 禁止长按屏幕弹出菜单  */
img,a { -webkit-touch-callout:none;  } 

一、流式布局是什么

流式布局就是百分比布局
1、宽度给百分比来根据屏幕的宽度设定的,不受固定像素的限制
2、为了照顾盒子在合理的范围内,给盒子一个max-width、min-width、max-height、min-height

二、flex弹性布局

1.布局原理

       通过给父盒子添加display:flex;来控制子盒子的位置和排序方式,父盒子是容器,子盒子是项目。
特点:
         1.1、任何元素都可以设置弹性布局
         1.2、自适应的效果
         1.3、当父盒子设置为flex布局后,子元素的float、clear、vertical-align属性将失效。

2.运用场景

2.1、当使用pc端布局的时候,我们还是用传统的方式布局
2.2、如果移动端或不考虑兼容性问题的pc端页面布局,则考虑使用flex布局

3.属性

  • 给父盒子添加 display:flex;当布局模式为flex技术后,行内元素就不用转换成块元素了,直接可以设置样式,也不需要清除浮动了,子盒子默认沿着主轴方向排列。
  • 给父盒子添加的属性:
    1、设置主轴的方向 :属性 flex-direction:如果设置的主轴是x轴,则y就是侧轴,我们的子元素是根据主轴来排序的。
属性值说明
row从左到右 X轴
row-reverse从右到左
column从上到下Y轴
column-reverse从下到上

       2、设置主轴上的子元素的排序方式 :属性:justify-content:

属性值说明
flex-start默认值,如果主轴是X轴,则排序的方式是从左到右
flex-end从尾部开始排列,相当于右浮动,但是子盒子的排序顺序是正确的
flex-center在主轴居中对齐,如果主轴是X轴,则就是水平居中
space-around平分剩余空间,就是每个子盒子的左右距离一样
space-between先两边的盒子贴边,再平分剩余的空间

       3、设置侧轴上的子元素的排序方式(单行) :属性:align-items:

属性值说明
flex-start默认值:从上到下
flex-end从下到上
center挤在一起,如果主轴是X轴,就是垂直居中
stretch沿着侧轴拉伸

代码如下(示例):

       4、设置侧轴上的子元素的排序方式(多行)只能用在子盒子出现换行的情况 :属性:align-content:

属性值说明
flex-start默认值,从侧轴的头部开始
flex-end在侧轴的尾部开始排列
center在侧轴中间显示
space-around子项在侧轴平分空间,就是每个盒子的左右的距离一样
space-between子项在侧轴先分布在两头,在剩下的盒子平分剩余空间
strech设置子项元素高度平分父盒子高度

       5、设置子元素是否换行 :属性:flex-wrap

属性值说明
wrap换行
nowrap默认的,不换行

       6、复合写法 :flex-flow :row wrap;

  • 给子盒子添加的属性:
    1、 flex:定义子项目分配剩余空间 表示占多少份数
 flex:<number>; /* number可以是数字、百分比、默认值是*/

        2、 align-self:控制子项自己在侧轴上的位置,其属性值和父级align-items可以用,适用于某个盒子与其他盒子样式不统一,可以覆盖align-items属性,默认值是suto表示继承父元素的align-items,如果没有父元素,则等同于stretch
        3、order:数字;定义项目的排序顺序。在css里排序盒子的位子,数字越小,盒子的位置就在前面

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奶茶丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值