第三周预习

1.1平面转换 transform 作用:为元素添加动态效果,一般与过渡配合使用

概念:改变盒子在平面内的形态(位移、旋转、缩放、倾斜) 平面转换又叫 2D 转换

1.2平面转换 - 平移

  • 属性

    transform: translate(X轴移动距离,Y轴移动距离);

● 取值 ◆ 像素单位数值 ◆ 百分比(参照盒子自身尺寸计算结果) ◆ 正负均可 ● 技巧 ◆ translate()只写一个值,表示沿着X 轴移动 ◆ 单独设置X或Y轴移动距离:translateX()或 translateY()

 .son {
 width: 200px;
 height: 100px;
 background-color: ■pink;
 transition: all 0.5s;
 }
 /*鼠标移入到父盒子,son改变位置*/
 .father:hover .son {
 transform: translate(200px, 100px);
 /* 百分比:参照盒子自身尺寸计算结果 */
 transform: translate(50%, 100%);
 transform: translate(-50%, 100%);
 /* 只写一个数表示水平方向 */
 transform: translate(100px);
 transform: translateY(100px);
 transform: translatex(100px);
 }
 .box{
 position: absolute;
 left: 50%;
 top: 50%;
 /* 向左向上移动自身尺寸的一半*/
 transform: translate(-50%, -50%);
 width: 200px;
 height: 100px;
 background-color: pink;
 }
 可使盒子的中心在页面中心

1.3平面转换﹣旋转

  • 属性

transform: rotate(旋转角度); ◆ 角度单位是 deg ● 技巧 ◆ 取值正负均可 ◆ 取值为正,顺时针旋转 ◆ 取值为负,逆时针旋转

 img {
 width: 200px;
 transition: all 2s;
 }
 /* 鼠标悬停到图片上面,添加旋转效果 */
 img:hover{
 /* 正数:顺时针旋转;负数:逆时针旋转*/
 transform: rotate(360deg);
 transform: rotate(-360deg);
 }

1.4平面转换 ﹣改变转换原点 ● 默认情况下,转换原点是盒子中心点

● 属性 transform-origin: 水平原点位置 垂直原点位置; ● 取值 ● 方位名词(left、top、right、bottom、center)

● 像素单位数值 ● 百分比

 img {
 width: 200px;
 border: 1px solid □#000;
 transition: all 1s;
 transform-origin: right bottom;
 }
 img:hover {
 transform: rotate(360deg);
 }

1.5平面转换 ﹣多重转换 多重转换技巧:先平移再旋转 transform: translate() rotate();

 .box {
 width: 800px;
 height: 200px;
 border: 1px solid O#000;
 }
 img {
 width: 200px;
 transition: all 5s;
 }
 /*鼠标移入box,图片边走边转 */
 .box:hover img {
 /* 先平移再旋转 */
 transform: translate(600px) rotate(360deg);
 /* 旋转会改变坐标轴向 */
 /*多重转换:以第一种转换形态的坐标轴为准 */
 transform: rotate(360deg) translate(600px); 
 /* 层叠性,不可以分着写 */
 transform: translate(600px);
 transform: rotate(360deg); 
 }

1.6平面转换﹣缩放 思考:改变元素的width或height属性能实现吗?

  • 属性

    transform: scale(缩放倍数);

    transform: scale(X轴缩放倍数,Y轴缩放倍数);

  • 技巧

    通常,只为scale()设置一个值,表示 X 轴和 Y 轴等比例缩放取值大于1表示放大,取值小于1表示缩小

 . box{
 width: 300px;
 height: 210px;
 margin: 100px auto;
 background-color: pink;
 }
 .box img {
 width: 100%;
 transition: all 0.5s;
 }
 .box:hover img {
 /*修改宽高尺寸,从左上角开始缩放 */
 /* width: 500px;
 height: 400px;*/
 从中心开始缩放
 /* 大于1,表示放大 */
 transform: scale(2);
 /* 小于1,表示缩小 */
 transform: scale(0.5);
 /* 等于1,不变*/
 transform: scale(1);

1.7平面转换﹣倾斜 属性 transform: skew(); ● 取值 角度度数 deg

 div {
 margin: 100px auto;
 width: 100px;
 height: 200px;
 background-color: pink;
 transition: all 0.5s;
 }
 div:hover {
 transform: skew(30deg);
 transform: skew(-30deg);
   }

1.8径向渐变

作用:给按钮添加高光效果

  • 属性

background-image: radial-gradient(

半径 at 圆心位置,

颜色1终点位置,

颜色2 终点位置,

.....

);

  • 取值

    半径可以是2条,则为椭圆

    圆心位置取值:像素单位数值/百分比/方位名词

 button {
 width: 100px;
 height: 40px;
 background-color: Ogreen;
 border: 0;
 border-radius: 5px;
 color: ■#fff;
 background-image: radial-gradient(
 30px at 30px 20px,
 □rgba(255, 255, 255, 0.2),
 transparent
 );
 }
 div {
 width: 100px;
 height: 100px;
 background-color: pink;
 border-radius: 50%;
 background-image: radial-gradient(
     50px at center center,
     red,
     pink
 );
 background-image: radial-gradient(
     50px 20px at center center,
     red,
     pink
 );
 }

1.9空间转换

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

  • 空间转换也叫 3D转换

  • 属性:transform

1.10空间转换 - 平移 属性 transform: translate3d(x, y, z); transform: translatex(); transform: translateY(); transform: translateZ(); ● 取值(正负均可) ◆ 像素单位数值 ◆ 百分比(参照盒子自身尺寸计算结果)

 .box {
 width: 200px;
 height: 200px;
 margin: 100px auto;
 background-color: Mpink;
 transition: all 0.5s;
 }
 .box:hover {
 /* 电脑是平面,默认无法观察 Z 轴平移效果 */
 /* transform: translate3d(100px, 200px, 300px); */
 /* 3d 小括号里面必须逗号隔开三个数 */
 /* transform: translate3d(100px, 200px); */
 transform: translatex(100px);
 transform: translatey(-100%);
 transform: translatez(300px);
 }

1.11视距 perspective 作用:指定了观察者与Z=O平面的距离,为元素添加透视效果

透视效果:近大远小、近实远虚 属性:(添加给父级,取值范围800-1200) perspective: 视距;

 /* 视距属性必须添加给直接父级 */
 .father{
 perspective: 1000px;
 }
 .son {
 width: 200px;
 height: 200px;
 margin: 100px auto;
 background-color: Mpink;
 transition: all 0.5s;
 }
 .son:hover{
 transform: translatez(-300px);
 transform: translateZ(300px);
 }
 .box {
 /*透视效果:近大远小,近实远虚*/
 perspective: 1000px;
 }
 .box img:hover {
 transform: rotatex(60deg);
 transform: rotatex(-60deg);
 }

1.12空间 - 旋转 ● transform: rotateZ(值);

● transform: rotateX(值);

● transform: rotateY(值); 左手法则﹣根据旋转方向确定取值正负 左手握住旋转轴,拇指指向正值方向,其他四个手指弯曲方向为旋转正值方向

一般父级加一个 /*透视效果:近大远小,近实远虚*/ perspective: 1000px; 拓展

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

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

1.13立体呈现 - transform-style 作用:设置元素的子元素是位于3D空间中还是平面中 属性名:transform-style 属性值: □ flat:子级处于平面中 ■ preserve-3d:子级处于 3D 空

1.14空间转换 ﹣缩放 属性 transform: scale3d(x, y, z);

transform: scalex(); transform: scaley(); transform: scalez();

 transition: all 0.5s;
 transform-style: preserve-3d;

一般缩放的对象都要有这两个属性

1.1动画﹣animation

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

1.2动画 - animation . 实现步骤

  1. 定义动画 @keyframes 动画名称{

    from {}

    to {}

    }

  2. @keyframes 动画名称{ 0% {} 10% { ...... 100%{}

    }

  3. 使用动画 animation:动画名称 动画花费时长;

 .box {
 width: 200px;
 height: 100px;
 background-color: ■pink;
 animation: change 1s;
 }
 /* 动画一:宽度从200变化到800*/
 @keyframes change {
 from {
 width: 200px;
 }
 to{
 width: 800px;
 }
 /* 动画二:从200*100 变化到300*300 变化到800*500 *//* 百分比:表示的意思是动画时长的百分比*/
 @keyframes change {
 0% {
 width: 200px;
 height: 100px;
 }
 20% {
 width: 300px;
 height: 300px;
 }
 100% {
 width: 800px;
 height: 500px;
 }

1.3动画 - animation animation:动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态; 提示: 动画名称和动画时长必须赋值 取值不分先后顺序 如果有两个时间值,第一个时间表示动画时长,第二个时间表示延迟时间

 .box {
 width: 200px;
 height: 100px;
 background-color: pink;
 /* linear: 匀速 */
 animation: change 1s linear;
 /* steps:分步动画,工作中,配合精灵图实现精灵动画*/
 animation: change 1s steps(3);
 /*如果有两个时间,第一个是动画时长,第二个是延迟时间 */
 animation: change 1s 2s;
 /* 重复次数,infinite: 无限循环 */
 animation: change 1s 3;
 animation: change 1s infinite;
 /* alternate: 反向*/
 animation: change 1s infinite alternate;
 /* 动画执行完毕时的状态,forwards:结束状态;backwards:开始状态(默认)*/
 animation: change ls backwards;
 animation: change 1s forwards;
 }
 /* 宽度 从 200 变化到 800 */
 @keyframes change {
 from {
 width: 200px;
 }
 to {
 width: 800px;
 }

1.4动画﹣逐帧动画 属性animation-timing-function 作用速度曲线 取值steps(数字):逐帧动画

1.1

媒体查询 思考 手机屏幕大小不同,分辨率不同,如何设置不同的HTML标签字号?

媒体查询 媒体查询能够检测视口的宽度,然后编写差异化的CSS样式 当某个条件成立,执行对应的CSS样式

 @media(媒体特性)
     选择器{
         CSS属性
         }
 }
 /* 当视口宽度是375,网页背景色是绿色 */
 @media (width:375px) {
 body {
 background-color: Ogreen;
 }

1.2rem 思考 ● 设备宽度不同,HTML标签字号设置多少合适? 设备宽度大,元素尺寸大

设备宽度小,元素尺寸小

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

1.3rem-flexible.js ● flexible.js 是手淘开发出的一个用来适配移动端的js 库。 核心原理就是根据不同的视口宽度给网页中 html 根节点设置不同的 font-size。

 <body>
 ......
 <script src="./js/flexible.js"></script>
 </body>

rem﹣移动适配 ● 目标:计算68px是多少个rem?(设计稿适配375px视口) ·N*37.5=68 ·N= 68/37.5 . rem单位尺寸 1.确定基准根字号

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

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

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

注意:浏览器不识别Less代码,目前阶段,网页要引入对应的CSS文件 VS Code 插件Easy LESS保存 less文件后自动生成对应的CSS文件

 less - 注释
 注释:
 ● 单行注释
     > 语法://注释内容
     > 快捷键:ctrl+/
 ● 块注释
     > 语法:/* 注释内容*/
     >快捷键:Shift+Alt+A

less - 运算 运算: ● 加、减、乘直接书写计算表达式

● 除法需要添加 小括号 或.

less - 嵌套 作用:快速生成后代选择器

less - 变量 概念:容器,存储数据 作用:存储数据,方便使用和修改 语法: >定义变量:@变量名:数据; >使用变量:CSS属性:@变量名;

less﹣导出 写法:在less 文件的第一行添加 // out:

存储URL 提示:文件夹名称后面添加/

// out:./index.css // out:./css/

less﹣禁止导出

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

1.1

适配方案 ● 相对单位 ● 相对视口的尺寸计算结果

vw: viewport width 1vw=1/100视口宽度

vh:viewport height 1vh=1/100视口高度

vh单位问题 ● 思考:开发中,能不能vw和vh混用呢? 不能 vh是1/100视口高度,全面屏视口高度尺寸大,如果混用可能会导致盒子变形

  • 35
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值