过渡,动画,私有前缀,视口,流式布局

过渡

过渡的属性

  1. 如果两个状态发生改变,没有过渡,效果是瞬间变化的
  2. 如果加上了过渡,那么这个过程就会有动画的效果。
  3. 整个状态变化的过程是由浏览器来完成的,我们只需要关注开始状态与结束状态即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
/*transition-property:设置过渡属性
/*也可以是width,height*/
transition-property:all;

/*transition-duration:设置过渡时间*/
transition-duration:1s;

/*transition-delay:设置过渡延时*/
transition-delay:2s;

/*transition-timing-function:设置过渡的速度*/
/*linear,ease,ease-in,ease-out,ease-in-out, steps(10)*/
transition-timing-function:linear;

过渡图片

属性合写

1
2
/* 属性 时间 延时 速度 */
transition: width 1s 3s linear;

过渡的注意点:

  • 过渡必须要有两个状态的变化。
  • 过渡可以写在A状态,也可以写在B状态,但是如果写在B状态,那么回来的时候,就没有过渡效果了。

深入理解过渡

CSS3动画

动画可以通过设置多个节点来精确控制一个或者一组动画,常用来实现复杂的动画效果。

动画与过渡的区别:

1
2
1. 过渡必须触发,需要两个状态的改变。
2. 动画可以一直运行下去,不需要触发。实现效果与过渡差不多

定义动画

基本步骤

1
2
//1.通过@keyframes指定动画序列
//2.通过animation将动画应用于相应的元素
  • 定义基本动画
1
2
3
4
5
6
7
8
9
10
11
12
/* 1. 定义一个动画 */
@keyframes rotate {
/* 动画的开始状态 */
from {
transform: rotate(0deg);
}
/* 动画的结束状态 */
to {
transform: rotate(360deg);
}
}

  • 定义百分比动画
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@keyframes scale {
0% {
width: 200px;
height: 200px;
}
50% {
width: 300px;
height: 200px;
}
100% {
width: 300px;
height: 300px;
}
}

animation详解

animation是一个复合属性,一共有8个参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
animation-name:动画名称,由@keyframes定义的
animation-duration:动画的持续时间
animation-timing-function:动画的过渡类型
ease:变速
linear:匀速
steps:分步动画
animation-delay:动画的延迟时间
animation-iteration-count:动画的循环次数
infinite:无穷次
animation-direction:设置动画在循环中是否反向运动
normal:从from到to
reverse: 从to到from
alternate: 交替执行
animation-fill-mode:设置动画时间之外的状态
forwards:停留在结束状态
animattion-play-state:设置动画的状态。
paused: 暂停动画

帧动画原理

CSS3私有前缀

在标准还未确定时,部分浏览器已经根据最初草案实现了部分功能,为了与之后确定下来的标准进行兼容,所以每种浏览器使用了自己的私有前缀与标准进行区分,当标准确立后,各大浏览器将逐步支持不带前缀的css3新属性

目前已有很多私有前缀可以不写了,但为了兼容老版本的浏览器,可以仍沿用私有前缀和标准方法,逐渐过渡。

一般来说,CSS3主要是为移动端而生的,因此我们在移动端没必要写太多的前缀,因为移动端的ios和Android的浏览器都是webkit内核。

1
2
3
4
谷歌、苹果浏览器:-webkit-
火狐浏览器:-moz-
IE浏览器:-ms-
欧朋浏览器:-o-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
div {
width: 200px;
height: 200px;
background-color: pink;
margin: 100px auto;

/*谷歌浏览器和safari浏览器的前缀 -webkit-*/
-webkit-transform: rotate(45deg);
/*火狐浏览器的前缀 -moz-*/
-moz-transform: rotate(45deg);
/*ie浏览器的前缀 -ms-*/
-ms-transform: rotate(45deg);
/*opera浏览器的前缀 -o-*/
-o-transform: rotate(45deg);
/*规范化后的写法*/
transform: rotate(45deg);
}

移动端样式

移动端开发现状

  • 移动web开发指的是需要适配移动设备的网页开发
  • 移动web开发与pc端web开发没有本质的区别,使用的还是HTML/CSS/JavaScript的技术
  • 移动web开发与pc端web开发的区别是什么?

移动端的浏览器与pc端不同

1
2
3
4
谷歌浏览器 苹果浏览器、 UC浏览器 QQ浏览器 欧朋浏览器 百度手机浏览器  360安全浏览器  搜狗浏览器  猎豹浏览器等
国内的手机浏览器都是根据webkit内核修改过来的,国内没有自主研发的内核,国内的操作系统也是基于Android系统修改的。

因此在移动端,css3属性只需要加webkit前缀即可。

移动端设备尺寸不一样(尺寸非常多,碎片化很严重)

1
2
Android320*480 480*800  540*960 720*1280 1080*1920 2k屏 4k屏
iphone: 640*960 640*1136 750*1334 1242*2208

视口 viewport(重要)

1
2
3
4
5
6
7
8
9
10
11
12
问题:一个电脑上的网站,在手机端访问,效果是什么样的?

iPhone5的设备宽度只有320px,一张宽度为640px的图片在手机端访问,显示的效果是什么?

1. 在手机端,html的大小都是980px,为什么?
这主要是历史原因导致的,因为在移动设备刚流行的时候,网站大多都是pc端的,pc端的页面宽度一般都比较大,移动设备的宽度比较小,如果pc端页面直接在移动端显示的话,页面就会错乱。为了解决这个问题,移动端html的大小直接就定死成了980px(因为早起的pc端网站版心就是980px居多)。

2. 视口
在pc端,html的大小默认是继承了浏览器的宽度,即浏览器多宽,html的大小就是多宽,但是在移动端,多出来了一个视口的概念(乔布斯),视口说白了就是介于浏览器与html之间的一个东西,视口的宽度默认定死了980px,因此html的宽度默认就是980px,视口的特点是能够根据设备的宽度进行缩放。

3. 视口设置。
对于现在的移动端页面来说,视口默认为980px肯定不合适,因为设备宽度不够的话,视口会进行缩放,导致页面展示效果不好看。

视口参数设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//width 设置视口的宽度
//width=device-width 设置视口宽度为设备的宽度(常用)。

//initial-scale 设置初始缩放比例
//initial-scale=1.0 表示不缩放

//user-scalable 设置是否允许用户缩放
//user-scalable=no 不允许用户缩放

//maximum-scale 设置允许的最大缩放比例
//maximum-scale=1.0 可以不设置,因为都禁止用户缩放了。

//minimum-scale 设置允许最小缩放比
//minimum-scale=1.0 不设置,因为禁用用户缩放了。


//标准写法:
//快捷键: meta:vp + tab键
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0">

流式布局

移动端的特点

  • 手机端的兼容性问题比PC端小很多,因为手机端的浏览器版本比较新
  • 手机端屏幕比较小,能够放的内容比较少。

问题:布局的时候怎么解决屏幕大小不一致的问题?

  • PC端,固定版心,让所有分辨率的电脑的版心都是一样的,比如京东
  • 移动端:移动端无法设置版心,因为移动端的设备屏幕本身就小,设置版心不合适。因此移动端大多会采用流式布局(百分比布局)

流式布局,也叫百分比布局,是移动端开发中经常使用的布局方式之一。

流式布局的特征:

  • 宽度自适应,高度写死,并不是百分百还原设计图
  • 图标都是固定死大小的,包括字体等也是固定死的。并不是所有的东西都是自适应的。
  • 一些大的图片,设置宽度为百分比自适应即可,随着屏幕大小进行变化

经典的流式布局

1
2
3
4
//1. 左侧固定,右侧自适应
//2. 右侧固定,左侧自适应
//3. 两侧固定,中间自适应(圣杯布局,双飞翼布局)
//4. 等分布局

设计图的缩放

手机端的设计图相对手机来说 是两倍或者三倍的关系 直接拿到这样的设计图量的结果都是2倍的 所以需要除以2 每次手动去除较为麻烦 所以 推荐将设计图缩放到320的大小

两倍图

由于手机端的像素密度要比PC端高,很多手机的像素密度是电脑的2倍甚至3倍,所以为了在手机上显示的图片更加清晰,设计师给的图片都是2倍图甚至3倍图

问题: 如何使用2倍图片的精灵图或者3倍图片的精灵图?

1
2
3
4
5
6
7
8
9
以2倍图为例:
1. 利用PS将精灵图缩小一倍,去量取对应的宽高和位置坐(这个缩小仅仅是为了量取坐标 而真正引入到页面的图片还是原设计图下面切出来的图片)
2. 利用background-size去缩放精灵图(缩放至原始图片的1/2)

重点注意: 引用的图片还是原来的2倍图

利用ps缩放图片:
1. 将图片选项卡拖拽出来或者选择菜单栏
2. 图像 - 图像大小 - 将宽度缩放至1/2即可 只需要缩放一个就行 默认会保证等比例