繁体   English   中英

使伪元素出现,然后在X时间后再次消失

[英]Making pseudo-element appear, and then disappear again after X amount of time

我试图操纵我的body标签的:before伪元素在一段时间后出现,然后在几秒钟后再次消失。

body:before {
  content: " ";
  width: 100%;
  height: 100%;
  position: fixed;
  z-index: 100;
  top: 0;
  left: 0;
  background: #color;
}

因此,从本质上讲,我试图在X秒钟后显示带有伪元素的完整视口叠加层,然后经过一段时间后,我想再次将其删除!

我该如何解决?

您不能操纵伪元素,因为它们不在DOM中。

但! 使用可以删除的类,您可以实现这一目标。

 setTimeout(function(){ $("body").removeClass("red"); },2000); 
 body{ height:2000px; } body.red:before { content: " "; width: 100%; height: 100%; position: fixed; z-index: 100; top: 0; left: 0; background: #f00; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <body class="red"> Blah blah bla... Ya ya ya... </body> 

您可以使用纯CSS执行以下操作:

 body:before { content: " "; width: 100%; height: 100%; display: block; position: fixed; z-index: 100; top: 0; left: 0; background: red; animation: show 5s ease-out forwards; } @keyframes show{ 0%{ content: ""; opacity: 0; } 20%{ content: ""; opacity: 1; } 90%{ content: ""; opacity: 1; } 100%{ content: none; opacity: 0; } } 
 Hello World! 

要选择持续时间,只需调整字母“ s”前的数字即可,秒表示第二个:

animation: show ***5s*** ease-out forwards;

您不能在JS中更改伪元素,因为它只能处理DOM元素

所以我要做的是在JavaScript中创建一个创建类,并在4秒钟后将其删除

这是我的方法:

的HTML

<body class="ID">

的CSS

.ID:before {
     content: " ";
     width: 100%;
     height: 100%;
     position: fixed;
     z-index: 100;
     top: 0;
     left: 0;
     background: red;
     }

的JavaScript

setTimeout(() => {
document.querySelector('.ID').classList.remove('ID')
}, 4000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM