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;

高级数据结构之R树(R-tree) R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子... 阅读详情

相关推荐

[Pytorch案例实践001]手写MNIST数字识别

Pytorch实现手写数字识别,带完整数据集。

2403_83044722的博客 1115

transition设置display过渡无效

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

友人C君的博客 9347

centos7下100T存储扩容(LVM)至150T

查看新增磁盘情况lsblk,fdisk -l [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom vda 252:0 0 80G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2

tiyager的博客 1025

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

数理金融学笔记 Chap2 二叉树模型Binomial

2 二叉树模型与期权定价 Binomial Model and Option Pricing 文章目录2 二叉树模型与期权定价 Binomial Model and Option Pricing单期二叉树模型 One-step Binomial Model风险与无风险资产单期二叉树模型与无套利条件无套利定价 No Arbitrage Pricing风险中性定价 Risk Neutral PricingDelta套期保值 Delta Hedging两期二叉树模型 Two-Step Binomial Model

weixin_66831131的博客 2388

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3571

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

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

weixin_43623808的博客 2779

量化策略开发步骤系列(5)前向测试和统计意义

我们在第 4 部分,展示了我们策略的样本外测试并讨论了其结果。用于开发模型的数据是 2018 年至 2021 年的数据,测试数据是 2021 年至 2022 年的数据。但有一种方法可以更好地利用我们的数据。

码上助君的专栏 1850

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

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

jiaoqi6132的博客 1312

Vue3 - 实现用户上传本地视频文件到服务器+上传进度条+暂停续传+中断取消上传等,视频上传后可在线播放预览已上传的视频,视频文件上传视频回显示例代码(支持Element、Antd等upload组件

实现视频上传和视频预览,vue3实现视频上传功能,上传视频回显,视频流上传播放功能,vue与axios上传视频并显示上传进度,upload组件实现视频文件上传视频回显,upload组件实现视频上传及进度条展示,视频上传及实时进度条显示,视频上传过程中如何中断上传,VUE3+element 上传视频,大文件分片上传+断点续传,axios大文件切片上传,Vue3上传视频后如何播放预览,上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频,详细实现选择视频并上传到服务

🏆 前端领域优质创作者 3115

2.3 MMU Notifier(上):KVM 催生的页表变化通知

探讨了MMU Notifier机制的作用及其在虚拟化等场景中的应用。当CPU页表发生变更(如munmap、页面迁移等操作)时,需要通知拥有"第二套页表"的子系统(如KVM的EPT/NPT、IOMMU、GPU等)失效其映射。MMU Notifier通过订阅-通知机制实现这一功能,核心数据结构包括mmu_notifier订阅对象和回调接口mmu_notifier_ops。当CPU页表修改时,通过mmu_notifier_range描述变更范围,调用订阅者的回调函数进行同步,确保外部MMU与CPU页表一致性。

图形/计算GPU的驱动与虚拟化技术分享园地 1037

关于display,opacity,visibility的区别

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

qq_44875145的博客 1096

2026华为OD面试题084:贪心的商人

商人经营一家店铺,有 `number` 种商品。由于仓库限制,每件商品的最大持有数量是 `item[index]`。 每种商品每天有一个价格 `item_price[item_index][day]`。通过对商品买进和卖出获取利润,请给出商人在 `days` 天内能获取到的最大利润。 注:同一件商品可以反复买进和卖出。 输入描述: - 第一行输入商品数量 `number` - 第二行输入商人售货天数 `days` - 第三行输入 `number` 个整数,表示每件商品的最大持有数量 `item[in

琅嬛福地 274

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

v

Noctis99的博客 1513

计算机控制技术及应用

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

天空之上有座城 7778

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

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

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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、付费专栏及课程。

余额充值