CSS学习17--CSS3 过渡、2D变形、3D变形、动画

devtools/2024/12/22 20:02:06/

CSS3 过渡、2D变形、3D变形、动画

  • 一、过渡
  • 二、2D变形 transform
    • 1.移动 translate
    • 2.缩放 scale
    • 3. 旋转 rotate
    • 4. 倾斜 skew
  • 三、3D变形
    • 1. rotateX()rotateY() rotateZ()
    • 2. 体会透视 perspective
    • 3. translateX() translateY() translateZ()
    • 4. 开门大吉例子
    • 5. backface-visibility
  • 四、动画
    • 例子:无缝滚动

一、过渡

为元素从一种样式变为另一种样式时添加效果。

transition: 过渡属性 花费时间 运动曲线 何时开始;
前两个值不可省略,运动曲线默认ease,合适开始默认0s立即开始可以省略。

注意:transition需要写在div里而不是hover里;多个属性设置不同时,用逗号隔开;需要描述所有属性变化时,过渡属性值为all。

<html><head><style>css">div {width: 200px;height: 200px;background-color: pink;transition: width 0.2s ease 0s,height 0.3s ease-in 1s;/* transition: all 0.6s ease 0s; */}div:hover {width: 300px;height: 300px;}</style></head><body><div></div>
</html>

二、2D变形 transform

做元素的变形、位移、缩放,可以和transition结合使用。

1.移动 translate

用translate平移

transform: translate(x,y)

<html><head><style>css">div {width: 200px;height: 200px;background-color: pink;transition: all 0.5s;}div:active { /*鼠标点击没有松开鼠标,相当于点击*/transform: translate(100px,200px);transform: translate(50%,100%);}</style></head><body><div></div>
</html>

注意:

  • 只移动一个坐标可以把另一个坐标设为0;

  • 也可以写成:translateX(只跟一个参数);translateY(只跟一个参数)。

  • translate移动的距离如果是%,则以自己的宽度为准,而不是父亲为准。

    <html><head><style>css">div {width: 200px;height: 200px;background-color: pink;position: absolute; /*盒子居中对齐*/left: 50%; /*以父级宽度为准*/margin-left: -100px; /*需要计算*/top: 50%;transform: translate(-50%,-50%);}</style></head><body><div></div>
    </html>
    

2.缩放 scale

transform: scale(x,y)
x和y的值小于1为缩小倍数,大于1为放大倍数。

<html><head><style>css">div {width: 200px;height: 200px;background-color: pink;}div:hover {transform: scale(1.2,1.5);}</style></head><body><div></div>
</html>

注意:

  • 如果只写一个参数,宽高都缩放!

  • 谁做动画,谁加过渡!

    <html><head><style>css">div {width: 100px;height: 50px;background-color: pink;overflow: hidden;}div img {transition: all 0.3s;}div:hover img {transform: scale(1.2,1.5);}</style></head><body><div><img src="images/search.png" alt=""></div>
    </html>
    

3. 旋转 rotate

transform: rotate(*deg)
正值是顺时针,负值是逆时针;比如90deg是顺时针旋转90度

<html><head><style>css">div {width: 100px;height: 50px;background-color: pink;overflow: hidden;}div img {transition: all 0.3s;}div:hover img {transform: rotate(90deg);}</style></head><body><div><img src="images/search.png" alt=""></div>
</html>

旋转中心点的设置:

	<html><head><style>css">div img {padding: 200px;transition: all 0.3s;transform-origin: bottom top;}div:hover img {transform: rotate(90deg);}</style></head><body><div><img src="images/search.png" alt=""></div></html>

4. 倾斜 skew

transform: skew(x,y);

<html><head><style>css">div {font-size: 50px;font-weight: 700;transition: all 0.2s;}div:hover {transform: skew(20deg,0);}</style></head><body><div>123</div>
</html>

三、3D变形

3D多了z轴,遵循左手法则。
在这里插入图片描述
在这里插入图片描述

1. rotateX()rotateY() rotateZ()

<html><head><style>css">div img {transition: all 0.2s;}div:hover img {transform: rotateX(180deg);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

2. 体会透视 perspective

  • 透视原理:近大远小。
  • 浏览器透视:把近大远小的所有图像,透视在屏幕上。
  • perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置

注:并非任何情况下需要透视效果,根据开发需要进行设置。
perspective一般作为一个属性,设置给父元素,作用于所有3D转换的子元素

<html><head><style>css">div {perspective: 1000px;}div img {transition: all 0.2s;}div:hover img {transform: rotateX(180deg);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

3. translateX() translateY() translateZ()

Z轴是物体到屏幕的距离,透视是一种展示形式。

<html><head><style>css">div {margin: 200px;perspective: 1000px;}div img {transition: all 0.2s;}div:hover img {transform: translateZ(100px);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

transform: translate3d(x,y,z);
z轴只能是px单位

<html><head><style>css">div {margin: 200px;perspective: 1000px;}div img {transition: all 0.2s;}div:hover img {transform: translate3d(100px,100px,100px);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

4. 开门大吉例子

<html><head><style>css">div {width: 200px;height: 180px;margin: 200px;background: url(images/course.png);perspective: 1000px;position: relative;}span {display: block;width: 100px;height: 180px;background-color: pink;border: 1px solid black;transition: all 0.2s;}span.door-l {position: absolute;top: 0;left: 0;transform-origin: left;}span.door-r {position: absolute;top: 0;right: 0;transform-origin: right;}div:hover .door-l   {transform: rotateY(-130deg);}div:hover .door-r  {transform: rotateY(130deg);}</style></head><body><div><span class="door-l"></span><span class="door-r"></span></div>
</html>

在这里插入图片描述

5. backface-visibility

用于设置图片不正向对着屏幕时是否可见。
可以用来写翻转图片,先translateY(180deg),当backface-visibility:hidden可以实现翻转时显示背面图片。

四、动画

animation: 动画名称 动画时间 运动曲线 何时开始 播放次数 是否反方向;

动画名称是自定义的

<html><head><style>css">div {width: 200px;height: 180px;margin: 200px;background: url(images/course.png);/*animation: name duration timing-function delay iteration-count direction fill-mode;*/animation: go 2s ease 0s 2 reverse;}@keyframes go { /*定义动画*/from{transform: translate(0);}to{transform: translate(600px);}}</style></head><body><div></div>
</html>

例子:无缝滚动

<html><head><style>css">* {margin: 0;padding: 0;}ul {list-style: none;}nav {width: 1200px;height: 20px;}nav li {float: left;}nav ul {width: 200%; /*两倍!!!*/animation: moving 2s linear infinite;}div {width: 200px;height: 20px;}@keyframes moving { /*定义动画*/from{transform: translate(0);}to{transform: translate(-1000px);}}nav:hover ul { /*鼠标经过nav,里面的ul不做动画*/animation-play-state: paused ;}</style></head><body><nav><ul><li><div style="css language-css">background-color: red;"></div></li><li><div style="css language-css">background-color: orange;"></div></li><li><div style="css language-css">background-color: yellow;"></div></li><li><div style="css language-css">background-color: green;"></div></li><li><div style="css language-css">background-color: blue;"></div></li><li><div style="css language-css">background-color: purple;"></div></li><li><div style="css language-css">background-color: red;"></div></li><li><div style="css language-css">background-color: orange;"></div></li><li><div style="css language-css">background-color: yellow;"></div></li><li><div style="css language-css">background-color: green;"></div></li><li><div style="css language-css">background-color: blue;"></div></li><li><div style="css language-css">background-color: purple;"></div></li></ul></nav>
</html>

http://www.ppmy.cn/devtools/111857.html

相关文章

MongoDB设置系统服务启动教程

1、编辑mongodb.service文件 将MongoDB设置成系统服务&#xff0c;就可以通过systemctl进行启动停止重启&#xff0c;在目录/etc/systemd/system下编写mongodb.service文件&#xff1a; [Unit] DescriptionMongoDB Database Server Documentationhttps://www.mongodb.com/docs…

HP电脑如何启动硬件检测

许多人都在使用HP电脑&#xff0c;但是当出现问题时候&#xff0c;不知道该如何测试&#xff0c;本文来分享一下&#xff0c;如何在电脑能开机但是有问题时进行检测。 使用F2键进行组件测试 步骤&#xff1a;开机后不停敲击键盘上【F2】的按键&#xff0c;进入BIOS设置界面&am…

3D GS 测试自己的数据

环境配置 win11 vs2019cuda11.8driver522.06python3.10pytorch 2.4.0colmap3.8&#xff08;可选&#xff0c;用于将图像生成点云&#xff09; 安装 1 minicodagit 略 2 vs2019 在装cuda前安装&#xff0c; 选择c桌面开发即可&#xff0c; 环境变量path中配置C:\Program…

go语言开发windows抓包工具

使用syscall调用window api, go有封装, 暂时不需要自己调用dll 使用函数 syscall.WSAStartup syscall.Socket syscall.SockaddrInet4 syscall.WSAIoctl syscall.WSARecv 废话不多说, 上代码简洁明了使用方法 package mainimport ("fmt""net""s…

Android 车联网——汽车模块介绍(附1)

汽车模块指的是车辆中独立的电子控制单元(ECUs),如发动机控制单元(ECU)、车身控制模块(BCM)等,它们负责特定的功能或系统。 一、控制类模块 这些模块主要用于控制车辆的不同系统,确保车辆各部分的正常运行。 1、ECM ECM(Electronic Control Module,电子控制模块)…

什么是交换机级联?

在现代计算机网络中&#xff0c;交换机级联是一种广泛应用的技术&#xff0c;有助于提升网络的扩展性和灵活性。本文将深入探讨交换机级联相关知识&#xff0c;详细介绍其基本概念和连接配置方法&#xff0c;并对常见技术问题进行解答。 交换机级联概述 交换机级联是指通过将…

openstack之glance介绍

概念 glance为nova提供镜像服务&#xff0c;用于启动实例&#xff0c;预建镜像已安装cloud-init&#xff0c;可以访问openstack基金会获取操作系统镜像&#xff1a;官方镜像 格式 raw&#xff1a;无格式的镜像&#xff1b; vhd&#xff1a;hyper-v使用的格式&#xff1b; vm…

栈和队列的算法题目(C语言)

1. 括号匹配问题 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 利用栈后入先出的特性解题 1.判断字符串是否为空 为空返回 2.创建栈&#xff0c;遍历字符串 第一个字符是左括号的情况&#xff1a;入栈->继续遍历下一个字符 第一个字符是右括号的情况&#xf…