【CSS3】 平面转换 空间转换 动画

news/2024/5/17 13:34:45/文章来源:https://blog.csdn.net/btufdycxyffd/article/details/127147600

目录

    • 平面转换
      • 平移
      • 缩放
      • 倾斜
      • 旋转
      • transform复合属性
    • 空间转换
      • 空间位移
      • 空间旋转
      • 呈现立体图形
      • 空间缩放
    • 动画
      • 动画属性
      • steps逐帧动画
      • 多组动画

平面转换

CSS3中动画效果包括3个部分:过渡(transition)、变形(transform)、动画(animation)。前面学习的CSS过渡(transition)呈现的是一个“过程”,而CSS变形(transform)呈现的仅仅是一个“结果”。

使用transform属性来实现元素的变形效果,变形分为平面转换空间转换。
语法:

transform:属性;

平面转换具有四个属性

属性功能
translate()平移
scale()缩放
skew()倾斜
rotate()旋转

平移

语法:

transform: translateX(x);         /*沿X轴方向平移*/
transform: translateY(y);         /*沿Y轴方向平移*/
transform: translate(x, y);        /*沿X轴和Y轴同时平移*/

x和y取值:

  • 像素单位数值
  • 百分比(参照物为盒子自身尺寸)

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

利用百分比绝对定位居中:

   <style>div{position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);       }</style>

案例:双开门

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}.box {width: 366px;height: 200px;margin: 0 auto;background-color: yellow;/* 使用transform后,会超出范围,使用overflow隐藏 */overflow: hidden;}/* 两个可以连写在一起,并集 */.box::before{/* 使用平移可以忽略左右浮动影响 */float: left;content: '';width: 50%;height: 600px;background-color: blue;transition: all 1s;}.box::after {/* 使用平移可以忽略左右浮动影响 */float: right;content: '';width: 50%;height: 600px;background-color: red;transition: all 1s;}.box::after {background-position: right 0;}.box:hover::before {/* 区别: width: 0是直接消失,而transform是平移,这里没放图片看不出来*/width: 0;}.box:hover::after {transform: translateX(100%);}</style></head><body><div class="box"></div></body>
</html>

在这里插入图片描述

缩放

语法:

transform: scaleX(x);         /*沿X轴方向缩放*/
transform: scaleY(y);         /*沿Y轴方向缩放*/
transform: scale(x, y);        /*沿X轴和Y轴同时缩放*/

x和y表示的值为缩放的倍数, scale值大于1表示放大, scale值小于1表示缩小 。如transform:scaleX(1.5);表示元素在x轴方向放大为原来的1.5倍。transform:scaleX(0.5);表示元素会在x轴方向缩小为原来的0.5倍。

倾斜

语法:

transform: skewX(x);        /*沿X轴方向倾斜*/
transform: skewY(y);        /*沿Y轴方向倾斜*/
transform: skew(x, y);       /*沿X轴和Y轴同时倾斜*/

x和y表示的值倾斜的度数。

参数x表示元素在x轴方向的倾斜度数,单位为deg(即degree的缩写)。如果度数为正,则表示元素沿x轴方向逆时针倾斜;如果度数为负,则表示元素沿x轴方向顺时针倾斜。

参数y表示元素在y轴方向的倾斜度数,单位为deg。如果度数为正,则表示元素沿y轴方向顺时针倾斜;如果度数为负,则表示元素沿y轴方向逆时针倾斜。

旋转

语法:

transform: rotate(angle);

参数angle表示元素相对于中心原点旋转的度数,单位为deg。如果度数为正,则表示顺时针旋转;如果度数为负,则表示逆时针旋转。

transform-origin属性改变转换原点

默认情况下,CSS3的各种平移、缩放等操作都是以元素的中心原点进行变形的,我们可以使用transform-origin属性来改变元素的中心原点。

语法:

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

取值:

关键字百分比说明
top left0 0左上
top center50% 0靠上居中
top right100% 0右上
left center0 50%靠左居中
center center50% 50%正中
right center100% 50%靠右居中
bottom left0 100%左下
bottom center50% 100%靠下居中
bottom right100% 100%右下

transform复合属性

变形中多种效果可以复合使用,如旋转会改变网页元素的坐标轴向,先写旋转,则后面的转换效果的轴向以旋转后的轴向为准,会影响转换结果,建议先写平移再写旋转。

案例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>多重转换</title><style>.box {width: 800px;height: 200px;border: 1px solid #000;}.box div {width: 200px;height: 200px;background-color: pink;transition: all 3s;}.box:hover div {/* 边走边转 */transform: translate(600px) rotate(360deg);/* 旋转可以改变坐标轴向 ,先旋转改变了坐标轴向,再移动距离*//* transform: rotate(360deg) translate(600px); *//* 层叠性,相同属性 *//* transform: translate(600px); *//* transform: rotate(360deg);  */}</style></head><body><div class="box"><div></div></div></body></html>

在这里插入图片描述

空间转换

空间位移

网页里面的空间坐标系:

语法:

transform: translate3d(x, y, z);
transform: translateX(值);
transform: translateY(值);
transform: translateZ(值);

x,y,z的取值像素单位数值和百分比都可以。

我们设置了空间属性,却看不到有空间的变化,这就需要perspective(透视)属性来实现透视效果。

默认情况下,无法观察到Z轴位移效果,因为Z轴是视线方向,移动效果应该是距离的远或近, 电脑屏幕是平面,默认无法观察远近效果,perspective(透视)属性可以实现近大远小、近清楚远模糊的视觉效果。

注意perspective属性是添加给父级的
语法:

perspective: 属性值;

取值:像素单位数值, 数值一般在800 – 1200
说明:属性值表示的含义是透视距离,也称为视距,就是人的眼睛到屏幕的距离。所以取值不能太大也不能太小。

空间旋转

语法:

transform: rotateZ(值);
transform: rotateX(值);
transform: rotateY(值)

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

呈现立体图形

上面我们使用了perspective透视属性让页面有了近大远小、近实远虚的视觉效果。但是并不能能呈现立体图形,我们需要使用transform-style: preserve-3d才能使子元素处于真正的3d空间。
步骤

  1. 盒子父元素添加transform-style: preserve-3d;
  2. 按需求设置子盒子的位置(位移或旋转)

3D导航案例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>3D导航</title><style>ul {margin: 0;padding: 0;list-style: none;}.navs {width: 300px;height: 40px;margin: 50px auto;}.navs li {position: relative;float: left;width: 100px;height: 40px;line-height: 40px;transition: all .5s;transform-style: preserve-3d;}.navs li a {position: absolute;left: 0;top: 0;display: block;width: 100%;height: 100%;text-align: center;text-decoration: none;color: #fff;}.navs li a:first-child {background-color: green;transform: translateZ(20px);}.navs li a:last-child {background-color: orange;transform: translateY(-20px) rotateX(90deg);}.navs li:hover {transform: rotateX(-90deg);}</style></head><body><div class="navs"><ul><li><a href="#">首页</a><a href="#">Index</a></li><li><a href="#">登录</a><a href="#">Login</a></li><li><a href="#">注册</a><a href="#">Register</a></li></ul></div></body></html>

在这里插入图片描述

空间缩放

语法:

 语法
transform: scaleX(倍数);
transform: scaleY(倍数);
transform: scaleZ(倍数);
transform: scale3d(x, y, z);

动画

动画属性

语法:

animation: 动画名称 持续时间 动画方式 延迟时间 动画次数 动画方向 执行完毕时状态;

animation是复合属性,animation的子属性为:

属性说明
animation-name动画定义的名称
animation-duration动画的持续时间
animation-timing-function动画的速率方式
animation-delay动画的延迟时间
animation-iteration-count动画的播放次数,infinite为无限循环
animation-direction动画的播放方向,正向还是反向
animation-fill-more执行完毕的状态, forwards:最后一帧状态 backwards:第一帧状态
animation-play-state暂停动画, paused为暂停,通常配合:hover使用

注意:

  • 动画名称和动画时长必须赋值
  • 取值不分先后顺序
  • 如果有2个时间值,第一个时间表示动画时长,第二个时间表示延迟时间

实现动画步骤:

  1. 定义动画
  2. 调用动画

定义动画:

@keyframes 动画名
{0%{}……100%{}
}

如果只有两种状态,也可以这样表示:

@keyframes mycolor
{from{}to{}
}

steps逐帧动画

逐帧动画即帧动画,将动画过程等分成N份,一般配合精灵图实现动画效果。
语法:

 animation-timing-function: steps(N);

精灵动画制作步骤:

  • 设置盒子尺寸是一张小图的尺寸,背景图为当前精灵图
  • 改变背景图的位置(移动的距离就是精灵图的宽度)
  • 添加速度曲线steps(N),N与精灵图上小图个数相同
  • 添加无限重复效果

案例走马灯:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>* {padding: 0;margin: 0;}li {list-style: none;}.box {width: 600px;height: 112px;border: 5px solid #000;margin: 100px auto;overflow: hidden;}.box div{float: left;width: 200px;height: 112px;background-color: pink;text-align: center;line-height: 112px;}.box ul {width: 2000px;animation: move 5s infinite linear;}.box li {float: left;}/* 定义动画:位移, ul 左侧使用  x -1400  */@keyframes move {to {/* -1400px只移动7张图片,结束瞬间:前三张在框内,正是下一次动画的开始瞬间,使所以不会重复 */transform: translateX(-1400px);}}/* 用户鼠标移入box,动画暂停 */.box:hover ul {animation-play-state: paused;}</style></head><body><div class="box"><ul><div class="one">1</div><div class="two">2</div><div class="three">3</div><div class="four">4</div><div class="five">5</div><div class="six">6</div><div class="seven">7</div><!-- 第567移动的时候,显示区域不能留白 --><div class="one">1</div><div class="two">2</div><div class="three">3</div></ul></div></body>
</html>

在这里插入图片描述

多组动画

动画可以设置多个
语法:

animation:
动画1,
动画2,
动画n
;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_206601.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 SAP UI5 V2 ODataModel 模型 API 实现 deepCreate 的场景以及局限性

如果开发人员期望在持久化时请求已创建条目的导航属性(navigation property)&#xff0c;请使用可选的 expand 参数在与实体创建的 POST 请求相同的批处理请求中有效地执行此操作。 可选的 inactive 参数确定是否创建非活动 transient 上下文。 这样的上下文只会在属性更新时成…

Jaca集合(四)Vector集合底层源码分析

Vector的基本介绍&#xff1a; &#xff08;1&#xff09;Vector类的定义说明&#xff1a;我们进入源码界面进行查看&#xff1a; public class Vector<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable &#…

Qt之事件处理机制

目录 一、事件简介 二、事件的处理 1.重写notify处理函数 2.事件过滤器 3.重写event处理函数 4.重写特定事件处理函数 三、事件的发送 一、事件简介 Qt 是一个基于 C 的框架&#xff0c;主要用来开发带窗口的应用程序。使用的基于窗口的应用程序都是基于事件&#xff0c…

网课查题公众号题库接口

网课查题公众号题库接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#xf…

05-Elasticsearch-DSL高级检索[分页, 分词, 权重, 多条件, 过滤, 排序, 关键词高亮, 深度分页, 滚动搜索, 批量Mget]

DSL搜索 词库准备骚年 帅气 新闻网 新闻 闻网 新 闻 网索引准备PUT /shop {"settings": {"number_of_shards": 5,"number_of_replicas": 0} } POST /shop/_mapping {"properties": {"id": {"type": "long&qu…

JavaSE_第8章 异常(尚)

JavaSE_【异常】 主要内容 异常的体系结构常见异常throw关键字&#xff08;手动创建并抛出异常&#xff09;异常处理机制一&#xff1a;try&#xff08;掌握&#xff09;异常处理机制二&#xff1a;throws&#xff08;掌握&#xff09;自定义异常 学习目标 能够辨别程序中异…

03-Elasticsearch-基本语法

查询[ES] 查询ES信息GET /查询集群健康状态GET /_cluster/health增删改索引 创建索引并指定主分片和副本数PUT /my_doc {"settings": {"number_of_shards": 1,"number_of_replicas": 0} }创建索引并指定映射PUT /index_mappings {"mappings…

Redis详解

Redis介绍1.Redis 是一个基于内存的高性能 key-value 数据库。是完全开源免费的,用C语言编写的,遵守BSD协议2.Redis 特点:1)Redis 是基于内存操作的,吞吐量非常高,可以在 1s内完成十万次读写操作      2)Redis 的读写模块是单线程,每个操作都具原子性      …

图的遍历 —— 广度优先遍历

与树的遍历类似&#xff0c;图的遍历指从图的某一节点出发&#xff0c;按照某种搜索方式对图中的所有节点都仅访问一次。图的遍历可以解决很多搜索问题&#xff0c;实际应用非常广泛。图的遍历根据搜索方式的不同&#xff0c;分为广度优先遍历和深度优先遍历。 图的遍历 —— 广…

PATHWAYS: ASYNCHRONOUS DISTRIBUTED DATAFLOW FOR ML论文阅读笔记

PATHWAYS: ASYNCHRONOUS DISTRIBUTED DATAFLOW FOR ML 针对机器学习的异步分布式数据流阅读笔记 B站李沐视频讲解&#xff1a;Pathways-论文精读-李沐 摘要 ​ 本篇论文介绍了用于加速器的新的大规模的编排层orchestration layer的设计——Pathways。论文新型异步分布式数据…

Redis 缓存穿透, 缓存击穿, 缓存雪崩的解决方案与布隆过滤器

缓存穿透解决方案 设置空值布隆过滤器优点可以将存在的缓存, 位置设置为1, 然后当不存在的参数过来的时候, 会匹配到0上,这样就会直接返回不存在缺点存在错误判断, hash冲突 删除缓存时无法删除指定的1的位置, 应为存在多数据,同一hash, 所以无法删除 增加开发成本, 维护成本提…

线段树的基本操作

一 基本概念 线段树是一种基于分治思想的二叉树&#xff0c;它的每个节点对应一个[L,R]区间,叶子节点的区间 LR。每个非叶子节点[L,R]的左孩子区间为&#xff3b;L,(LR)/2]&#xff0c;右孩子区间为&#xff3b;(LR)/2,R]。[1,10] 区间的线段树如下。 二 线段树的存储方式 对…

初识ansible和ad-hoc

基本环境要求&#xff1a; 管理节点 被管理节点 openssh openssh python > 2.6 python >2.4 ansible 安装ansible 用最简单的方式进行安装 环境 CentOS Linux release 7.3.1611 内核版本&#xff1a; 3.10.0-514.el7.x86_64 centos7 需要联网 yum install epel-relea…

【ACM-ICPC】NEERC-2017(Clone Contest)

【ACM-ICPC】NEERC-2017(Clone Contest)A. Auxiliary Project (思维贪心)K. Kotlin Island (找规律构造)B. Boolean Satisfiability (逻辑或的性质)C. Consonant Fencity (下标映射二进制枚举构造)I. Intelligence in Perpendicularia(学霸题)简单记录一下比赛中AC的题目和思路…

Android Camera性能分析 - 第21讲 录像Buffer Path详解

本讲是Android Camera性能分析专题的第21讲 ​&#xff0c;我们介绍录像Buffer Path详解&#xff0c;包括如下内容&#xff1a; Android Codec2 简介Video Codec MediaRecorder.getSurface 录像Buffer PathVideo Codec2 MediaRecorder.getSurface 录像Buffer PathVideo Code…

【吴恩达深度学习】——NLP和Word Embedding

NLP和词嵌入思维导图词汇表征one-hot表征特征表征&#xff1a;词嵌入使用word Embeddings命名实体识别的例子&#xff1a;词嵌入的迁移学习&#xff1a;词嵌入和人脸编码词嵌入的特性类比推理的特性相似度函数&#xff1a;嵌入矩阵学习词嵌入其它的上下文和目标词对Word2VecSki…

C++ -------- 类型转换

目录 1.C语言中的类型转换 2.为什么C需要四种类型转换 3.C强制类型转换 (1)static_cast (2)reinterpret_cast (3)const_cast (4)dynamic_cast 4.explicit 5.RTTI 6.常见测试题 1.C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0…

MATLAB APP Desinger 使用方法介绍(下)---开发技巧常用示例补充整理以及app文件的发布和部署方法

本系列文章主要介绍使用MATLAB APP Desinge进行app或者说GUI界面开发的方法介绍&#xff0c;包括&#xff08;上&#xff09;和&#xff08;下&#xff09; 两篇文章&#xff0c;上篇中主要介绍常用的GUI组件的使用方法&#xff0c;下篇是对上篇的补充&#xff0c;主要介绍开发…

计算机网络原理(三):运输层

运输层服务 多路复用与多路分解 无连接运输:UDP 可靠数据传输原理 面向连接的运输:TCP 拥塞控制原理及TCP拥塞控制 一、运输层服务 1.1运输层服务 运 输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communica-tion)功能,从应用层的角度看,通过逻辑通信,运…

Docker镜像加速器的配置

目录 一、登录阿里云 1.1、点击右上角的控制台 1.2、再点击左上角​编辑 1.3、点击容器镜像服务 1.4、点击镜像工具&#xff0c;选择镜像加速器 1.5、加速器地址 1.6、选择自己使用的linux 二、配置镜像加速器 2.1、创建/etc/docker目录 2.2、配置镜像加速器 2.3、激…