〖大前端 - 基础入门三大核心之CSS篇㉓〗- 过渡的缓动效果

news2024/11/25 7:02:32
  • 当前子专栏 基础入门三大核心篇 是免费开放阶段推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V!
  • 说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费开放购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。
  • 福利:除了通过订阅"白宝书系列专栏"加入社区获取所有付费专栏的内容之外,还可以通过加入星荐官共赢计划 加入私域社区。
  • 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,目前任某金融品类App负责人。
  • 荣誉:2022年度博客之星Top4博客专家认证、全栈领域优质创作者、新星计划导师“星荐官共赢计划” 发起人
  • 现象级专栏《白宝书系列》作者文章知识点浅显易懂且不失深度TFS-CLUB社区创立者旨在以“赋能 共赢”推动共建技术人成长共同体

  • 🏆 白宝书系列
    • 🏅 Python全栈白宝书
    • 🏅 产品思维训练白宝书
    • 🏅 全域运营实战白宝书
    • 🏅 大前端全栈架构白宝书


文章目录

  • ⭐️ 过渡
    • 🌟 过渡的缓动参数
    • 🌟 贝塞尔曲线
    • 🌟 过渡效果实战

上篇我们已经学会了过渡的基本使用,也知道了 “transition” 有四个参数,接下来我们来详细的学习一下 “transition” 的第三个参数 - “缓动参数” 。


⭐️ 过渡

该章节的知识点,主要是围绕 "过渡的缓动效果" 来学习的。除了 "过渡的缓动参数"、"贝塞尔曲线" 之外,还有一个实现 “缓动效果” 的小案例。


🌟 过渡的缓动参数

transition的第三个参数就是缓动参数,也是变化速度曲线。

我们之前只用到了linear值,linear就是匀速运动,实际上除了linear,还有其他四个常用的缓动参数:



上图中的曲线就是css支持的变化速度曲线。

下面直接看例子:



通过例子可以看到不同的变化速度曲线,元素移动的速度是不同的,但最终都是2s到达终点。

代码如下:

<!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>
        .box1 {
            width: 1000px;
            height: 600px;
            border: 1px solid #000;
        }
        .box1 p {
            width: 100px;
            height: 100px;
            background-color: orange;
            position: relative;
            left: 0;
            transition: left 2s linear 0s;
        }
        .box1 p:nth-child(2) {
            transition-timing-function: ease;
        }
        .box1 p:nth-child(3) {
            transition-timing-function: ease-in;
        }
        .box1 p:nth-child(4) {
            transition-timing-function: ease-out;
        }
        .box1 p:nth-child(5) {
            transition-timing-function: ease-in-out;
        }
        .box1:hover p {
            left: 800px;
        }
    </style>
</head>
<body>
    <div class="box1">
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
    </div>
</body>
</html>

🌟 贝塞尔曲线

我们也可以自定义动画缓动参数,就是通过自定义贝塞尔曲线。

这个网站可以生成贝塞尔曲线:https://cubic-bezier.com/

进入这个网站,拖动左侧的曲线,得到想要的贝塞尔曲线。



我们的缓动参数就可以设置成这个贝塞尔曲线:大家可以实战一下,观察这个贝塞尔曲线下 元素的移动效果。




🌟 过渡效果实战

案例一

我们在上网时经常会看到鼠标移动到一个图片时,底部浮现出现一行解释的文字,这个效果是怎么实现的呢?

答:其实就是字被图片压盖,当鼠标浮上去时,字再出现在图片的上方;所有的压盖效果都需要使用绝对定位来实现

下面我们就来做一个这样的案例:第一步,使用绝对定位,给盒子下方添加文字;再次注意:绝对定位的盒子,不写宽度无法自动撑满。



第二步:通过透明度属性 opacity ,实现将鼠标浮上去时,透明图由0变成1。



第三步:利用过渡,让透明度缓慢变化,实现文字慢慢浮现的效果。



我们在实现这个例子时,用到了 "浮动""子绝父相对""过渡" 的知识点。"过渡"其实就写了一条,相对来说来是比较简单的,大家还是要多多练习实例,这样才能更好的消化学到的知识。

案例二

我们在网页中也经常会看到一些有动画效果的小图标,比如下面这种鼠标浮上去背景旋转,同时图标也会放大,这种效果是怎么实现的呢?



用到的知识点有很多,例如浮动、子绝父相、伪元素、旋转变形、过渡等。接下来我们就来实现它。

第一步:实现网页布局:

先来分析一下,四个图标处在四个盒子中,后面有一个蓝色的圆的背景,鼠标放到盒子上时,只有背景旋转,图片放大。背景图片不是标签,是无法实现独立旋转的,如果旋转盒子,图标也会跟着旋转,我们可以给盒子添加一个伪元素,给伪元素添加背景图片,旋转也是由伪元素旋转。

准备四个背景图片:



代码如下:



第二步:利用变形 + 过渡实现动画效果。



大家一定要自己从头到尾敲两遍,只看是学不会的。

案例三

这个案例,我们利用3D旋转,实现一个非常有意思的“翻盖”的动画特效:



用到的知识点有 "子绝父相"、"3D旋转"、"transform-origin属性"(用来设置旋转的原点,有两个描述值,不用刻意记忆怎么设置,做的时候多尝试几次就知道了)

第一步:实现网页布局



第二步:实现鼠标触碰时,上面的图片进行3D旋转。第一个延左边的轴打开。



第三步:将下面两个也实现动画效果。可以利用层叠的性质设置。



案例四

接下来外面看一个酷炫的特效,正方体的旋转,看起来非常有立体感:

第一步:利用3D旋转和空间移动,绘制一个正方体:



代码如下:

<!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: 200px;
            height: 200px;
            border: 1px solid #000;
            margin: 100px auto;
            perspective: 300px;
            position: relative;
        }
        .box p {
            position: absolute;
            top: 0;
            left: 0;
            width: 200px;
            height: 200px;
        }
        .box p:nth-child(1) {
            background-color: #e6aaaa;
            /* 前面 */
            transform: translateZ(100px);
        }
        .box p:nth-child(2) {
            background-color: #aae6df;
            /* 顶面 */
            transform:  rotateX(90deg) translateZ(100px);
        }
        .box p:nth-child(3) {
            background-color: #f3a6de;
            /* 背面 */
            transform: rotateX(180deg) translateZ(100px);
        }
        .box p:nth-child(4) {
            background-color: #84afef;
            /* 下面 */
            transform: rotateX(-90deg) translateZ(100px);
        }
        .box p:nth-child(5) {
            background-color: #edef84;
            /* 左面 */
            transform: rotateY(90deg) translateZ(100px);
        }
        .box p:nth-child(6) {
            background-color: #a6ef84;
            /* 左面 */
            transform: rotateY(-90deg) translateZ(100px);
        }
    </style>
</head>
<body>
    <div class="box">
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
    </div>
</body>
</html>

第二步:使整个正方体进行旋转

需要放置一个新的“大舞台”section,将上面的正方体的box当作演员。而box既是p的舞台,又是section的演员。需要做一个特殊设置:



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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

〖大前端 - 基础入门三大核心之CSS篇㉑〗- 3D变形 与空间移动

当前子专栏 基础入门三大核心篇 也是免费开放阶段。推荐他人订阅&#xff0c;可获取扣除平台费用后的35%收益。说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费开放&#xff0c;购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。福利&#xff1a…

Java去除字符串中空格、制表符、回车换行的方法

\t 是制表符\r\n 回车换行 注意&#xff1a;\r,\n的顺序是不能够对换的&#xff0c;否则不能实现换行的效果&#xff0e;操作系统的不同&#xff0c;换行符操也不同&#xff1a;\r&#xff1a; return 到当前行的最左边。\n&#xff1a; newline 向下移动一行&#xff0c;并不移…

Reddit NFT爆火,全球最大社区论坛成为Web3大规模应用前哨站

这是白话区块链的第1804期原创 作者 | 火火出品&#xff5c;白话区块链&#xff08;ID&#xff1a;hellobtc&#xff09; 据Dune Analytics最新数据显示&#xff0c;Reddit于Polygon网络发行的NFT系列Reddit Collectible Avatar销售总量已突破9万笔&#xff0c;在12月7日达到94…

火灾报警电路设计

火灾报警电路设计 设计一个火灾报警电路&#xff1a;有一火灾报警系统&#xff0c;设有烟感、温感和紫外线 光感3种类型的火灾探测器。为了防止误报警&#xff0c;只有当其中有两种或两种以 上类型的探测器发出火灾检测信号时&#xff0c;报警系统才产生报警控制信号。设计一个…

Linux驱动device_create创建字符设备文件

在Linux中有两种创建字符设备的方法&#xff0c;一种是通过mknod手动进行设备文件创建&#xff0c;第二种是通过device_create函数进行设备文件创建。在驱动开发中常用第二种方式进行设备文件的创建。 class_create和device_create 先来了解一下跟设备文件创建相关的两个函数。…

window 以zip的方式 安装mysql5.7或mysql8,或者两个一起安装Mysql5.7和Mysql8、或其他的版本也可以

window 以zip的方式 安装mysql5.7或mysql8&#xff0c;或者两个一起安装Mysql5.7和Mysql8、或其他的版本也可以 注意不能同一个端口。需要创建个my.ini ,配置内容在网上查下即可 比如说 mysql8的配置文件或mysql5.7的配置&#xff0c;当然内容差别不大&#xff0c;只是需要看自…

数据库系统课程设计(高校成绩管理数据库系统的设计与实现)

目录 1、需求分析 1 1.1 数据需求描述 1 1.2 系统功能需求 3 1.3 其他性能需求 4 2、概念结构设计 4 2.1 局部E-R图 4 2.2 全局E-R图 5 2.3 优化E-R图 6 3、逻辑结构设计 6 3.1 关系模式设计 6 3.2 数据类型定义 6 3.3 关系模式的优化 8 4、物理结构设计 9 4.1 聚…

【AIGC】论文阅读神器 SciSpace 注册与测试

欢迎关注【youcans的 AIGC 学习笔记】原创作品 【AIGC】论文阅读神器 SciSpace 注册与测试 1. 【SciSpace】网址与用户注册1.1 官网地址&#xff1a;[【SciSpace官网】https://typeset.io](https://typeset.io)1.2 官网注册 2. 【SciSpace】实战解说2.1 导入论文2.2 论文分析2.…

基于Python-sqlparse的SQL表血缘追踪解析实现

目录 前言 一、主线任务 1.数据治理 2.血缘追踪 3.SQL表血缘 二、实现过程 1.目标效果 2.代码实现 1.功能函数识别 2.SQL标准格式 3.解析AST树 4.最终效果&#xff1a; 点关注&#xff0c;防走丢&#xff0c;如有纰漏之处&#xff0c;请留言指教&#xff0c;非常感…

eclipse的安装与配置

1、下载 eclipse 下载地址&#xff1a;https://www.eclipse.org/downloads/ 点击 【Download Package】 找到JavaEE IDE&#xff0c;点击【Windows x86_64】 点击【Select Another Mirror】&#xff0c;然后点击国内任意一个大学镜像下载即可&#xff01; 下载成功后&…

express的使用(一)

因为有时候没有登录CSDN,所以弄了一个订阅号&#xff0c;会不定时的更新文章(其实就是在csdn这边发布了之后搬过去&#xff0c;不过有问题的可以留言&#xff0c;csdn不常上来看)&#xff0c;欢迎订阅文章链接&#xff1a;[订阅号-express的使用(一)] ------------------------…

全网首发2023全新ChatGPT3.5小程序开源源码 全新UI

源码简介&#xff1a; 2023全新ChatGPT3.5小程序开源源码 全新UI 全网首发 这一版本ui比较好看 回复速度也快了 小程序是java的 带后台 本来准备给你们带上接口的然后么后台是和接口连接的 我改什么内容你们前段都会显示所以全开源 自己搭建下吧&#xff0c;腾讯云买个国外服…

MFC基础入门

1 MFC入门 1.1 为什么学习MFC 在Windows平台上做GUI开发&#xff0c;MFC是一个不错的选择。 学习MFC不仅可以学习到MFC本身&#xff0c;而且可以学习MFC框架的设计思想。 1.2 Windows消息机制 基本概念解释 SDK&#xff1a;软件开发工具包(Software Development Kit)&…

『MySQL 实战 45 讲』15 - 两阶段提交、索引相关问题

日志和索引相关问题 mysql 两阶段提交问题 在两阶段提交的不同时刻&#xff0c;MySQL 异常重启会出现什么现象&#xff1f; 如果 crash 发生在时刻 A 由于此时 binlog 还没写&#xff0c;redo log 也还没提交&#xff0c;所以崩溃恢复的时候&#xff0c;这个事务会回滚 如果 …

数据链路层协议 ——— 以太网协议

文章目录 链路层解决的问题以太网协议认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMUT对IP协议的影响MTU对UDP协议的影响MTU对TCP协议的影响数据跨网络传输的过程 ARP协议ARP协议的作用ARP数据的格式ARP协议的工作流程 链路层解决的问题 IP拥有将数据跨网…

【前端知识】Cookie, Session,Token和JWT的发展及区别(二)

【前端知识】Cookie, Session,Token和JWT的发展及区别&#xff08;二&#xff09; 4. Session4.1 Session的背景及定义4.2 Session的特点&#x1f44d;4.2.1 Session的特点&#x1f440;4.2.2 Session保存的位置 4.3 Session的一些重要/常用属性4.4 Session的认证流程4.5 Sessi…

Python数据清洗:Python和Pandas数据清洗的实用教程

前言&#xff1a; 技术书籍是学习技术知识的重要资源之一。读技术书可以帮助我们学习新技能和知识&#xff0c;技术书籍提供了可靠的、全面的信息&#xff0c;帮助我们快速学习新技能和知识。同时技术书籍有助于保持你的竞争力&#xff0c;因为它们提供了最新的技术知识和实践。…

什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

ChatGPT 免费体验来了

露个相吧 1、相信很多小伙伴们面试或者工作中会遇到数组扁平化这一问题&#xff0c;如今正是 chatgpt 大火的时候&#xff0c;何不让我们试试水呢&#xff0c;所以让我们的 chatgpt 用js帮我们写一个数组扁平化吧 2、这就&#xff1f;这就&#xff1f;这就写出来了&#xff1f…

【JavaScript数据结构与算法】字符串类(反转字符串中的单词)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js&#xff09; &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;…