扫码关注官方订阅号
click 123
123
这是我写的代码,为什么通过定时器添加就有效果?而直接添加却没用
欢迎选择我的课程,让我们一起见证您的进步~~
可能是transition属性和display:hidden 结合使用有问题吧。如果你在执行了modal.style.display = 'block'; 之后阻塞一下,alert();动画效果就会展示出来。浏览器处理的时候可能是因为元素是隐藏的就把动画效果去掉了。
<html> <head> <style> .modal{ position: absolute; border: 1px solid black; top: 200px; left:200px; transform: translate(0, -100px); transition: transform 2s; opacity: 0; } .modal.change{ transform: translate(0, 0); opacity: 1; } </style> <script> window.onload = function() { var modal = document.getElementsByClassName('modal')[0]; var btn = document.getElementById('btn'); btn.onclick = function () { //modal.style.display = 'block'; modal.className += ' ' + 'change'; //setTimeout(function(){modal.className += ' ' + 'change';}, 1) //这样就有效果 } } </script> </head> <body> <button id="btn">click</button> <p class="modal">123</p> </body> </html>
用opacity:0代替display:none;
因为是动画显示效果跟display没关系,这个属性没有中间状态的!
display
顺便接上面大神的代码:将其 Opacity 属性修改为 visibility 属性,毕竟这是一个显示或隐藏的问题,而不是透明度的问题,展示效果是差不多的,没试过哪种性能好,严谨严谨哈哈哈
Opacity
visibility
<html> <head> <style> .modal{ position: absolute; border: 1px solid black; top: 200px; left:200px; transform: translate(0, -100px); transition: transform 2s; visibility: hidden; } .modal.change{ transform: translate(0, 0); visibility: visible; } </style> <script> window.onload = function() { var modal = document.getElementsByClassName('modal')[0]; var btn = document.getElementById('btn'); btn.onclick = function () { //modal.style.display = 'block'; modal.className += ' ' + 'change'; //setTimeout(function(){modal.className += ' ' + 'change';}, 1) //这样就有效果 } } </script> </head> <body> <button id="btn">click</button> <p class="modal">123</p> </body> </html>
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
可能是transition属性和display:hidden 结合使用有问题吧。如果你在执行了modal.style.display = 'block'; 之后阻塞一下,alert();动画效果就会展示出来。浏览器处理的时候可能是因为元素是隐藏的就把动画效果去掉了。
用opacity:0代替display:none;
因为是动画显示效果跟
display没关系,这个属性没有中间状态的!顺便接上面大神的代码:
将其
Opacity属性修改为visibility属性,毕竟这是一个显示或隐藏的问题,而不是透明度的问题,展示效果是差不多的,没试过哪种性能好,严谨严谨哈哈哈