CSS 转换:为什么我的 CSS 转换不能像我预期的那样工作?
CSS transitions: Why won't my CSS transition work as I expect?
我的页面顶部有一条闪现消息 div,用于在站点要向用户显示任何消息时显示。
我希望闪现消息在几秒钟后淡出。我正在使用 CSS 转换。
这是我的代码:
.flash {
position: fixed;
opacity: 1;
visibility: visible;
transition: opacity 2s ease-in, visibility 2s ease-in;
}
.hide {
visibility: hidden;
opacity: 0;
}
document.querySelectorAll('.flash').forEach(function(flash){
flash.classList.toggle('hide');
})
我希望在页面加载时,div 在淡出之前可见。但是,在 Safari 中,当页面加载时,.flash
是不可见的。
在 Chrome 中,页面加载并且 .flash
div 按预期淡出。但是,在重新加载页面时,div 仍然附加了 .hide
class,因此闪现消息仍然不可见。 (我可以在 HTML 中存储状态?!!)奇怪的是,在 Chrome 中,如果我在重新加载页面时使用开发人员工具检查文档中的元素,它就可以工作。
现在我很困惑。
为什么 .hide
在页面重新加载后仍然附加到 div?
为什么 Safari 根本无法显示 div?
编辑:回复评论后,您需要做的是触发焦点事件的淡出。
.flash:focus {
//use the fadeout code here
}
原因是切换,您的浏览器将页面状态保存在浏览器的缓存中,但不会在重新加载、打开和关闭时动态更改 css 的 javascript。
不是用 javascript 操纵 css,而是用 css 淡出 google。
.fade-out {
animation: fadeOut ease 10s;
-webkit-animation: fadeOut ease 10s;
-moz-animation: fadeOut ease 10s;
-o-animation: fadeOut ease 10s;
-ms-animation: fadeOut ease 10s;
}
@keyframes fadeOut {
0% {
opacity:1;
}
100% {
opacity:0;
}
}
这样就顺畅多了,用开发者工具测试也更方便。
我的页面顶部有一条闪现消息 div,用于在站点要向用户显示任何消息时显示。
我希望闪现消息在几秒钟后淡出。我正在使用 CSS 转换。
这是我的代码:
.flash {
position: fixed;
opacity: 1;
visibility: visible;
transition: opacity 2s ease-in, visibility 2s ease-in;
}
.hide {
visibility: hidden;
opacity: 0;
}
document.querySelectorAll('.flash').forEach(function(flash){
flash.classList.toggle('hide');
})
我希望在页面加载时,div 在淡出之前可见。但是,在 Safari 中,当页面加载时,.flash
是不可见的。
在 Chrome 中,页面加载并且 .flash
div 按预期淡出。但是,在重新加载页面时,div 仍然附加了 .hide
class,因此闪现消息仍然不可见。 (我可以在 HTML 中存储状态?!!)奇怪的是,在 Chrome 中,如果我在重新加载页面时使用开发人员工具检查文档中的元素,它就可以工作。
现在我很困惑。
为什么 .hide
在页面重新加载后仍然附加到 div?
为什么 Safari 根本无法显示 div?
编辑:回复评论后,您需要做的是触发焦点事件的淡出。
.flash:focus {
//use the fadeout code here
}
原因是切换,您的浏览器将页面状态保存在浏览器的缓存中,但不会在重新加载、打开和关闭时动态更改 css 的 javascript。
不是用 javascript 操纵 css,而是用 css 淡出 google。
.fade-out {
animation: fadeOut ease 10s;
-webkit-animation: fadeOut ease 10s;
-moz-animation: fadeOut ease 10s;
-o-animation: fadeOut ease 10s;
-ms-animation: fadeOut ease 10s;
}
@keyframes fadeOut {
0% {
opacity:1;
}
100% {
opacity:0;
}
}
这样就顺畅多了,用开发者工具测试也更方便。