雪花飘,购物抛物线,进度条等四个案列,带入走进 CSS transition

前言

今天从四个案例,我们一起走进 CSS Transition。

源码 以及 在线演示地址

源码地址: 四个案例, CSS Transition 源码

在线演示地址:(兼容移动端)

  • 贝塞尔曲线运动
  • 进度条
  • 雪花飘飘效果
  • 购物车抛物线效果

案例演示

内置贝塞尔函数运动效果

效果有:

  • ease
  • linear
  • easy-in
  • easy-out
  • easy-in-out
    贝塞尔曲线运动-演示地址

进度条

思路

  • 两个div, 一个outer, 一个inner
  • box-shadow
  • transition

进度条-演示地址
进度条

雪花飘飘

思路:

  • n个postion为absolute的HTML节点
  • transition 随机贝塞尔曲线和动画时间
    雪花飘飘效果

购物车抛物线

思路:
top和left的属性一个用linear,一个easy-in 贝塞尔时间函数

购物车抛物线效果

Transition属性:

那我们就先说说transition的属性

属性描述CSS
transition简写属性,用于在一个属性中设置四个过渡属性。3
transition-property规定应用过渡的 CSS 属性的名称。默认值all。3
transition-duration定义过渡效果花费的时间。默认是 0。3
transition-timing-function规定过渡效果的时间曲线。默认是 ease。3
transition-delay规定过渡效果何时开始。默认是 03

额外提一下两个属性:

  • transition-property
    all: 所有属性, none: 也就是不生效。
    当然也不是所有的属性都可以来动效, 具体的参考Certain CSS properties can be animated
    不支持的动画属性:background-image, float, display, position,visibility。

    深入理解CSS过渡transition有一个简单分类的总结,当然相对全面还是Certain CSS properties can be animated

颜色: color background-color border-color outline-color
位置: backround-position left right top bottom
长度: 
    [1]max-height min-height max-width min-width height width
    [2]border-width margin padding outline-width outline-offset
    [3]font-size line-height text-indent vertical-align  
    [4]border-spacing letter-spacing word-spacing
数字: opacity visibility z-index font-weight zoom
组合: text-shadow transform box-shadow clip
其他: gradient
  • transition-timing-function
    三阶贝塞尔曲线函数, 这里只要两个控制点的值。
    至于什么是贝塞尔曲线,可以看看贝塞尔曲线扫盲。
    内置了几个简单的:

    1、ease:逐渐变慢, 贝塞尔曲线(0.25, 0.1, 0.25, 1.0)
    2、linear:匀速,linear 贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
    3、ease-in:加速,ease-in 贝塞尔曲线(0.42, 0, 1.0, 1.0)
    4、ease-out:减速,ease-out贝塞尔曲线(0, 0, 0.58, 1.0)
    5、ease-in-out:加速然后减,ease-in-out 贝塞尔曲线(0.42, 0, 0.58, 1.0)

    更多的可以在这里获得在线贝塞尔。

    这里的取值还有一种steps函数,可以参考深入理解CSS过渡transition


多值:多种属性同时变化的时候

依旧是两个总写法。 注意transition-property和其他属性数量不一致的情况。

/* 方法一*/
.demo{
    transition-property: width, height;
    transition-delay: 500ms;
    transition-timing-function: linear;
    transition-duration: 2000ms;
}
/* 方法二*/
.demo{
  transition: width 2000ms linear 500ms, height 2000ms linear 500ms
}

触发方式

  • 伪类触发
    :hover、:focus、:active等
  • 媒体查询触发
    @media
  • javascript触发

Transition事件

  • transitioncancel
    转换取消事件 , 该事件和transitionend互斥,只会有一个发生。
  • transitionend
    转换结束事件
  • transitionrun
    转换进行事件
  • transitionstart
    转换开始事件,因为转换有delay属性,所以进行,不一定真正的开始。
const transition = document.querySelector('.transition');

transition.addEventListener('transitioncancel', () => {
  console.log('Transition canceled');
});

Transition事件的触发次数是非复合的过渡属性的个数, 比如width, height同时变换,那么就是两次。
还比较有趣的事, 比如hover到某元素的时候,开始变换,没变换结束,你就离开。
变换效果会倒着来。上面的demo,就会看到。

基本了解了属性和事件,基本就是进一步的应用了, 可以自行下载源码看看, 思想有多风骚,作用就有多大。

写在最后

不忘初衷,【SSD系列】,3-5分钟,500-1000字,有所得,而不为所累,如果你觉得不错,你的一赞一评就是我前行的最大动力。

技术交流群请到 这里来。
或者添加我的微信 dirge-cloud,一起学习。

CSS Transitions
Using CSS transitions
TransitionEventSection
css-transitions | Can I Use
TransitionEventSection](https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent)
css-transitions | Can I Use
深入理解CSS过渡transition

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

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

相关文章

kafka(五)——消费者流程分析(c++)

概念 ​ 消费者组(Consumer Group):由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者…

猫头虎博主深度探索:Amazon Q——2023 re:Invent 大会的 AI 革新之星

摘要 大家好,我是猫头虎博主!今天,我要带大家深入了解2023年 re:Invent 大会上发布的一款革命性产品——Amazon Q。让我们一起探索这个引领未来工作方式的新型工具吧! 引言 在2023年的 re:Invent 大会上,亚马逊云科…

RAG 修炼手册|一文讲透 RAG 背后的技术

在之前的文章中《RAG 修炼手册|RAG敲响丧钟?大模型长上下文是否意味着向量检索不再重要》,我们已经介绍过 RAG 对于解决大模型幻觉问题的不可或缺性,也回顾了如何借助向量数据库提升 RAG 实战效果。 今天我们继续剖析 RAG&#xf…

docker-compose 之 OpenGauss

使用 docker 启动高斯数据库的示范脚本如下: docker-compose.yml version: 3.7 services:opengauss:image: enmotech/opengauss:5.1.0container_name: opengaussnetwork_mode: "host"privileged: truevolumes:- ./opengauss:/var/lib/opengaussenvironm…

前端mock数据——使用mockjs进行mock数据

前端mock数据——使用mockjs进行mock数据 一、安装二、mockjs的具体使用 一、安装 首选需要有nodejs环境安装mockjs:npm install mockjs 若出现像上图这样的错,则只需npm install mockjs --legacy-peer-deps即可 src下新建mock文件夹: mo…

微服务-网关

在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独立运行的微服务组成。其中每个服务都只会完成特定领域的功能,比如订单服务提供与订单业务场景有关的功能、商品服务提供商品展示功能等。各个微服…

SpringBoot文件上传--头像上传

目录 1.在配置文件中写好物理路径和访问路径 2.写配置文件 3.页面上传 4.控制层 5.效果 1.在配置文件中写好物理路径和访问路径 (自定义)file:uploadPath: D:/upload/img/ 物理路径path: /file/** 访问路径 2.写配置文件 package com.example…

BCLinux8U6系统基线加固致无法su的问题分析

本文对BCLinux8U6系统进行基线加固致无法su的问题分析。 一、问题现象 对BCLinux8U6系统进行基线加固,su切换用户失败,报错信息如下: [ABCDlocalhost ~]$ su - 密码: su: 模块未知 二、问题分析 1、错误排查 出错前&#xf…

探索进程控制第一弹(进程终止、进程等待)

文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么?进程终止的情况代码跑完,结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…

自定义校验(这里是Validation)

1.自定义注解State package com.itheima.anno;import com.itheima.Validator.StateValidator; import jakarta.validation.Constraint; import jakarta.validation.Payload;import java.lang.annotation.*;Documented//元注解 Target(ElementType.FIELD) Retention(RetentionP…

力扣HOT100 - 239. 滑动窗口最大值

解题思路&#xff1a; class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums.length 0 || k 0) return new int[0];Deque<Integer> deque new LinkedList<>();int[] res new int[nums.length - k 1];// 未形成窗口for(int i 0; i <…

瑞山集团携手数环通iPaaS,实现ERP与CRM无缝对接

01 客户背景 瑞山集团位于粤港澳大湾区核心商圈----佛山市&#xff0c;是一家致力于各种新型材料添加剂应用推广&#xff0c;集科研、销售和服务于一身的新材料企业&#xff0c;产品覆盖了塑料黏胶剂、水性涂料、3D打印材料、电子材料、纳米材料等各种行业。 公司旗下拥有几间不…

pdffactory pro 8注册码序列号下载 附教程

PdfFactory Pro可以说是一款行业专业且技术领先的的PDF虚拟打印机软件。其不仅占用系统内存小巧&#xff0c;功能强大&#xff0c;可支持用户无需使用Acrobat来创建Adobe PDF即可以进行PDF组件的创建和打印。同时&#xff0c;现在全新的PdfFactory Pro 8也正式上线来袭&#xf…

雄安建博会:中矿雄安新区的总部开工建设

中矿落位雄安&#xff1a;助力国家战略与新区发展 雄安新区&#xff0c;作为中国未来发展的重要战略支点&#xff0c;正迎来一系列央企总部的疏解与建设。最近&#xff0c;中国矿产资源集团有限公司&#xff08;简称“中矿”&#xff09;在雄安新区的总部项目正式开工建设&…

在win10上虚拟一个LoongOS系统(类似虚拟机)作为开发环境

文章目录 1.安装1.1.下载这三个东西1.2.安装好qemu。1.3.创建一个启动脚本startup_mate.bat&#xff0c;然后把三部分东西放到一起1.4.然后双击startup.bat就可以启动了。 2.文件的传输2.1.使能虚拟机系统的ssh2.2.连接ssh 3.Qt相关安装Qt安装opencv 1.安装 注意&#xff0c;一…

Web前端—属性描述符

属性描述符 假设有一个对象obj var obj {a:1 }观察这个对象&#xff0c;我们如何来描述属性a&#xff1a; 值为1可以重写可以遍历 我们可以通过Object.getOwnPropertyDescriptor得到它的属性描述符 var desc Object.getOwnPropertyDescriptor(obj, a); console.log(desc);我…

uniapp 2.0可视化开发工具:提升跨平台应用开发效率的新篇章

摘要 随着移动互联网的迅猛发展&#xff0c;跨平台应用开发成为前端开发者关注的热点。uniapp作为一款优秀的跨平台应用框架&#xff0c;其2.0版本的发布为开发者带来了更多的便利和可能性。其中&#xff0c;可视化开发工具的出现更是为前端开发带来了革命性的变革&#xff0c…

Windows下docker-compose部署DolphinScheduler

参照&#xff1a;快速上手 - Docker部署(Docker) - 《Apache DolphinScheduler v3.1.0 使用手册》 - 书栈网 BookStack 下载源文件 地址&#xff1a;https://dolphinscheduler.apache.org/zh-cn/download/3.2.1 解压到指定目录&#xff0c;进入apache-dolphinscheduler-xxx-…

【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt信号和槽的其他说明及Lambda表达式 文章编号&#xff1a;Qt 学习笔记…

ctfshow--web入门--文件上传--web168--web170

web168 法一免杀脚本 还是检查&#xff0c;准备上传图片马 我写的是<?php eval($_POST[a]);?> 上传之后没反应 那么查一下&#xff0c;原来是发现对eval,system还有$_POST和$_GET进行过滤,$_REQUEST还可以用 那么再写一个马&#xff08;免杀脚本&#xff09; <?…