很多朋友对于移动端H5技术要点全面汇总和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
html { 字体大小: 100px; }
@media(min-width: 320px) { html { font-size: 100px; } }
@media(min-width: 360px) { html { font-size: 112.5px; } }
@media(min-width: 400px) { html { font-size: 125px; } }
@media(min-width: 640px) { html { font-size: 200px; } }
设置手机字体大小为100px;对于320px的手机,匹配为100px,其他手机等比例匹配;因此,如果设计稿上的像素较多,则转换为rem 时, rem=设计稿的像素数/100 ;
2.禁用a、button、input、optgroup、select、textarea等标签背景变暗。
在移动端使用a标签作为按钮或文本链接时,点击按钮时会出现‘深色’背景,如以下代码:
按钮1
移动端点击后,会出现‘深色’背景。这时我们需要在css中添加如下代码:
一个,按钮,输入,optgroup,选择,文本区域{
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
3.元基础知识点:
1、页面窗口自动适应设备宽度,禁止用户缩放页面。
属性的基本含义:
content="width=设备宽度:
控制viewport的大小,device-width是设备的宽度
初始规模- 初始缩放
最小比例- 允许用户缩放到的最小比例
Maximum-scale - 允许用户缩放的最大比例
user-scalable - 用户是否可以手动缩放
2.忽略将页面上的数字识别为电话号码
3.忽略Android平台中对邮箱地址的识别
4.当网站添加到主屏幕快速启动模式时,可以隐藏地址栏,仅适用于ios safari
5、添加网站到主屏快速启动模式,仅适用于iOS上Safari顶部状态栏的样式
6、favicon图标需要存放在网站根目录下,防止404请求(可以使用fiddler监控)。需要在页面中添加一个链接,如下:
因此,页面上常见的模板如下:
标题
从这里开始内容
四:移动端如何定义font-family
body{font-family: "Helvetica Neue", Helvetica, sans-serif;}
五:Android或IOS下拨打电话代码如下:
拨打:15602512356
六:发送短信(winphone系统无效)
短信: 10010
七:调用手机系统自带的邮件功能
1. 当浏览者点击此链接时,浏览器会自动调用默认的客户端电子邮件程序,并自动在收件人框中填写收件人地址。
发送电子邮件
2.填写复制地址;
IOS手机下:收件人地址后以?cc=开头;
以下代码:
填写抄送地址
在Android 手机上,以下代码:
填写抄送地址
3.填写密送地址,如下:
IOS手机下:抄送地址后紧接着写bcc=,填写密送地址。
填写密件抄送地址
安卓下;下面的代码:
填写密件抄送地址
4. 要包含多个收件人、抄送和密件抄送,您可以打开多个收件人的地址,并用分号(;) 分隔它们。以下代码:
包含多个收件人、CC、BCC,多个收件人的地址可以使用分号(;)分隔。
5. 包含主题,使用?subject=填写主题。以下代码:
包含主题,可以填写主题
6、包含内容,使用?body=填写内容(如果需要文字换行,使用%0A换行);代码如下:
包含内容,使用?body=填写内容
7、内容包含链接,包含http(s)://等文字自动转换为链接。以下代码:
内容包含链接,包含http(s)://等文字会自动转换为链接。
八:webkit表单输入框占位符颜色值变化:
如果希望默认颜色为红色,代码如下:
input:-webkit-input-placeholder{color:red;}
如果想让用户点击变成蓝色,代码如下:
input:focus:-webkit-input-placeholder{color:blue;}
9:清除移动IOS手机上输入框的阴影,代码如下
输入,文本区域{
-webkit-appearance: 无;
}
10:在IOS中禁用长按链接和图片弹出菜单
一个,图片{
-webkit-touch-callout: 无;
}
回到顶部
计算的基本用法
计算基本语法:
.class {width: calc(表达式);}
可支持加、减、乘、除;我们做移动终端时非常有用的一个知识点;
优点如下:
1. 支持“+”、“-”、“*”、“/”四种算术运算。
2、可以使用百分比(%)、px、em、rem等作为计算单位。
浏览器兼容性如下:
IE9+、FF4.0+、Chrome19+、Safari6+
测试代码如下:
我正在测试计算
.calc{
边距-left:50px;
填充左:2rem;
width:calc(100%-50px-2rem);
身高:10rem;
}
回到顶部
了解和使用盒子大小
该属性是为了解决盒模型在不同浏览器中性能不一致的问题。它具有三个属性值:
content-box: 默认值(标准盒模型); width和height仅包括内容的宽度和高度,不包括边框和内边距;
例如,以下div 元素:
盒子
CSS如下:box {width:200px;height:200px;padding:10px;border:1pxsolid#333;margin:10px;box-sizing:content-box;}
那么浏览器下渲染的实际宽度和高度分别为:222px、222px;因为在标准盒子模型下,浏览器中渲染的实际宽度和高度包括
内边距和边框;如下图:
border-box: 宽度和高度包括内边距和边框,但不包括外边距。这就是IE的怪异模式所使用的盒子模型。例如上面的代码:
盒子
;
CSS代码如下:
.box {width:200px;height:200px;padding:10px;border:1px 实心#333;margin:10px;box-sizing:border-box;}
那么此时浏览器渲染的宽度就会是178px,高度也会是178px;因为此时定义的宽度和高度会包含padding和border;
使用百分比时,使用此属性对于布局页面非常有用。例如,如果有两列,布局宽度为50%;但是还有padding和border,那么这个
如果我们不使用这个属性(当然我们也可以使用calc方法来计算),那么总宽度将大于页面的100%;因此,我们可以使用这个
属性使页面布局达到100%。如下图所示:
浏览器支持如下:
回到顶部
了解display:box的布局
显示:框; box-flex是CSS3中新添加的盒子模型属性。它可以帮助我们解决比例分割、水平分割、垂直等高的问题。
1:按比例划分:
目前,firefox、Opera、chrome浏览器并不完全支持box-flex属性,但是我们可以使用它们的私有属性来定义firefox(-moz-)、opera(-o-)、chrome/safari(-webkit) -)。 box-flex属性主要是允许子容器根据父容器的宽度按照一定的规则进行划分。代码如下:
你好
W3学校。测试{
显示:-moz-box;
显示:-webkit-box;
显示:框;
宽度:300px;
}
#p1{
-moz-box-flex:1.0;
-webkit-box-flex:1.0;
盒子-flex:1;
border:1px 纯红色;
}
#p2{
-moz-box-flex:2.0;
-webkit-box-flex:2.0;
盒子-flex:2;
border:1px 纯蓝色;
}
如下图:
注意:
1、必须先为父容器定义display:盒子,然后才能分割其子元素。如上,将id p1 的box-flex 设置为1,将id p2 的box-flex 设置为2。
说明:分别设置1和2等份,即设置id为p1的元素的宽度为300 * 1/3=100px;将id p2 的元素的宽度设置为300 * 2/3=200px;
2、如果父容器分割时设置了其部分子元素的宽度,而部分子元素需要分割,则分割后的宽度=父容器的宽度-已设置的宽度。
然后进行相应的划分。
如下图:
2:box具体属性如下:
面向盒子|盒子方向|框对齐|盒装|箱线
1. 面向盒子;
box-orient 用于确定子容器在父容器中的排列方式,无论是水平还是垂直。可选属性如下:
水平|垂直|内联轴|块轴|继承
1:水平|内联轴
将水平轴或内联轴属性设置为框具有相同的效果。您可以水平排列子元素。
以下html代码:
你好
W3学校
CSS代码如下:测试{
显示:-moz-box;
显示:-webkit-box;
显示:框;
宽度:300px;
高度:200px;
-moz-box-orient:水平;
-webkit-box-orient:水平;
盒子-orient:水平;
}
#p1{
-moz-box-flex:1.0;
-webkit-box-flex:1.0;
盒子-flex:1;
border:1px 纯红色;
}
#p2{
-moz-box-flex:2.0;
-webkit-box-flex:2.0;
盒子-flex:2;
border:1px 纯蓝色;
}
如下图:
2:Vertical允许子元素垂直排列;
CSS代码如下:
*{margin:0;padding:0;}。测试{
显示:-moz-box;
显示:-webkit-box;
显示:框;
宽度:300px;
高度:200px;
-moz-box-orient:垂直;
-webkit-box-orient:vertical;
盒子-orient:垂直;
}
#p1{
-moz-box-flex:1.0;
-webkit-box-flex:1.0;
盒子-flex:1;
border:1px 纯红色;
}
#p2{
-moz-box-flex:2.0;
-webkit-box-flex:2.0;
盒子-flex:2;
border:1px 纯蓝色;
}
如下图:
三:继承。 Inherit 属性允许子元素继承父元素的相关属性。效果和第一个效果一样,都是水平对齐;
2. 盒子方向
或者下面的html代码:
你好
W3学校
box-direction 用于确定子容器在父容器中的顺序。具体属性如下代码所示:
正常|反向|继承
Normal是默认值,按照HTML文档中的结构顺序显示。如果box-direction设置为normal,结构顺序仍然是id为p1的元素和id为p2的元素。
verse: 表示反向。如果设置了reverse,则结构排列顺序为具有id的p2元素和具有id的p1元素。以下代码:
CSS代码如下:
*{margin:0;padding:0;}。测试{
显示:-moz-box;
显示:-webkit-box;
显示:框;
宽度:300px;
高度:200px;
-moz-box-direction:反向;
-webkit-box-direction:反向;
盒子方向:反向;
}
#p1{
-moz-box-flex:1.0;
-webkit-box-flex:1.0;
盒子-flex:1;
border:1px 纯红色;
}
#p2{
-moz-box-flex:2.0;
-webkit-box-flex:2.0;
盒子-flex:2;
border:1px 纯蓝色;
}
如下图:
3. 框对齐:
box-align 表示单词容器在容器内部的垂直对齐方式。可选参数如下:
开始|结束|中心|基线|拉紧
1.Alignment start:表示顶部对齐
代码如下:
*{margin:0;padding:0;}。测试{
显示:-moz-box;
显示:-webkit-box;
显示:框;
宽度:300px;
高度:200px;
-moz-box-align:start;
-webkit-box-align:start;
框对齐:start;
}
#p1{
-moz-box-flex:1.0;
-webkit-box-flex:1.0;
盒子-flex:1;
高度:160px;
border:1px 纯红色;
}
#p2{
-moz-box-flex:2.0;
-webkit-box-flex:2.0;
盒子-flex:2;
高度:100px;
border:1px 纯蓝色;
}
如上图,p1的高度为160px,p2的高度为100px;对齐方式如下图所示:
如果改成end,那么就会低位对齐,如下:
center表示居中对齐,如下:
stretch表示box-align中的拉伸,拉伸与其父容器等高。以下代码:
firefox下高度与父容器下高度相同,且满足条件,如下:
chrome下不满足条件;如下:
4.盒装
box-pack 表示子容器在父容器内的水平对齐方式。可选参数如下:
开始|结束|中心|证明合法
盒装:start;表示水平向左对齐。对于法线方向的盒子,第一个子元素的左边缘放置在左侧(最后一个子元素之后的所有剩余空间)
对于方向相反的框,最后一个子项的右边缘放置在右侧(以及第一个子项之前的任何剩余空间)。代码如下所示:
*{margin:0;padding:0;}。测试{
显示:-moz-box;
显示:-webkit-box;
显示:框;
宽度:400px;
高度:120px;
border:1px实心#333;
-moz-box-pack:start;
-webkit-box-pack:start;
盒装:start;
}
#p1{
宽度:100px;
高度:108px;
border:1px 纯红色;
}
#p2{
宽度:100px;
高度:108px;
border:1px 纯蓝色;
}
如下图:
盒装:中心;表示水平居中对齐,将多余的空间均分,一半空间放在第一个子元素前面,另一半放在最后一个子元素后面;如下图所示:
盒装:结束;表示水平右对齐;对于正常定向的框,最后一个子元素的右边缘放置在右侧(第一个子元素之前的所有剩余空间)。
对于方向相反的框,第一个子项的左边缘放置在左侧(以及最后一个子项之后的任何剩余空间)。如下图:
box-pack:证明:
在box-pack中表示水平等分父容器的宽度(将每个子元素之间多余的空间分开(第一个子元素之前和最后一个子元素之后没有多余空间))
如下:
回到顶部
了解弹性布局
我们传统的布局方式是基于盒模型,依赖于display属性、position属性或者float属性,但是在传统布局中不容易布局;例如,如果我们希望一个元素垂直居中,我们通常会使其元素以表格形式出现,例如display:table-cell属性。现在我们学习如何使用flex布局是非常方便的;
目前浏览器支持:IE10+、chrome21+、opera12.1+、Firefox22+、safari6.1+等;
基于以上浏览器的支持,我们可以非常方便地在移动端使用这个元素;
什么是弹性? Flex是Flexible Box的缩写,意思是“灵活布局”,用于为盒状模型提供最大的灵活性。
Flex的灵活布局具有以下优点:
1.独立的高度控制和对准。
2. 独立的元素顺序。
3. 指定元素之间的关系。
4. 灵活的尺寸和对齐方式。
一:基本概念:
采用flex布局的元素称为flex容器,其所有子元素自动成为容器的成员,称为flex项目。如下图:
容器默认有两个轴,水平主轴和垂直侧轴。主轴的起始位置(与边界的交点)称为主起点,结束位置称为主终点。
交叉轴的起始位置称为交叉起点,结束位置称为交叉终点。默认情况下,项目沿主轴排列。单个工程所占用的主轴空间称为主尺寸。
交叉轴所占据的空间称为交叉尺寸。
2:容器有以下6个属性
弯曲方向
柔性包裹
弹性流
证明内容合理
对齐项目
对齐内容
我们来看看上面六个属性的值以及它们的含义。
1. flex-direction:该属性决定主轴的方向(即item的排列方向)。
它可能有四个值:
row(默认):主轴是水平的,起点在左端。
row-reverse:主轴水平,起点在右端。
柱:主轴垂直,起点位于上边缘。
column-reverse:主轴垂直,起点在下边缘。
让我们做几个演示来理解上述值的含义。我只解释上面第一个和第二个值的含义。以下同样如此。
这里我就不解释了;例如,页面上有一个容器,里面有一个元素。看一下这个元素的排列方向。
HTML代码:(如果没有特殊说明,下面的html代码是这样的结构):
CSS代码如下:
html,正文{
高度: 100%;
}。容器{
宽度:150px;
高度:150px;
border:1px 纯红色;
}
.first-face {
显示:柔性;
显示:-webkit-flex;
弯曲方向:行;
-webkit-flex-direction:行;
显示:-webkit-box;
-webkit-box-pack:start;
}
.pip {
显示:块;
宽度: 24px;
高度: 24px;
边界半径: 50%;
背景颜色: #333;
}
注意:使用display: flex时会出现问题;在Android平台的UC浏览器和微信浏览器中。不支持该属性,因此使用display: flex时;您需要添加display: -webkit-box;而一些水平对齐或者垂直对齐需要添加相应的box-pack(box-pack代表子容器在父容器内的水平对齐)和box-align(box-align代表子容器里面的垂直对齐)容器)。详细内容请参见下面介绍的display:box属性部分。
我们可以看到下面的截图:
当我们将flex-direction的值改为row-reverse(主轴为水平方向,起点在右端)时,我们的截图如下:
2. flex-wrap 属性默认情况下,项目排列在一条线上(也称为“轴”)。 flex-wrap 属性定义如果一个轴无法容纳,则可以将其换行。
它有三个值:
nowrap(默认):不换行。
换行:换行,第一行在顶部。
wrap-reverse:换行,第一行在下面。
3. 弹性流
该属性是flex-direction属性和flex-wrap属性的缩写。默认值为row nowrap。
4. justify-content 属性
justify-content 属性定义项目在主轴上的对齐方式。以下假设主轴是从左到右。
数值如下:
弹性启动|弯曲端|中心|之间的空格|周围空间;
flex-start (默认)左对齐
弯曲端右对齐
中心中心
space-after:两端对齐,项之间的间隔相等
space-around:每个项目两侧的间距相等。
5.align-items属性
align-items 属性定义项目如何在横轴上对齐。
可能需要5 个值:
flex-start:对齐交叉轴的起点。
flex-end:对齐交叉轴的终点。
center:对齐交叉轴的中点。
benchmark: 项目第一行文本的基线对齐方式。
拉伸(默认值):如果该项目没有设置高度或设置为auto,它将占据容器的整个高度。
6. 对齐内容属性
align-content 属性定义多个轴的对齐方式。如果项目只有一个轴,则此属性无效。
该属性可能有6 个值。
flex-start:与交叉轴的起点对齐。
flex-end:与横轴的终点对齐。
center:与交叉轴的中点对齐。
space-after:与交叉轴两端对齐,轴之间的间隔均匀分布。
space-around:每个轴两侧等距。因此,轴之间的距离是轴与框架之间的距离的两倍。
拉伸(默认):轴占据整个交叉轴。
三:项目属性。可以在项目中设置以下6 个属性。
命令
弹性增长
弯曲收缩
弹性基础
弯曲
自我对齐
1.订单属性
order 属性定义项目的排序顺序。值越小,排名越高。默认值为0。
基本语法:
.xx {order:}
2. 柔性GR
w属性 flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大 基本语法: .xx { flex-grow: ; } 3. flex-shrink属性 flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 基本语法: .xx { flex-shrink: ; } 4. flex-basis属性 flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。 基本语法: .xx { flex-basis: | auto; } 它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。 5. flex属性 flex属性是flex-grow, flex-shrink和flex-basis的简写,默认值为0 1 auto。后两个属性可选。 6. align-self属性 align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。 默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。 基本语法: .xx { align-self: auto | flex-start | flex-end | center | baseline | stretch; } 上面是基本语法,感觉好模糊啊,看到这么多介绍,感觉很迷茫啊,下面我们趁热打铁来实现下demo。 我们很多人会不会打麻将呢?打麻将中有1-9丙对吧,我们来分别来实现他们的布局; 首先我们的HTML代码还是如下(如果没有特别的说明都是这样的结构): 一:1丙 HTML代码: 上面代码中,div元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目。如果有多个项目,就要添加多个span元素,以此类推。css代码结构如下: html, body { height: 100%; } .container { width:150px; height:150px; border:1px solid red; } .first-face { } .pip { display:block; width: 24px; height: 24px; border-radius: 50%; background-color: #333; } 1.首先,只有一个左上角的情况下,flex布局默认为左对齐,因此需要display:flex即可;如下代码: .first-face { display: flex; display: -webkit-box; } 上面为了兼容UC浏览器和IOS浏览器下,因此需要加上display: -webkit-box;来兼容,我们也明白,如果不加上.first-face里面的代码,也能做出效果,因为元素默认都是向左对齐的,如下图所示: 我们继续来看看对元素进行居中对齐;需要加上justify-content: center;即可;但是在UC浏览器下不支持该属性, 我们水平对齐需要加上box-pack,box-pack表示父容器里面子容器的水平对齐方式,具体的值如上面介绍的box的语法, 需要加上-webkit-box-pack:center;因此在first-face里面的css代码变为如下代码: .first-face { display: flex; display: -webkit-box; justify-content:center; -webkit-box-pack:center; } 效果如下: 上面已经介绍过justify-content属性定义了项目在主轴上的对齐方式(水平方向上),有五个值,这里不再介绍,具体可以看上面的基本语法。 水平右对齐代码也一样、因此代码变成如下: .first-face { display: flex; display: -webkit-box; justify-content:flex-end; -webkit-box-pack:end; } 如下图所示: 2.我们接着来分别看看垂直居左对齐,垂直居中对齐,垂直居右对齐. 一:垂直居左对齐 我们现在需要使用上align-items属性了,该属性定义项目在交叉轴上如何对齐。具体的语法如上: 同样为了兼容UC浏览器或其他不支持的浏览器,我们需要加上box-align该属性表示容器里面字容器的垂直对齐方式;具体的语法如上; 因此代码变成如下: .first-face { display: flex; display: -webkit-box; align-items:center; -webkit-box-align:center; } 效果如下: 二:垂直居中对齐 现在垂直已经居中对齐了,但是在水平上还未居中对齐,因此在水平上居中对齐,我们需要加上justify-content属性居中即可; 同样为了兼容UC浏览器,需要加上-webkit-box-pack:center; 代码变为如下: .first-face { display: flex; display: -webkit-box; align-items:center; -webkit-box-align:center; justify-content:center; -webkit-box-pack:center; } 效果如下: 三:垂直居右对齐 原理和上面的垂直居中对齐是一个道理,只是值换了下而已;代码如下: .first-face { display: flex; display: -webkit-box; align-items:center; -webkit-box-align:center; justify-content:flex-end; -webkit-box-pack:end; } 效果如下: 3.我们接着来分别看看底部居左对齐,底部居中对齐,底部居右对齐. 一:底部居左对齐 其实属性还是用到上面的,只是值换了一下而已;代码如下: .first-face { display: flex; display: -webkit-box; align-items:flex-end; -webkit-box-align:end; justify-content:flex-start; -webkit-box-pack:start; } 效果如下: 二:底部居中对齐 代码变为如下: .first-face { display: flex; display: -webkit-box; align-items:flex-end; -webkit-box-align:end; justify-content:center; -webkit-box-pack:center; } 效果如下: 三:底部居右对齐 代码变为如下: .first-face { display: flex; display: -webkit-box; align-items:flex-end; -webkit-box-align:end; justify-content:flex-end; -webkit-box-pack:end; } 效果如下: 二:2丙 1.水平上2端对齐;需要使用的属性justify-content: space-between;该属性能使第一个元素在左边,最后一个元素在右边。 因此代码变成如下: .first-face { display: flex; justify-content: space-between; } 但是在UC浏览器下不生效,因此我们需要display: -webkit-box;和-webkit-box-pack:Justify;这两句代码; display: -webkit-box;我不多介绍,上面已经讲了,-webkit-box-pack:Justify;的含义是在box-pack表示水平等分父容器宽度。 因此为了兼容UC浏览器,所以代码变成如下: .first-face { display: flex; justify-content: space-between; display: -webkit-box; -webkit-box-pack:Justify; } 效果如下: 2.垂直两端对齐; 垂直对齐需要使用到的flex-direction属性,该属性有一个值为column:主轴为垂直方向,起点在上沿。 代码变为如下: .first-face { display: flex; justify-content: space-between; flex-direction: column; } 再加上justify-content: space-between;说明两端对齐.但是在UC浏览器并不支持该属性,使其不能垂直两端对齐,因此为了兼容UC浏览器,需要使用-webkit-box;因此整个代码变成如下: .first-face { display: flex; justify-content: space-between; -webkit-flex-direction: column; flex-direction: column; display: -webkit-box; -webkit-box-direction: normal; -webkit-box-orient: vertical; -webkit-box-pack:justify; } 如上使用-webkit-box-direction: normal;使其对齐方向为水平从左端开始,-webkit-box-orient: vertical;使用这句代码告诉 浏览器是垂直的,-webkit-box-pack:justify;这句代码告诉浏览器垂直的两端对齐。 如下图所示: 3 .垂直居中两端对齐 代码如下: .first-face { display: flex; flex-direction: column; justify-content: space-between; align-items: center; } 多加一句align-items: center;代码;表示交叉轴上居中对齐。同理在UC浏览器下不支持的,因此我们为了兼容UC浏览器,可以加上如下代码,因此整个代码如下: .first-face { display: flex; justify-content: space-between; -webkit-flex-direction: column; flex-direction: column; align-items:center; display: -webkit-box; -webkit-box-direction: normal; -webkit-box-orient: vertical; -webkit-box-pack:justify; -webkit-box-align:center; } 再加上-webkit-box-align:center;这句代码,告诉浏览器垂直居中。如下图所示: 4.垂直居右两端对齐 代码如下: .first-face { display: flex; flex-direction: column; justify-content: space-between; align-items: flex-end; } 同理为了兼容UC浏览器,整个代码变成如下: .first-face { display: flex; justify-content: space-between; -webkit-flex-direction: column; flex-direction: column; align-items:flex-end; display: -webkit-box; -webkit-box-direction: normal; -webkit-box-orient: vertical; -webkit-box-pack:justify; -webkit-box-align:end; } 和上面代码一样,只是更改了一下垂直对齐方式而已;如下图所示: 注意:下面由于时间的关系,先不考虑UC浏览器的兼容 三:3丙 代码如下: HTML代码: CSS代码如下: .first-face { display: flex; flex-direction: column; justify-content: space-between; } .pip:nth-child(2) { align-self: center; } .pip:nth-child(3) { align-self: flex-end; } 如下图所示: 四:4丙 代码如下: HTML代码: CSS代码如下: .column{ display: flex; justify-content: space-between; } .first-face { display: flex; flex-direction: column; justify-content: space-between; } 如下图所示: 五:5丙 HTML结构如下: css代码如下: .column{ display: flex; justify-content: space-between; } .first-face { display: flex; flex-direction: column; justify-content: space-between; } .first-face .column:nth-of-type(2){ justify-content: center; } 如下图所示: 六:6丙 HTML结构如下: css代码如下: .column{ display: flex; justify-content: space-between; } .first-face { display: flex; flex-direction: column; justify-content: space-between; } 如下图所示: 7,8,9丙也是一个意思,这里先不做了; 回到顶部 Flex布局兼容知识点总结 假设父容器class为box,子项目为item. 旧版语法如下: 一:定义容器的display属性。 旧语法如下写法: .box { display: -moz-box; display: -webkit-box; display: box; } 新版语法需要如下写: .box{ display: -webkit-flex; display: flex; } 或者行内 .box{ display: -webkit-inline-flex; display:inline-flex; } 二:容器属性(旧版语法) 1. box-pack属性;(水平方向上对齐方式) box-pack定义子元素主轴对齐方式。 .box{ -moz-box-pack: center; -webkit-box-pack: center; box-pack: center; } box-pack属性总共有4个值: .box{ box-pack: start | end | center | justify; } 各个值的含义如下: start: 对于正常方向的框,首个子元素的左边缘被放在左侧(最后的子元素后是所有剩余的空间) 对于相反方向的框,最后子元素的右边缘被放在右侧(首个子元素前是所有剩余的空间) end: 对于正常方向的框,最后子元素的右边缘被放在右侧(首个子元素前是所有剩余的空间)。 对于相反方向的框,首个子元素的左边缘被放在左侧(最后子元素后是所有剩余的空间)。 center: 均等地分割多余空间,其中一半空间被置于首个子元素前,另一半被置于最后一个子元素后. justify: 在每个子元素之间分割多余的空间(首个子元素前和最后一个子元素后没有多余的空间)。 2.box-align属性(垂直方向上的对齐方式) box-align定义子元素交叉轴对齐方式。 .box{ -moz-box-align: center; -webkit-box-align: center; box-align: center; } box-align属性总共有5个值: .box{ box-align: start | end | center | baseline | stretch; } 各个值的含义如下: start: 对于正常方向的框,每个子元素的上边缘沿着框的顶边放置。 对于反方向的框,每个子元素的下边缘沿着框的底边放置。 end: 对于正常方向的框,每个子元素的下边缘沿着框的底边放置。 对于反方向的框,每个子元素的上边缘沿着框的顶边放置。 center: 均等地分割多余的空间,一半位于子元素之上,另一半位于子元素之下。 baseline: 如果box-orient是inline-axis或horizontal,所有子元素均与其基线对齐。 stretch: 拉伸子元素以填充包含块 3.box-direction属性 box-direction定义子元素的显示方向。 .box{ -moz-box-direction: reverse; -webkit-box-direction: reverse; box-direction: reverse; } box-direction属性总共有3个值: .box{ box-direction: normal | reverse | inherit; } 4.box-orient属性 box-orient定义子元素是否应水平或垂直排列。 .box{ -moz-box-orient: horizontal; -webkit-box-orient: horizontal; box-orient: horizontal; } box-orient属性总共有5个值: .box{ box-orient: horizontal | vertical | inline-axis | block-axis | inherit; } horizontal:在水平行中从左向右排列子元素。 vertical:从上向下垂直排列子元素。 inline-axis: 沿着行内轴来排列子元素(映射为horizontal)。 block-axis: 沿着块轴来排列子元素(映射为vertical)。 inherit: 应该从父元素继承box-orient属性的值。 5.box-lines属性 box-lines定义当子元素超出了容器是否允许子元素换行。 .box{ -moz-box-lines: multiple; -webkit-box-lines: multiple; box-lines: multiple; } box-lines属性总共有2个值: .box{ box-lines: single | multiple; } single:伸缩盒对象的子元素只在一行内显示multiple:伸缩盒对象的子元素超出父元素的空间时换行显示 6.box-flex属性。 box-flex定义是否允许当前子元素伸缩。 .item{ -moz-box-flex: 1.0; -webkit-box-flex: 1.0; box-flex: 1.0; } box-flex属性使用一个浮点值: .item{ box-flex: ; } 7.box-ordinal-group属性 box-ordinal-group定义子元素的显示次序,数值越小越排前。 .item{ -moz-box-ordinal-group: 1; -webkit-box-ordinal-group: 1; box-ordinal-group: 1; } box-direction属性使用一个整数值: .item{ box-ordinal-group: ; } 新版语法如下: 定义容器的display属性: .box{ display: -webkit-flex; display: flex; } .box{ display: -webkit-inline-flex; display:inline-flex; } 容器样式 .box{ flex-direction: row | row-reverse | column | column-reverse; flex-wrap: nowrap | wrap | wrap-reverse; flex-flow: ; justify-content: flex-start | flex-end | center | space-between | space-around; align-items: flex-start | flex-end | center | baseline | stretch; align-content: flex-start | flex-end | center | space-between | space-around | stretch; } flex-direction值介绍如下: row:默认值。灵活的项目将水平显示,正如一个行一样。 row-reverse:与row相同,但是以相反的顺序。 column:灵活的项目将垂直显示,正如一个列一样。 column-reverse:与column相同,但是以相反的顺序。 flex-wrap值介绍如下: nowrap: flex容器为单行。该情况下flex子项可能会溢出容器。 wrap: flex容器为多行。该情况下flex子项溢出的部分会被放置到新行,子项内部会发生断行。 wrap-reverse: 换行并第一行在下方 flex-flow值介绍如下(主轴方向和换行简写): :定义弹性盒子元素的排列方向 :控制flex容器是单行或者多行。 justify-content值介绍如下: flex-start:弹性盒子元素将向行起始位置对齐。 flex-end:弹性盒子元素将向行结束位置对齐。 center:弹性盒子元素将向行中间位置对齐。 space-between:第一个元素的边界与行的主起始位置的边界对齐,同时最后一个元素的边界与行的主结束位置的边距对齐, 而剩余的伸缩盒项目则平均分布,并确保两两之间的空白空间相等。 space-around:伸缩盒项目则平均分布,并确保两两之间的空白空间相等,同时第一个元素前的空间以及最后一个元素后的空间为其他空白空间的一半。 align-items值介绍如下: flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。 flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。 center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。 baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与"flex-start"等效。其它情况下,该值将参与基线对齐。 stretch:如果指定侧轴大小的属性值为"auto",则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照"min/max-width/height"属性的限制。 align-content值介绍如下: flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。 flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。 center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。 space-between:第一行的侧轴起始边界紧靠住弹性盒容器的侧轴起始内容边界,最后一行的侧轴结束边界紧靠住弹性盒容器的侧轴结束内容边界, 剩余的行则按一定方式在弹性盒窗口中排列,以保持两两之间的空间相等。 space-around:各行会按一定方式在弹性盒容器中排列,以保持两两之间的空间相等,同时第一行前面及最后一行后面的空间是其他空间的一半。 stretch:各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于"flex-start"。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。 子元素属性 .item{ order: ; flex-grow: ; flex-shrink: ; flex-basis: | auto; flex: none | [<"flex-grow"><"flex-shrink">? ||<"flex-basis">] align-self: auto | flex-start | flex-end | center | baseline | stretch; } 兼容写法 1.首先是定义容器的display属性: .box{ display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; } 这里还要注意的是,如果子元素是行内元素,在很多情况下都要使用display:block或display:inline-block把行内子元素变成块元素(例如使用box-flex属性),这也是旧版语法和新版语法的区别之一。 2.子元素主轴对齐方式(水平居中对齐) .box{ -webkit-box-pack: center; -moz-justify-content: center; -webkit-justify-content: center; justify-content: center; } 兼容写法新版语法的space-around是不可用的:如下新版语法space-around; .box{ box-pack: start | end | center | justify; justify-content: flex-start | flex-end | center | space-between | space-around; } 3.子元素交叉轴对齐方式(垂直居中对齐) .box{ box-align: start | end | center | baseline | stretch; align-items: flex-start | flex-end | center | baseline | stretch; } 4.子元素的显示方向。 子元素的显示方向可通过box-direction + box-orient + flex-direction实现,如下代码: 1.左到右(水平方向) .box{ -webkit-box-direction: normal; -webkit-box-orient: horizontal; -moz-flex-direction: row; -webkit-flex-direction: row; flex-direction: row; } 2.右到左(水平方向) .box{ -webkit-box-pack: end; -webkit-box-direction: reverse; -webkit-box-orient: horizontal; -moz-flex-direction: row-reverse; -webkit-flex-direction: row-reverse; flex-direction: row-reverse; } 如上代码:box写法的box-direction只是改变了子元素的排序,并没有改变对齐方式,需要新增一个box-pack来改变对齐方式。 3.上到下(垂直方向上) .box{ -webkit-box-direction: normal; -webkit-box-orient: vertical; -moz-flex-direction: column; -webkit-flex-direction: column; flex-direction: column; } 4.下到上(垂直方向上) .box{ -webkit-box-pack: end; -webkit-box-direction: reverse; -webkit-box-orient: vertical; -moz-flex-direction: column-reverse; -webkit-flex-direction: column-reverse; flex-direction: column-reverse; } 5.是否允许子元素伸缩 .item{ -webkit-box-flex: 1.0; -moz-flex-grow: 1; -webkit-flex-grow: 1; flex-grow: 1; } box语法中box-flex如果不是0就表示该子元素允许伸缩,而flex是分开的,上面flex-grow是允许放大(默认不允许) .item{ -webkit-box-flex: 1.0; -moz-flex-shrink: 1; -webkit-flex-shrink: 1; flex-shrink: 1; } flex-shrink是允许缩小(默认允许)。box-flex默认值为0,也就是说,在默认的情况下,在两个浏览器中的表现是不一样的:介绍如下: .item{ box-flex: ; flex-grow: ; flex-shrink: ; } 6.子元素的显示次序 .item{ -webkit-box-ordinal-group: 1; -moz-order: 1; -webkit-order: 1; order: 1; }【移动端H5技术要点全面汇总】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章真给力啊,一直想要学习一下H5开发,正好可以来看看里面都有哪些重点!
有6位网友表示赞同!
收藏了,以后有空就来看看这篇总结,希望能加深对H5的了解。
有17位网友表示赞同!
做移动端开发的有必要学习H5这些知识点吗?感觉蛮重要的样子。
有7位网友表示赞同!
标题很吸引人,希望里面能详细介绍一些实际应用案例,更能理解啊!
有15位网友表示赞同!
最近在尝试做些简单的网页项目,感觉H5的优势蛮明显的。
有19位网友表示赞同!
学习开发需要持续跟上时代的步伐,对最新技术的了解很重要啊!
有14位网友表示赞同!
看这个标题我就感觉很有用,希望总结的内容能讲解得很细致,以便小白快速入门。
有16位网友表示赞同!
做移动端APP的时候需要H5吗?这篇文章会不会介绍下相关的开发经验?
有16位网友表示赞同!
很多同学都对学习H5不太清楚从何入手,这篇总结真是太合适了!
有14位网友表示赞同!
现在手机上网页体验越来越重要了,掌握H5的知识可以大大提升页面效果!
有14位网友表示赞同!
我本来打算去网上找一些H5开发教程,看到这篇文章就来瞅瞅,希望能提供新的思路。
有16位网友表示赞同!
移动端开发真的是一个非常有潜力的领域,继续学习新技术很重要。
有18位网友表示赞同!
分享一下这篇总结,让想学习H5的小伙伴也能跟着一起进步!
有14位网友表示赞同!
学习新技术的过程还是很让人兴奋的,期待深入了解H5带来的更多可能性!
有11位网友表示赞同!
文章内容能不能涵盖一些常见问题和解决方法呢?这对我们学习很有帮助。
有6位网友表示赞同!
希望能看到一些相关的代码示例,这样更能加深对H5知识点的理解。
有19位网友表示赞同!
期待文章的分享能够让我们在短时间内掌握H5开发的一些基本技能。
有13位网友表示赞同!
我准备去做一个移动端项目,H5的知识点很有用,这篇文章正好来补充我的学习。
有16位网友表示赞同!
看完标题就感觉很实用,希望这篇文章可以提供一些实用的干货内容!
有20位网友表示赞同!