【CSS】transition、transform以及animation

1.CSS transition

介绍

通常当 CSS 的属性值更改后,浏览器会立即更新相应的样式。

在 CSS3 中加入了一项过渡功能,通过该功能,我们可以将元素从一种样式在指定时间内平滑的过渡到另一种样式,类似于简单的动画,但无需借助 flash 或 JavaScript。

CSS3 中,提供了4个相关属性来实现过渡效果:

  1. transition-property — 用于指定应用 transition 效果的 CSS 属性名
  2. transition-duration — 指定 transition 效果需要多久完成
  3. transition-timing-function — 指定 transition 效果的动画曲线
  4. transition-delay — 指定设置过渡效果延迟的时间

当然这些属性可以通过 transition 统一设置:

.transition {
    transition: property duration timing-function delay;
}

其中,要成功实现过渡效果,必须定义 transition-propertytransition-duration 属性。

下面对四个属性进行详细说明.

1.transition-property

transition-property 属性用来设置元素中参与过渡的属性名称,语法格式如下:

transition-property: none | all | property;

各参数如下:

  • none — 没有属性参与过渡效果
  • all — 表示该元素上的所有属性都参与过渡效果
  • property — CSS 属性名称列表,多个属性名称之间使用逗号进行分隔。
2.transition-duration

transition-duration 属性用来设置过渡需要花费的时间(单位为秒或者毫秒),语法格式如下:

transition-duration: time;

如果有多个参与过渡的属性,也可以依次transition-property中声明的顺序,为这些属性设置过渡需要的时间,多个属性之间使用逗号进行分隔,例如transition-duration: 1s, 2s, 3s;

当然,也可以使用一个时间来为所有参与过渡的属性设置过渡所需的时间。

现在,我们了解了成功实现过渡效果的两个必要属性,下面可以尝试实现一个过渡效果:

在业务场景中,transition 往往会与 :hover 一同使用。

如下

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            border: 3px solid black;
            margin: 10px 0px 0px 10px;
            transition-property: width, background;
            transition-duration: .25s, 1s;
        }
        div:hover {
            width: 200px;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

效果如下:

在这里插入图片描述

3.transition-timing-function

transition-timing-function 属性用来设置过渡动画的类型,属性的可选值如下:

在这里插入图片描述

默认值为linear

示例如下:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            border: 3px solid black;
            margin: 10px 0px 0px 10px;
            transition-property: width, background;
            transition-duration: 5s, 1s;
        }
        div:hover {
            width: 1500px;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

现在为其加上transition-timing-function 属性:

div {
    width: 100px;
    height: 100px;
    border: 3px solid black;
    margin: 10px 0px 0px 10px;
    transition-property: width, background;
    transition-duration: 5s, 1s;
    transition-timing-function: linear;
}

效果如下:

在这里插入图片描述

下面是各属性值的动画运动曲线:

在这里插入图片描述

4.transition-delay

transition-delay 属性用来设置过渡效果何时开始,属性的语法格式如下:

transition-delay: time;
5.用 transition 同时设置过渡、设置多组属性的过渡

transition 属性是上面四个属性的简写形式,通过该属性可以同时设置上面的四个属性。

另外,通过 transition 属性也可以设置多组过渡效果,每组之间使用逗号进行分隔,示例代码如下:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            border: 3px solid black;
            margin: 10px 0px 0px 10px;
            transition: width .25s linear 1.9s, background 1s 2s, transform 2s;
        }
        div:hover {
            width: 200px;
            background-color: blue;
            transform: rotate(180deg);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

其中设置了三组 transition 效果,各组之间通过逗号分隔:

  • width .25s linear 1.9s
  • background 1s 2s
  • transform 2s

效果如下:

在这里插入图片描述

2.CSS transform - 2D变换

介绍

transform 是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、倾斜、缩放,甚至支持矩阵方式,配合过渡动画,可以取代大量之前只能靠 Flash 才可以实现的效果。

1.移动 — translate

translate属性值用于定义二维平移。

例如:translate(50px, 50px)效果如下

在这里插入图片描述

可以看到,translate的效果就是将元素在水平和垂直方向上分别移动一定的距离

当然我们也可以单独指定某一方向上的偏移,translate的相关语法如下:

translate(x,y) --- X轴和Y轴同时移动
translateX(x) --- 仅X轴移动
translateY(Y) --- 仅Y轴移动
2.缩放 — scale

scale属性值对元素进行二维缩放。

例如:transform:scale(0.5,1);效果如下

在这里插入图片描述

可以看到,在x轴方向上,元素被缩放为原来的 0.5 倍,即scale属性值可以对元素进行水平和垂直方向的缩放。

scale属性值的相关语法如下:

scale(X,Y) --- X轴和Y轴同时缩放
scaleX(x) --- X轴缩放
scaleY(y) --- Y轴缩放

scale()的取值默认的值为1,当值设置为0.01到0.99之间的任何值,作用使一个元素缩小;而任何大于或等于1.01的值,作用是让元素放大。

3.旋转 — rotate

rotate属性用于对元素进行旋转,正值表示顺时针旋转,负值表示逆时针旋转。

例如:transform:rotate(45deg);效果如下

在这里插入图片描述

deg 表示 degree,即旋转的度数。

另外,我们可以使用transform-origin属性调整元素转换的基点。

div{
    transform-origin: left top;
    transform: rotate(45deg); 
} 

效果如下,改变元素原点到左上角,然后进行顺时旋转45度

在这里插入图片描述

如果要粗略的通过元素的4个边角作为基点,可以使用上面的方式,但如果想要精确地确定基点的位置,可以用 px 指定其精确位置:

div{
    transform-origin: 50px 100px;
    transform: rotate(45deg); 
} 

效果如下:

在这里插入图片描述

即将x轴上50px、y轴上100px处作为旋转的基点。

可以看下面这张图:

在这里插入图片描述

4.倾斜 — skew

skew 属性值用于将元素沿 x 轴、y 轴倾斜。

例如:

div{
    transform: skew(20deg, 10deg);
} 

效果如下:

在这里插入图片描述

未指定第二个参数时,默认为0。另外,这两个参数值可以为负值!

5.matrix

3.CSS transform - 3D变换

CSS transform 还支持3D转换。要实现3D转换,首先需要了解 CSS 中的三维坐标系。

CSS 中的三维坐标系与左手3D坐标系有一定区别,CSS 中的三维坐标系相当于将左手3D坐标系绕其x轴旋转180度:

在这里插入图片描述

可以看到,坐标轴y轴负方向在上方,z轴的负方向在后方,所以可以这样记:

  • x 轴向左为负值,向右为正值
  • y 轴向上为负值,向下为正值
  • z 轴向内为负值,向外是正值

以 rotateX 为例:

.div1 {
    width: 100px;
    height: 100px;
    /* border: 3px solid black; */
    background-color: yellow;
    color: red;
    margin: 10px 0px 0px 10px;
    position: absolute;
    left: 50%;
    top: 50%;
    transition: all 0.5s ease 0s;
}
.div1:hover {
    transform: rotateX(180deg);
}

即绕坐标系的 X 轴旋转

在这里插入图片描述

其他属性可参考:

CSS 3D

4.CSS animation - 动画

参考:https://zhuanlan.zhihu.com/p/456713454

这篇文章里面对于CSS动画的介绍相当全面,其中还有不少有意思的实例

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

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

相关文章

Web前端—CSEO、Favicon、小兔鲜儿电商网站顶部设计

版本说明 当前版本号[20231108]。 版本修改说明20231108初版 目录 文章目录 版本说明目录电商平台网站顶部设计项目目录准备工作SEO 三大标签Favicon 图标布局网页版心快捷导航&#xff08;shortcut&#xff09;头部&#xff08;header&#xff09;logo导航搜索购物车 电商平…

vue使用Echarts5实现词云图

先上官网 词云图有些特殊&#xff0c;它属于Echarts 的扩展&#xff0c;需要额外安装Echarts-wordcloud包。 Echarts 官网 Echarts-wordcloud 词云图官网 先安装 npm install echarts npm install echarts-wordcloud再引入 echarts选一个引入就行&#xff1b;4或5版本都可以 …

【带头学C++】----- 三、指针章 ---- 3.11 补充重要指针知识(二,拓展基础知识)

1.指针与函数 1.1指针变量作为函数的参数 如果想在函数内部修改外部变量的值&#xff0c;可以将外部变量的地址传递给函数。 在C/C中&#xff0c;函数的参数传递方式有值传递&#xff08;传递变量的副本&#xff09;和引用传递&#xff08;传递变量的地址&#xff09;。如果希…

2023 ChinaJoy后,Flat Ads成为游戏、社交出海的新选择

今年ChinaJoy 展会&#xff0c;共吸引了来自世界各地的 500 多家企业参展&#xff0c;预计吸引超过33万人次参观。ChinaJoy年年有&#xff0c;那今年对于行业来说有什么新变化呢&#xff1f; 01 出海热潮不减&#xff0c;新增客户明显提升 据不完全统计&#xff0c;展会期间前…

腾讯待办是不是停了?怎么用其它提醒软件查看导出的ics文件

腾讯待办是腾讯企业旗下的业务产品&#xff0c;其主要以微信小程序的形式使用&#xff0c;定位于待办事项和日程管理工具&#xff0c;支持罗列日程待办清单、设定定时提醒&#xff0c;帮助大家规划日常事务和进行时间管理&#xff0c;成功创建待办事项后可在对应的公众号和绑定…

python自动化测试(4)-使用第三方python库技术实现

1 概述 关于测试的方法论&#xff0c;都是建立在之前的文章里面提到的观点&#xff1a; 功能测试不建议做自动化接口测试性价比最高接口测试可以做自动化做好接口自动化&#xff0c;一定要有透过界面看到数据本质的能力 后面所谈到的 测试自动化 也将围绕着 接口自动化 来…

〔001〕虚幻 UE5 安装教程

✨ 目录 ▷ 下载启动程序▷ 注册个人账户▷ 选择引擎版本▷ 选择安装选项▷ 虚幻商城的使用▷ 每月免费插件▷ 安装插件▷ 下载启动程序 下载地址:https://www.unrealengine.com/zh-CN/download点击上面地址,下载 UE5 启动程序并安装▷ 注册个人账户 打开商城启动程序,登录个…

浅谈数据中心机房末端配电技术与产品监控选型-安科瑞黄安南

摘要 数据中心机房末端配电的可靠性、稳定性和可维护性直接关系到IT设备的安全供电。数据中心的末端配电技术主要有两种&#xff0c;一种采用列头柜加电缆配电&#xff0c;另一种是智能小母线配电。分别对两种配电技术进行了介绍和探讨&#xff0c;最后对两种配电方式进行了对…

Flink的API分层、架构与组件原理、并行度、任务执行计划

Flink的API分层 Apache Flink的API分为四个层次&#xff0c;每个层次都提供不同的抽象和功能&#xff0c;以满足不同场景下的数据处理需求。下面是这四个层次的具体介绍&#xff1a; CEP API&#xff1a;Flink API 最底层的抽象为有状态实时流处理。其抽象实现是Process Functi…

FreeRTOS学习笔记——SysTick中断

FreeRTOS学习笔记——SysTick中断_freertos tick中断-CSDN博客 FreeRTOS 之六 任务调度原理解析&#xff08;Systick、PendSV、SVC&#xff09;_freertos m0-CSDN博客 FreeRTOS中关于时间的管理分为两部分&#xff1a;一部分是任务的延时管理;前面叙述过一些&#xff0c;还有…

常见面试题-MySQL专栏(三)MVCC、BufferPool

typora-copy-images-to: imgs 了解 MVCC 吗&#xff1f; 答&#xff1a; MVCC&#xff08;Multi-Version Concurrency Control&#xff09; 是用来保证 MySQL 的事务隔离性的&#xff0c;对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性&#xff0c;避免了频…

React中组件之间如何通信?

一、是什么 我们将组件间通信可以拆分为两个词&#xff1a; 组件通信 回顾Vue系列的文章&#xff0c;组件是vue中最强大的功能之一&#xff0c;同样组件化是React的核心思想 相比vue&#xff0c;React的组件更加灵活和多样&#xff0c;按照不同的方式可以分成很多类型的组件…

OpenHarmony,奏响中国基础软件的“光辉岁月”

梦想需要多久的时间&#xff0c;多少血和泪&#xff0c;才能慢慢实现&#xff1f; 天地间任我展翅高飞&#xff0c;谁说那是天真的预言&#xff1f; 《光辉岁月》歌词中的这两个问题&#xff0c;恰好可以送给今天的中国基础软件事业。 曾几何时&#xff0c;我们认为中国基础软件…

AI智能雷达名片平台版小程序源码系统 带完整的搭建教程

大家好啊&#xff0c;今天源码小编来给大家分享一款AI智能雷达名片平台版小程序源码系统。人工智能技术的不断发展和普及&#xff0c;越来越多的企业开始应用AI技术来提高业务效率和提升用户体验。AI智能雷达名片平台版小程序源码系统就是利用人工智能技术&#xff0c;帮助企业…

深入OpenCV Android应用开发

前言 OpenCV是Open Source Computer Vision library(开源的计算机视觉库)的缩写。它是使用最广泛的计算机视觉库。Opencv是计算机视觉领域常用的操作函数的集合&#xff0c;其自身由C/C编写而成&#xff0c;同时也提供了对Python、Java以及任意JVM语言的封装。考虑到大部分And…

华为防火墙ipsec vpn nat穿越2种场景配置案例

第一种方法&#xff0c;出口有nat设备&#xff08;这种方法最后电脑能上网&#xff0c;但不能和对端vpn通&#xff0c;配置检测没发现有问题&#xff0c;待以后再解决&#xff09;&#xff1a; 要实现分部电脑既能访问互联网又能和总部vpn连接 FW_A主要配置&#xff1a; acl …

为什么有的孩子玩着玩着就成了学霸?

毫不夸张地说&#xff0c;几乎所有的父母都想养出聪明宝宝&#xff0c;孩子上学之后能成为学霸就更省心了。 可“聪明”毕竟不能量化&#xff0c;不是说让孩子上几天课就能提升的。很多家长都在促进孩子大脑发育上使足了劲&#xff0c;可到头来却发现是在做“无用功”。 事实…

微服务-网关设计

文章目录 引言I 网关部署java启动jar包II 其他服务部署细节2.1 服务端api 版本号III 网关常规设置3.1 外部请求系统服务都需要通过网关访问3.2 第三方平台回调校验文件的配置IV 微服务日志跟踪4.1 打印线程ID4.2 封装线程池任务执行器4.3 将自身MDC中的数据复制给子线程4.4 微服…

设计模式之观察者(Observer)

事件处理模型 小朋友睡醒了就哭&#xff0c;饿 写程序模拟这个过程&#xff1a; v1:最简单的就是写程序一直观察着&#xff0c;什么时候哭了就进行处理 /*** 披着面向对象外衣的面向过程*/ public class Main1 {public static void main(String[] args) {boolean cry false…

Mabitys总结

一、ORM ORM(Object/Relation Mapping)&#xff0c;中文名称&#xff1a;对象/关系 映射。是一种解决数据库发展和面向对象编程语言发展不匹配问题而出现的技术。 使用JDBC技术时&#xff0c;手动实现ORM映射&#xff1a; 使用ORM时&#xff0c;自动关系映射&#xff1a; &am…