移动端web | 青训营笔记

98 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第14天

移动端开发常见布局

1.1流式布局(百分比布局)

流式布局,也称为非固定像素布局。 通过盒子的宽度设置成百分比来适应屏幕的宽度,不受固定像素的限制,内容向两侧填充。 为了防止无限制的伸缩,设置max-width最大宽度min-width最小宽度


1.2flex布局

image.png 如果是移动端或者不考虑兼容性问题的PC端页面布局,使用flex弹性布局 display:flex;

1.2.1 flex布局原理

flex是felxible box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。 当我们为父盒子设置flex布局后,子元素的float、clear和vertical-align属性将失效。 采用flex布局的元素称为flex容器,它的所有子元素自动成为容器成员,称为flex项目,简称项目。子元素可以横向排列也可以纵向排列。

image.png


1.2.2 父元素属性

image.png flex-direction 子元素跟着主轴来排列,默认是x轴 白话:小孩怎么站 谁前谁后

属性值作用
row默认值从左到右
row-reverse从右到左
collumn从上到下
column-reverse从下到上

justify-content 定义了项目在主轴上的对齐方式 白话:小孩之间的间隙如何安排

属性值作用
flex-start默认值从头部开始
flex-end默认值从尾部开始
center在主轴居中对齐
space-around平分剩余空间
space-between先两边贴边,再平分剩余空间

flex-wrap 设置子元素在排列时是否换行,默认不换行,会不断缩小子元素的宽度 白话:一行站不下,是不是要站到第二行

属性值作用
nowrap默认值,不换行
wrap换行

align-items 该属性是控制子项在侧轴上的对齐方式,只能在子项为单行的时候使用

属性值作用
flex-start默认值 从上到下
flex-end从下到上
center垂直居中 挨在一起
stretch拉伸(子盒子不要给高度)

align-content 定义了项目在侧轴上的对齐方式,只能在子项为多行时使用

属性值作用
flex-start默认值从头部开始
flex-end默认值从尾部开始
center在主轴居中对齐
space-around平分剩余空间
space-between先两边贴边,再平分剩余空间
stretch设置子项元素高度平分父元素高度

flex-flow 这是flex-directionflex-wrap 属性的复合属性


1.2.3 子元素常见属性

flex:number表示该元素所占据的份数; align-self

image.png order定义项目的排列顺序 数值越小,排列越靠前,默认是0。


1.3 rem布局

前面我们介绍的流式布局和flex布局主要针对于宽度布局,而高度并没有涉及,并且为了使页面布局文字能随着屏幕大小变化、使得屏幕发生变化的时候元素高度和宽度可以等比例缩放,rem布局应运而生。

1.3.1 rem单位

rem是一个相对单位,类似于em,em是父元素字体大小。不同的是,rem的基准是相对于html元素的字体大小。页面中可能有很多个父元素,但只有一个html。可以通过修改html里面的文字大小来改变页面中元素的大小,实现对页面的整体控制。


1.3.2 媒体查询

使用@media查询,可以针对不同的媒体类型从而定义不同的样式。@media可以针对不同的屏幕尺寸设置不同的样式,当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。目前很多苹果手机、安卓手机、平板等设备都用得到媒体查询。

@media mediatype and|not|only (media feature) {
	CSS-Code;
}

mediatype

image.png

关键字and|not|only

关键字将媒体类型或多个媒体特性连接到一起作为媒体查询的条件。

  • and:可以将多个媒体特性连接到一起,相当于“且”的意思。
  • not:排除某个媒体类型,相当于“非”的意思。
  • only:指定某个特定的媒体类型。

媒体特性

每种媒体类型都具备各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格。

image.png

引入资源

当样式比较繁多的时候,我们可以针对不同的媒体使用不同的stylesheet样式表。原理就是直接在link中判断设备的尺寸,然后引用不同的css文件。

<link rel="stylesheet" media="mediatype" and|not|only (media feature)" href="mystylesheet.css"

1.3.3 适配方案

推荐使用flexible.js,当然也可以了解一下less,less主要是实现对css的优化。

image.png

github中的flexible地址

安装VScode插件cssrem,帮助px转化为rem 注意设置html字体大小的基准值

  1. 打开设置(快捷键是ctrl+逗号)
  2. 点击三个小点点打开setting.json