CSS进阶-移动web

215 阅读9分钟

一、平面转换

使用transform属性实现元素的位移、旋转、缩放等效果

 

改变盒子在平面内的形态(位移、旋转、缩放)

2D转换

属性:transform

 

1.1位移

语法:Transform:translate(说移动距离,垂直移动距离);

 

取值:(正负均可)

像素单位数值

百分比(参照物为盒子自身尺寸)

 

注意:x轴正向为右,Y轴正向为下

 

技巧:

Translate()如果只给出一个值,表示x轴方向移动距离

单独设置某个方向的移动距离:translateX()   translateY()

 

1.2旋转

语法:transfrom:rotate(角度)

 

注意:角度单位是deg

 

技巧:取值正负均可

 

1.2.1转换原点

语法:

默认圆点是盒子中心点

tranform-origin:原点水平位置 原点垂直位置;

取值:

方位名词(left、top、right、bottom、center)

像素单位数值

百分比(参照盒子自身尺寸计算)

 

1.3多重转换

注意:连写先写translate

Transform:translate() rotate();

 

1.4缩放

语法:

Transform:scale(x轴缩放倍数,y轴缩放倍数);

 

技巧:

一般情况下,只为scale设置一个值,表示x轴和y轴等比例缩放

Transform:scale(缩放倍数);

 

1.5渐变背景

渐变是多个颜色逐渐变化的视觉效果

一般用于设置盒子的背景

1.5.png

 

二、空间转换

使用transform属性实现元素在空间内的位移、旋转、缩放等效果

空间:是从坐标轴角度定义的。X、y和z三条坐标轴构成了一个立体空间,z轴位置于视线方向相同。

空间转换也叫3D转换

属性:transform

 

1.1空间位移

语法:

transform:translate3D(x,y,z);

transform:translateX(值);

transform:translateY(值);

transform:translateZ(值);

取值:(正负均可)

像素单位数值

百分比

 

1.2透视

属性:(添加给父级)

perspective:值;

取值:像素单位数值,数值一般在800-1200.

 

1.3空间旋转

语法:

transfrom:rotateZ(值);

transfrom:rotateX(值);

transfrom:rotateY(值);

 

左手法则:

判断旋转方向:左手握住旋转轴,拇指指向正值方向,手指弯曲方向为旋转正值方向。

 

拓展

rorate3D(x,y,z,角度度数):用来设置自定义旋转轴的位置及旋转的角度

X,y,z取值为0-1之间的数字

 

1.3.1立体呈现

使用transfrom-style:preserve-3d呈现立体图形

使子元素处于真正的3D空间

 

呈现立体图形步骤

1、盒子父元素添加transfrom-style:preserve-3d;

2、按需求设置子盒子的位置(位移或旋转)

 

1.3.2  3D导航

实现思路

1. 搭建立方体

li标签

添加立体呈现属性transfrom-style:preserve-3d;

添加旋转属性(为了便于观察效果,完成后删除)

a标签

调节a标签的位置

a标签定位(子绝父相)

一部分添加旋转和位移样式

第二部分添加位移样式

 

1.4空间缩放

语法:

transfrom:scaleX(倍数);

transfrom:scaleY(倍数);

transfrom:scaleZ(倍数);

transfrom:scale3d(x,y,z);

 

三、动画

实现多个状态间的变化过程,动画过程可控(重复播放、最终画面、是否暂停)

 

步骤

1. 定义动画

1.7.png

1.6.png

2. 使用动画

1.8.png

  1.9.png

速度曲线:

匀速:linear

分段动画:steps(分多少段),分段执行

重复次数:

无线循环:infinity

动画方向:

alternate

执行完毕的状态:

默认值:backwards

动画停留在结束的状态:forwards

注意:

动画名称和动画时长必须赋值

取值部分先后顺序

如果有2个时间值,第一个时间表示动画时长,第二个时间表示延迟时间

重复次数、动画方向 不要和 执行完毕的状态同时设置

 

2.png

 

3.1逐帧动画

逐帧动画一般配合精灵图实现动画效果。

3.1.png

 

精灵动画制作步骤

准备显示区域

设置盒子尺寸是一张小图的尺寸,背景图为当前精灵图

定义动画

改变背景图的位置(移动的距离就是精灵图的宽度)

使用动画

添加速度曲线steps(n),n与精灵图上小图个数相同

添加无限重复效果

 

3.2多组动画

3.2.png

 

四、移动端网页

4.1 PC端网页和移动端网页的区别

PC屏幕大,网页固定版心

手机屏幕小,网页宽度多数为100%

4.2分辨率

物理分辨率:是生产屏幕时就固定的,它是不可被改变的

逻辑分辨率:是由软件(驱动)决定的

4.2.png

4.3视口

使用meta标签设置视口宽度,制作适配不同设备宽度的网页

手机屏幕尺寸都不同,网页宽度为100%

网页的宽度和逻辑分辨率尺寸相同

4.3.png

4.4百分比布局

也叫流式布局

效果:宽度自适应,高度固定

 

五、Flex布局

也叫弹性布局

是一种浏览器提倡的布局模型,布局网页更简单、灵活,避免浮动脱标的问题

 

5.1 Flex布局模型构成

作用:基于Flex精确灵活控制块级盒子的布局方式,避免浮动布局中脱离标准流现象发生。

Flex布局非常适合结构化布局

 

设置方式:

父元素添加display:flex,子元素可以自动的挤压或拉伸

组成部分:

弹性容器

弹性盒子

主轴

侧轴/交叉轴

5.1.png

 

 

5.2主轴对齐方式

属性:justify-content

5.2.png

 

5.2.1主轴方向

主轴默认是水平方向,侧轴默认是垂直方向

修改主轴方向属性:flex-direction

5.2.1.png

 

5.3侧轴对齐方式

属性:align-iems(添加到弹性容器)

      align-self控制某个弹性盒子在侧轴的对齐方式(添加到弹性盒子)

5.3.png

 

5.4伸缩比

属性:flex:值;

取值分类:数值(整数)

注意:只占父盒子剩余尺寸

 

5.5弹性盒子换行

属性:flex-wrap:wrap;

 

调整行对齐方式:align-content

取值与justify-content基本相同

 

 

六、移动适配

 

6.1  rem

网页效果:屏幕宽度不同,网页元素尺寸不同(等比缩放)

 

rem单位:

相对单位

rem单位是相对于html标签的自豪计算结果

1rem=1html字号大小

目前rem布局方案中,将网页等分成10份,html标签的字号为视口宽度的1/10

 

rem单位尺寸

1. 确定设计稿对应的设备的html标签字号

    查看设计稿宽度→确定参考设备宽度(视口宽度)→确定基准根字号(1/0视口宽度)

2. rem单位的尺寸

    rem单位的尺寸=px单位数值/根基准字号

 

6.1.2媒体查询

设置差异化CSS样式

6.1.2.png

6.1.2.1.png

 

6.1.3  flexible

Flexible是手淘开发出的一个用来适配移动端的js框架

核心原理就是根据不同的视口宽度给网页仲html根节点设置不同的font-size

 

写在body的最后

< body >

< script scr=”js文件的路径”>< /script>

< /body >

 

6.2  Lesss

是CSS预处理器,less文件后缀是.less。扩充了CSS语言,使CSS具备一定的逻辑性、计算能力。

通过less可以实现完成px单位到rem单位的转换

 

注意:浏览器不识别less代码,网页要引入对应的CSS文件

 

VScode插件:easy less

作用:less文件保存自动生成css文件

 

6.2.1注释

单行注释

语法://注释内容

快捷键:ctrl+/

块注释

语法:/注释内容/

快捷键:shift+alt+A

 

6.2.2运算

加、减、乘直接书写计算表达式

除法需要添加小括号或.

 

6.2.3嵌套

作用:快速生成后代选择器

语法:

6.2.3.png

 

注意:&不生成后代选择器,标签当前选择器,通常配合伪类或伪元素使用

 

6.2.4变量

存储数据,方便使用和修改

语法:

定义变量:@变量名:值;

使用变量:CSS属性:@变量名;

 

6.2.5 less导入

网页引入方式:

CSS:书写link标签

Less:导入

导入:@import “文件路径”;

6.2.5.png

 

6.2.6导出CSS文件

方法1:

配置easyless插件,实现所有less有相同的导出路径

配置插件:设置→搜索easyless→在setting.json中编辑→添加代码”out ”:”../css/”(注意,必须是双引号)

6.2.6.png

方法2:

在less文件首行书写//out: 路径(./css/) 单独给当前less文件设置导出路径。

 

6.2.7禁止导出

在less文件第一行添加: //out: false

 

6.2.8压缩导出

在less文件第一行添加: //compress:true

 

6.3 vw/vh

相对单位

相对视口的尺寸计算结果

Vw:viewport width

1vw=1/100视口宽度

Vh:viewport height

1vh=1/100视口高度

 

6.3.1  vw适配原理

Vw单位尺寸

1. 确定设计稿对应的vw尺寸(1/100视口宽度)

查看设计稿宽度→确定参考设备宽度(视口宽度)→确定vw尺寸(1/100视口宽度)

2. Vw单位的尺寸=px单位数值/(1/100视口宽度)

6.3.2  vh适配原理

Vh单位尺寸

1.确定设计稿对应的vh尺寸(1/100视口宽度)

查看设计稿宽度→确定参考设备高度(视口高度)→确定vh尺寸(1/100视口高度)

2.Vh单位的尺寸=px单位数值/(1/100视口高度)

 

七、响应式布局

7.1媒体查询

开发常用写法

媒体特性常用写法

Max-width

min-width

7.png

 

完整写法

7.1.png

书写顺序:

min-width(从小到大)

max-width(从大到小)

 

媒体类型:

用来区分设备类型,入屏幕设备、打印设备等,手机、电脑、平板都属于屏幕设备。

7.2.png

 

媒体特性:

用来描述媒体类型的具体特征,如当前屏幕的宽高、分辨率、横屏或竖屏

7.3.png

7.2 媒体查询-link写法

外链式CSS引入

7.2.2.png

7.2.3.png

 

7.3 BootStrap

官网:https://www.bootcss.com/

 

使用步骤:

1.引入:BootStrap提供的CSS代码

7.3.1.png

2.调用类:使用BootStrap提供的样式

Container:响应式布局版心类

 

7.3.1 BootStrap栅格系统

将整个网页的宽度分成若干等份

BootStrap3默认将网页分成12等份

7.3.2.png

 

.container是BootStrap中专门提供的类名,所有应用该类名的盒子,默认已被指定宽度且居中。

.container-fluid也是BootStrap中专门提供的类名,所有应用改类名的盒子,宽度均为100%

分别使用.row类名和.col类名定义栅格布局的行和列。

 

注意:

1. container类自带间距15px

2. row类自带间距-15px

 

7.4手册用法

网站首页→BootStrap3中文文档→全局CSS样式→按分类导航查找目录类

 

 

 

7.5插件使用

步骤:

引入BootStrap样式

引入js文件:jQuery.js+BootStrap.min.js

7.5.png

复制HTML结构,并适当调整结构或内容