CSS 显示隐藏动画(动画失效问题)

就像这个动画一样的效果,div 先是隐藏的,点击按钮后显示并且有动画效果,隐藏的时候同样。

  <button class="btn" id="btn">点击</button><div class="box" id="box"></div><script>const btn = document.getElementById('btn')const box = document.getElementById('box')let show = falsebtn.onclick = function () {if (show) {box.classList.add('fadeout')box.classList.remove('fadein')} else {box.classList.add('fadein')box.classList.remove('fadeout')}show = !show;}</script>

在css中,可以利用 animation 属性和 @keyframes 规则来实现元素显示与隐藏的动画效果,通过 @keyframes 规则,您能够创建动画。

  <style>.box {width: 50px;height: 50px;background: red;display: none;}.fadeout {animation: fadeout 1s;}.fadein {display: block;animation: fadein 1s;}/* 移出动画 */@keyframes fadeout {0% {opacity: 1;display: block;}100% {opacity: 0;display: block;}}/* 进入动画 */@keyframes fadein {0% {opacity: 0;}100% {opacity: 1;}}</style>

在 CSS 中,display: none; 和 display: block; 是两种完全不同的属性,它们控制元素的显示方式。display: none; 会使元素不可见且不占据空间,而 display: block; 会使元素以块级元素的方式显示,并占据相应的空间。

因此,你不能直接在 display: none; 和 display: block; 之间应用动画效果,因为这两个属性之间的切换是瞬间完成的,没有中间状态可以应用动画。

这样就引发了一个问题:如果我们要设置类似淡入淡出的效果怎么办?就是让元素在消失/出现的同时产生动画怎么办?不要使用 transition 动画,而是用 animation 动画,并且在进入动画的时候设置元素的显示,然后在出动画帧定义的地方设置元素的显示。

    .fadein {/* 注意这行代码 */display: block; animation: fadein 1s;}/* 移出动画 */@keyframes fadeout {0% {opacity: 1;/* 注意这行代码 */display: block;}100% {opacity: 0;/* 注意这行代码 */display: block;}}

此时我们已知掌握了动画的基本操作,接下来演示一个基本的弹窗动画。

<!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>.box {background: red;display: none;position: absolute;left: 50%;top: 50%;transform: translate3d(-50%, -50%, 0);padding: 12px;border-radius: 8px;}.fadeout {animation: fadeout 0.3s;}.fadein {display: block;animation: fadein 0.3s;}/* 移出动画 */@keyframes fadeout {0% {opacity: 1;display: block;}100% {opacity: 0;display: block;}}/* 进入动画 */@keyframes fadein {0% {transform: translate3d(-50%, -50%, 0) scale(0.9);}50% {transform: translate3d(-50%, -50%, 0) scale(1.1);}100% {transform: translate3d(-50%, -50%, 0) scale(1);}}</style>
</head>
<body><button class="btn" id="btn">按钮</button><div class="box" id="box">您确定提交数据吗?</div><script>const btn = document.getElementById('btn')const box = document.getElementById('box')let show = falsebtn.onclick = function () {if (show) {box.classList.add('fadeout')box.classList.remove('fadein')} else {box.classList.add('fadein')box.classList.remove('fadeout')}show = !show;}</script>
</body>
</html>

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

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

相关文章

一些常用到的git命令

git stash -a //缓存所有文件 git checkout -b dev origin/dev //切换到dev分支上,接着跟远程的origin地址上的dev分支关联起来 //推送本地分支到远程仓库 git push origin localbranchname:remotebrancname git revert onefile //https://www.freecodecamp.org/news/git-re…

S2---FPGA-A7板级原理图硬件实战

视频链接 FPGA-A7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-A7板级原理图硬件实战 基于XC7A100TFGG484的FPGA硬件设计流程图 A7核心板&#xff0c;是基于XILINX公司的ARTIX-7系列100T的XC7A100T,2FGG484I这款芯片开发的高性能核心板&#xff0c;具有高速&#xff0c;高带宽&a…

HashMap在多线程下形成环的死锁详解

1. HashMap的工作原理 HashMap是Java中基于哈希表的Map接口的非同步实现。它存储键值对&#xff0c;并允许使用null键和null值。HashMap通过使用键对象的hashCode()方法来决定键值对的存储位置。 2. 多线程环境下的问题 在多线程环境下&#xff0c;如果多个线程同时对HashMap进…

Android 签名机制

V1是内部文件单个签 但是增加apk文件目录下面随意增加文件并不会有影响,它只关心meta-info文件 mf汇总清单的各个文件sha256 V2 整个APK文件,按文件进行hash 那么便不能随便在这里面增加文件了,增加了签名分块&#xff08;不然签名信息存哪里&#xff09;这里涉及一个文件概念 …

如何修炼成“神医”——《OceanBase诊断系列》之一

本系列是基于OcenaBase 开发工程师在工作中的一些诊断经验&#xff0c;也欢迎大家分享相关经验。 1. 关于神医的故事 扁鹊&#xff0c;中国古代第一个被正史记载的医生&#xff0c;他的成才之路非常传奇。年轻时&#xff0c;扁鹊是一家客栈的主管。有一位名叫长桑君的客人来到…

性能优化篇(二) 静态合批步骤与所有注意事项\游戏运行时使用代码启动静态合批

静态合批步骤: 1.开启Project Settings —>Player–>Other Setting里勾选Static Batching选项(一般情况下unity都是默认勾选状态) 2.勾选需要合批的静态物体上的Batching Static项,勾选后此物体下的所有子物体都默认参与静态合批(勾选后物体不能进行移动/旋转/缩放操作,…

02-设计概述

上一篇&#xff1a;01-导言 本章重点讨论 JNI 中的主要设计问题。本节中的大多数设计问题都与本地方法有关。调用 API 的设计将在第 5 章&#xff1a;调用 API 中介绍。 2.1 JNI 接口函数和指针 本地代码通过调用 JNI 函数来访问 Java 虚拟机功能。JNI 函数可通过接口指针使用…

LeetCode383. 赎金信(C++)

LeetCode383. 赎金信 题目链接代码 题目链接 https://leetcode.cn/problems/ransom-note/description/ 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {int record[26] {0};if(ransomNote.size() > magazine.size()) return fa…

多层感知器(神经网络)与激活函数

单个神经元&#xff08;二分类&#xff09; 多个神经元&#xff08;多分类&#xff09; 多层感知器 多层感知器&#xff0c;他是一种深度学习模型&#xff0c;通过多层神经元的连接和激活来解决非线性问题。 激活函数 激活函数的种类包括relu&#xff0c;sigmoid和tanh等 …

批量检测微信小程序是否封禁接口源码

<?php // 要检测的 appid 列表 $appids array(appid1, appid2, appid3); // 使用实际的 appid // 循环调用接口检测小程序状态 foreach ($appids as $appid) { $url https://yan.changxunwangluo.cn/xcx/check_mini_program.php?appid . urlencode($appid); $…

敏捷开发模型:一种灵活、协作和持续的软件开发方法

敏捷开发模型&#xff1a;一种灵活、协作和持续的软件开发方法 引言 在软件开发领域&#xff0c;随着市场需求的不断变化和技术的迅速发展&#xff0c;传统的瀑布模型逐渐暴露出其局限性。为了应对这些挑战&#xff0c;敏捷开发模型应运而生。敏捷开发模型强调灵活、协作和持…

【ArcPy】简化ArcGISPro默认Python环境体量

参考文献 安装 ArcPy—ArcGIS Pro | 文档

找工作笔记

记录利用讯飞星火 问题1&#xff1a;作为一名无线通信工程师&#xff0c;找到适合自己的工作需要一系列的准备和策略。以下是一些建议&#xff0c;帮助你找到理想的职位&#xff1a; 1. **更新简历和在线资料**&#xff1a;---重要&#xff0c; - 确保你的简历是最新的&am…

[数据集][目标检测]鸡蛋破蛋数据集VOC+YOLO格式792张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;792 标注数量(xml文件个数)&#xff1a;792 标注数量(txt文件个数)&#xff1a;792 标注类别…

LVGL 的事件响应, 按键

在LVGL中&#xff0c;所有控件都能够响应事件&#xff0c;但并非所有控件默认都会有预设的事件响应行为。LVGL的设计允许用户为任何控件添加事件处理函数&#xff0c;以响应各种用户交互&#xff0c;例如点击、长按、拖动等。这意味着&#xff0c;虽然控件本身具备响应事件的能…

同源不同页面之间的通信,SharedWorker使用

同源不同页面之间的通信&#xff0c;SharedWorker使用 描述实现结果 描述 同源不同页面之间的通信&#xff0c;使用SharedWorker&#xff0c;或者使用全局方法通信&#xff0c;这里使用SharedWorker来实现 mdn地址&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/A…

JAVA学习-类和接口.类和面向对象

一、Java中的类和接口是面向对象编程的重要概念。 1. 类是一种模板或蓝图&#xff0c;用于创建具有相同属性和行为的对象。类定义了对象的属性&#xff08;成员变量&#xff09;和行为&#xff08;方法&#xff09;。在程序中&#xff0c;可以通过实例化类来创建对象&#xff…

Odoo迈入开源第一低代码开发平台的重要里程碑

Odoo17的正式发布已经过去好几个月了&#xff0c;通过一段时间的运用&#xff0c;最大的感触就是&#xff0c;Odoo会成为企业管理软件低代码开发平台的重要一员&#xff0c;而V17则会成为这个过程中具有里程碑意义的版本。 时隔四个月&#xff0c;让我们回头来看看Odoo17带来的…

基YOLOV5实现的AI智能盒子

基于yolov5实现的AI智能盒子框架 开发背景技术实现产品效果源码预览功能介绍 2021-2023是沉淀的几年&#xff0c;经济不景气&#xff0c;各行各业都不太好混&#xff0c;所以这几年也没有太多心思花在csdn上为各大网友写一些技术文章&#xff0c;2024年初&#xff0c;也算是给自…

光栅化算法

多数计算机图形图像&#xff0c;是通过光栅显像显示给用户的&#xff0c;这种系统将图像作为像素阵列进行显示&#xff0c;像素&#xff08;pixel&#xff09;即图像元素&#xff08;picture element&#xff09;的简称。这些像素采用RGB颜色空间。本文讨论光栅显像的基本原理&…