display设置显示隐藏,transition过渡不起效果,采用opacity+visibility+dispaly解决问题

display与transition动画冲突问题 display与transition动画冲突 延时 timeout requestAnimationFrame 替代 absolute visibility opacity keyframe 阅读详情
AI摘要

本文介绍了一种使用CSS的visibility和opacity属性实现弹出窗口淡入淡出动画的方法,并提供了具体的实现步骤。

一、场景如下,需要给一个弹出窗设置动画,淡入淡出效果。

在这里插入图片描述
当我们点击按钮123时,对应的下方弹出层展示在页面上,再次点击或点击文档其他处时,我们需要将弹出层隐藏(带有动画效果)。

二、直接采用display:none;display:block;过渡transition不起效果。

从个人理解角度上来说的话,transition对display不起效果的原因是因为,设置display后,浏览器相当于重新更新了,回流了,以至于过渡不起效果,那么我们改如何去巧妙地解决这个问题?

三、解决方案

<style>
// 在style中同时设置visibility、与opacity 
.isNone {
  visibility: visible;
  opacity: 1;
  transition: all 0.5s;
}
.isBlock {
  visibility: hidden;
  opacity: 0;
  transition: all 0.5s;
}
</style>
3.1 visibility与opacity二者区别?

至于为什么要同时设置visibility与opacity,首先我们要知道两者的区别

属性提示
opacity透明度,占据文档位置并不是真的隐藏,设置为0时是可以触发事件的
visibilityvisibility 属性规定元素是否可见,即使不可见的元素也会占据页面上的空间,不会触发事件

我们需要知道的是单独使用visibility、opacity都是不可取的,如果单独使用visibility,就会导致元素没有过渡效果,这个为什么我们可以这样去理解,将visibility的hidden看做0,visibility的visible看做1。而transition则是0-1过渡属性,而当transition开始运行时visibility的hidden由0走向0.01,那么这个时候dom元素就会立刻显示,因为visibility同样也将0.01看做成了1。

这个时候我们就需要去搭配opacity去使用了因为我们需要隐藏时不能触发dom事件,也同样需要隐藏是实现过渡效果。

3.2 如何不让其占据页面位置?

此时我们同样要思考一个问题,就是如何将已经隐藏好的dom元素,不让其占据页面上的位置呢?

    // 点击按钮方法
    isNone(e) {
      // 清除冒泡
      e.stopPropagation();
      // 获取ref属性,每次我们点击时我们立刻会将元素进行展示
      this.$refs["box"].style.display = "block";
      // 并且我们清除掉我们的定时器,防止多次点击,多次触发
      clearTimeout(this.time);
      // 设置为取反
      this.none = !this.none;
      // 如果对应的显示效果为false时,我们就将设置一个定时器,0.5秒之后设置display=none,此处对照上方transition所设置的时间s
      if (!this.none) {
        this.time = setTimeout(() => {
          this.$refs["box"].style.display = "none";
        }, 500);
      }
    },

在这里插入图片描述
对照jsx render函数来讲解一下运行的过程

click按钮 → 属性立即设置为block → 运算过程 → data值变更(class属性进行变更) → 对应transition过渡效果 → 0.5s后调用setTimeout函数执行display=none;

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 1. 概览 在开始具体讨论卡尔曼滤波和匈牙利算法之前,首先我们来看一下基于检测的目标跟踪算法的大致流程。 2. 卡尔曼滤波(Kalman filter) 目标跟踪中使用的就是最基础的 Kalman filter 算法。这里也仅仅讨论最基础的 Kalman filter 算法。 卡尔曼滤波算法的过程很简单,如下图所示。最核心的两个步骤就是预测和更新(下图的 correct)。 在目标跟踪任务中,目标的 阅读详情

相关推荐

从踩坑到填平:我在RHEL7上给Tesla A100装驱动的完整记录(含Fabric Manager配置)

本文详细记录了在RHEL7系统上为Tesla A100安装Nvidia驱动的完整过程,包括Fabric Manager配置的关键步骤。通过分析A100架构的特殊性,提供了从驱动安装到服务配置的详细指南,并分享了常见问题的排查方法和性能调优技巧,帮助用户高效部署高性能GPU计算环境。

weixin_29291863的博客 283

transition设置display过渡无效

使用display:none(block)对div的隐藏与显示应用于过渡属性上,但是transition完全失效,没有过渡效果。 div元素使用display:none(block)实现隐藏与显示的时候,会与transition属性冲突,导致过渡效果无效。display会破坏transition。 原因 display:none的时候,页面文档流中将不会存在该元素,display:block...

友人C君的博客 9347

从零到一:移远EC200UCN_LA OpenCPU开发中的‘避坑’实战指南

本文详细介绍了移远EC200UCN_LA 4G通信模块的OpenCPU开发实战指南,涵盖开发环境搭建、项目构建、通信接口开发、调试技巧及固件升级等关键环节。通过避坑经验和实用技巧,帮助开发者高效完成二次开发,提升4G通信模块的应用开发效率。

weixin_29159711的博客 506

css3中transition和display的坑

不知道大家做css3动画的时候遇到过这种情景没? 用opacity实现淡入淡出的效果。一切正常,没什么问题 例: <!DOCTYPE html> <html> <meta charset="uft-8"> <head> <style> .div1{ background: red; } .div2 { width:100px; height:100px; background:blue; tr

muli`慕李 1085

用FPGA驱动WS2812B点阵,手把手教你实现动态文字显示(附完整Verilog代码)

本文详细介绍了如何使用FPGA驱动WS2812B点阵实现动态文字显示,包括硬件连接、Verilog代码实现和动态效果设计。通过精确的时序控制和数据处理,读者可以掌握FPGA与WS2812B的交互技术,并实现炫酷的显示效果。附完整Verilog代码,适合硬件爱好者和工程师参考实践。

weixin_30482383的博客 669

AMBA VIP基础使用方式(AXI)

AXI环境配置 1)基础配置 作为master或者slave使用时,对应的is_active = 1 只作为i监测(monitor)使用时,对应slave_cfg的is_active = 0(对应端口连接也有所区别) class smu_axi_cfg extends svt_axi_system_configuration; `uvm_object_utils(smu_aix_cfg) function new(string name="smu_axi_cfg); super.new(n..

qq_37573794的博客 7984

css中display:none变为block无法触发transition的解决办法

问题 在页面开发过程中使用transition过渡是一个非常方便并能提高用户体验的属性,不会让一些元素的变化显得非常的突兀,但是元素从display:none到display:block是无法触发过渡(transition)属性的,如果说使用js来解决这个问题会添加复杂的鼠标移入移出监听事件 解决办法 最简便的方式还是使用css3解决,这样也使得js的逻辑代码更纯粹 以下代码的逻辑是:鼠标悬浮父元素触发hover之后给子元素div添加一个动画 需要注意的是这个方法只能解决父子关系的元素 <head&g

weixin_43623808的博客 2779

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。 添加getchar();代码块解决无法查找或打开PDB文件。 错误提示: “Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Pro...

m0_46523403的博客 6420

(30条消息) display中的transition实现

display中的transition实现 这里讨论的transition,是针对于display:none/block;下的实现或替代性方案。 因为过渡是基于数值和时间来计算的,比如长度、颜色、角度等属性值,是可以在单位时间内变化一定数值,从而达到过渡的动画效果。 像我们常见的opacity/width/height/margin/padding等属性,都是可以应用过渡效果的,然而display这个属性比较尴尬,两种状态,要么显示,要么隐藏,因此无法应用transition效果。 ..

jiaoqi6132的博客 1312

【26美赛D题】2026美赛数学建模(MCM/ICM)思路解析及代码分享

2026美赛D题数学建模竞赛思路解析摘要:本文针对美赛D题提供系统性解决方案,提出四层建模框架(数据层、机理层、模型层、决策层),强调逻辑闭环比模型复杂度更重要。包含通用建模步骤:指标体系构建、状态评估、动态预测和策略优化,并给出Python基础代码框架。论文建议采用七段式结构,突出从现实问题到决策方案的完整闭环。核心在于通过数据驱动方法揭示问题规律,结合多源数据整合、系统行为建模和风险评估,最终形成可落地的决策建议,体现数学建模解决实际问题的能力。

一键难忘的博客 1083

18、知识表示与学习范式

本文探讨了智能系统中的核心组成部分——知识表示与学习范式。从基础知识到实际应用,详细解析了符号表示、框架表示、语义网络和本体表示等知识表示方法,并介绍了监督学习、无监督学习、半监督学习和强化学习等学习范式。此外,还深入分析了这些技术在自然语言处理、图像识别和推荐系统等领域的具体应用及操作步骤。最后,展望了未来可能的技术发展方向。

ttt77的博客 85

关于display,opacity,visibility的区别

一.display,opacity与visibility display属性规定元素应该生成的框的类型。 opacity属性设置一个元素的透明度级别。 visibility 属性规定元素是否可见。 下面看这三行代码: display:none; visibility:hidden; opacity:0; 我们可以知道这三条属性所形成的元素效果是一样的,但是他们本质上有什么区别呢? 二.知识点 (...

qq_44875145的博客 1096

31、航空软件标准DO - 178C/ED - 12C的实践解读

本文深入解读了航空软件标准DO-178C/ED-12C相较于DO-178B的主要变化,涵盖核心文本更新、各章节关键改进及新技术补充文件的影响。重点分析了目标与活动关系、需求层级定义、验证独立性、MC/DC覆盖、停用代码处理等关键变更,并提供了应对策略,包括流程调整、文档更新、工具选择和与认证机构沟通等建议,旨在帮助航空软件开发者确保合规性,提升软件安全性与可靠性。

tech5的博客 246

display和transition过渡冲突 元素移动显现消失的解决方案

v

Noctis99的博客 1513

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

transition 动画与 display: none 冲突的问题

几种元素消失的属性 display: none; 元素消失,不占位。 visibility: hidden; 元素消失, 占位。 opacity: 0;透明度设为0, 元素看不见,占位。 width: 0;宽度设为0 , 元素看不见,不占位。 问题 transition与display搭配使用时,会导致过渡消失,直接呈现或者消失元素,可能是transition过渡不支持display的...

天空之上有座城 7778

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

transition过渡动画与display等关系

对于display: none——>display:block的动画,transition无效。可能因为display属于不占位元素消失。 对于visibility: hidden——>visibility: visible的动画,transition有效。因为visibility: hidden元素消失, 占位。但由于实际占位,hover放在visibility: hidden的元素上也会触发效果,不建议使用。 对于opacity: 0——>opacity: 1的动画,transit

what to say 686

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

transition与display:block冲突

问题:使用display:none(block)对div的隐藏与显示应用于过渡属性上,但是transition完全失效,没有过渡效果。 原因:display:none的时候,页面文档流中将不会存在该元素,display:block的时候,文档流中才存在该元素。transition属性无法对一个从无到有的元素进行过渡显示。 解决方法:使用opacity替代display。 ...

weixin_55241955的博客 554

elementplus折叠面板(Collapse)卡顿如何解决

通过减少过渡时间的方法来解决卡顿无效时,该怎么办?我们可以自己写一个样式来进行过渡

swoly2894265391的博客 3900

解决display:none到display:block无法实现过渡效果的问题(转换解决思路)

主要是解决问题的思路要转换一下 一开始我们的解决办法或许是通过transition来实现过渡的,但是对于不存在的元素我们是无法从无到有来过渡的。 所以我们可以通过先让内容显示出来,然后再给他们加入animation的动画来实现。具体办法就是让父容器作为display:none和display:block的显示过程。而里面的内容就相当于一开始就是存在的了,我们再让它从透明度为0到1的显示就可以了。 <div class="hover-on"> <div class=".

weixin_41033048的博客 8427

transition与display冲突的说明及解决办法

transition属性的作用就是用来达到一个过度的效果 transition-property 规定设置过渡效果的 CSS 属性的名称。 transition-duration 规定完成过渡效果需要多少秒或毫秒。 transition-timing-function 规定速度效果的速度曲线。 transition-delay 定义过渡效果何时开始。 display 属性表示用来显...

weixin_43313076的博客 1889

display从none变成block使用动画过渡

transition过渡不生效 animation动画生效 代码示例: 去掉.jf-drawer-container-hide类后,帧动画生效 .jf-drawer-container { display: block; position: fixed; z-index: 2000; width: 100%; height: 100%; box-sizing: border-box; overflow: hidden; background-color: #ccc; } .

weixin_43294560的博客 4685

使用display:none,动画不生效问题

方法一、改用visibility:hidden,虽然不可见了,但是仍然会占据页面上的空间 方法二、利用延时 setTimeout(function(){ document.getElementById("id").style.display="none" }, 1000); //1s是动画时间。

qq_39262418的博客 1784

CSS过渡失效的原因

display: none 和display: block之间的切换也会出现过渡效果失效的情况。 原因:display: none是销毁当前dom节点,再次切换为display: block时会再创建节点,此时css选择器会重新赋予上去。所以不存在渐变动画。 解决方法: 用opacity(透明度)去替代。 用visibility : hidden和visibility: visible进行替换 ...

宝子的博客 1367

动画——隐藏、过渡

动画相关——隐藏、过渡

m0_48462345的博客 361

CSS transition属性不生效,没有效果

CSS transition属性不生效,没有效果1、不生效2、生效3、效果展示 最近在学HTML+CSS,今天开始做第一个项目,其中需要实现图片缓慢平移的效果,老师教我们用transition来实现,但是我自己编写的时候,发现transition并没有效果。研究一番之后发现,需要给属性添加一个初值才能够激发属性transition。 1、不生效 .header .logo a{ position...

Lanhaorena的博客 1万+

jquery css 实现div隐藏显示过渡效果

css的display none和block实现隐藏展示效果比较生硬,自己参考资料实现了过渡一个效果,可通过修改 transitionz中秒来调整过渡强度

bbkkkk的专栏 648
上一篇: Vue中如何正确的使用jsx语法书写代码
下一篇: element必填校验 输入空格问题,修改正则表达式、请求拦截器,实现所有输入框去除首尾空格
归来巨星
归来巨星 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄7年 5391粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归来巨星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值