This time I will bring you pure css3 code to realize the display of multiple elements in sequence. What are the things to note with pure css3 code to realize the display of multiple elements in sequence. The following is a practical case, let’s take a look.
@keyframes topIn { from { transform: translateY(-50px) } to { transform: translateY(0px) } }And use animation through animation in the target element.
<p></p> .topIn { animation: topIn 1s ease; }In this way, when the element is rendered into the DOM for the first time, there will be a top-to-bottom displacement animation effect. Of course, this effect is not what we want. Often we also add a transparency gradient from 0 to 1 to the animation.
@keyframes topIn { from { transform: translateY(-50px); opacity: 0; } to { transform: translateY(0px); opacity: 1; } }What should we do if we also want to be able to control the display timing of elements? A simpler way is to add a class style that controls animation to the target element only when animation effects are needed.
btn.addEventListener('click', function() { document.querySelector('.target').classList.add('topIn'); }, !1);But there is a problem with this. I believe that friends who have practiced it have already discovered this. We expect elements to be in an invisible state before entering the scene. But just by doing the above, the element can be seen before the animation starts. So what should be done? We can easily think of adding display: none or visibility: hidden to the element. But after display: none, the element does not occupy space. Therefore, if this is the case, it will cause confusion in the
page layout. So before we start, we add a new class to the element.
.aninode { visibility: hidden; }And add a new class to display the element.
.animated .aninode { visibility: visible; }The class that controls the animation effect also makes some adjustments to the css.
.animated .topIn { animation: topIn 1s ease; }The advantage of this is that we only need to add an animated to the class to achieve our effect.
Example demoThe complete code is as follows:
<p> </p><p></p> <button>show</button> <button>hide</button> .container { width: 100px; margin: 0 auto; } .aninode { visibility: hidden; } .animated .aninode { visibility: visible; } .target { width: 100px; height: 100px; background: orange; border-radius: 4px; margin: 20px 0; } .animated .topIn { animation: topIn 1s ease; } .animated .leftIn { animation: leftIn 1s ease; } .btn { width: 100px; height: 30px; border: 1px solid #ccc; outline: none; transition: 0.1s; } .btn:active { border: none; background: orange; color: #fff; } @keyframes topIn { from { transform: translateY(-50px); opacity: 0; } to { transform: translateY(0px); opacity: 1; } } @keyframes leftIn { from { transform: translateX(-50px); opacity: 0; } to { transform: translateX(0px); opacity: 1; } } var show = document.querySelector('.show'); var hide = document.querySelector('.hide'); var container = document.querySelector('.container'); show.addEventListener('click', function() { container.classList.add('animated'); }, !1); hide.addEventListener('click', function() { container.classList.remove('animated'); }, !1);Demo is displayed as follows:
See the Pen <a>NXKrPg</a> by Ormie (<a>@yangbo5207</a>) on <a>CodePen</a>.codepen demo addressBut this seems to be far from the effect we want. A little bit. Keep thinking. First of all, if you want the following elements to appear later than the previous elements, then you must control the delay time. We must have many classes that set the delay time.
.delay200 { animation-delay: 200ms; animation-fill-mode: backwards!important; } .delay400 { animation-delay: 400ms; animation-fill-mode: backwards!important; } .delay600 { animation-delay: 600ms; animation-fill-mode: backwards!important; } .delay800 { animation-delay: 800ms; animation-fill-mode: backwards!important; }animation-fill-mode: backwards!important; The purpose is to keep the transparency at 0 before the element appears. Prevent the element from appearing directly after adding animated. Add !important to prevent the animation-fill-mode property from being overwritten when using the animation abbreviation in a new class. If !important is not written here, the abbreviated form cannot be used in animation classes such as topIn. After this, we only need to add the above code to the css and make some changes to the html to achieve the effect we want.
See the Pen <a>mpbEEE</a> by Ormie (<a>@yangbo5207</a>) on <a>CodePen</a>.codepen demo addressThe complete code is as follows:
<p> </p><p> </p><p>春晓</p> <p>春眠不觉晓</p> <p>处处蚊子咬</p> <p>夜来风雨声</p> <p></p> <button>show</button> <button>hide</button> .container { width: 200px; margin: 0 auto; } .aninode { visibility: hidden; } .animated .aninode { visibility: visible; } .targets { margin: 20px 0; } .targets .item { border: 1px solid #ccc; margin: 10px 0; line-height: 2; padding: 2px 6px; border-radius: 4px; } .animated .topIn { animation: topIn 1s ease; } .animated .leftIn { animation-name: leftIn; animation-duration: 1s; } .btn { width: 100px; height: 30px; border: 1px solid #ccc; outline: none; transition: 0.1s; } .btn:active { border: none; background: orange; color: #fff; } @keyframes topIn { from { transform: translateY(-50px) } to { transform: translateY(0px) } } @keyframes leftIn { from { transform: translateX(-50px); opacity: 0; } to { transform: translateX(0px); opacity: 1; } } .delay200 { animation-delay: 200ms; animation-fill-mode: backwards!important; } .delay400 { animation-delay: 400ms; animation-fill-mode: backwards!important; } .delay600 { animation-delay: 600ms; animation-fill-mode: backwards!important; } .delay800 { animation-delay: 800ms; animation-fill-mode: backwards!important; } var show = document.querySelector('.show'); var hide = document.querySelector('.hide'); var container = document.querySelector('.container'); show.addEventListener('click', function() { container.classList.add('animated'); }, !1); hide.addEventListener('click', function() { container.classList.remove('animated'); }, !1);We found that the logic of js has not changed in any way. It's still just a matter of adding/removing animations where appropriate. Easter egg:In practice we will also encounter a more troublesome thing. It is to delay the writing of classes. We may not know which time differences will be used and how many elements will be used. If we write them all by hand, it will be too troublesome to repeat the work. So we can use js to insert dynamically. The code is as follows:
const styleSheet = getSheet(); var delay = 100; while (delay <p style="text-align: left;"><span style="color: #ff0000"></span></p> I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website! <p></p>Recommended reading:<p></p><p style="text-align: left;">CSS weird box model and standard box model How to use <a href="http://www.php.cn/css-tutorial-389392.html" target="_blank"></a><br></p><p style="text-align: left;">CSS to implement accordion layout<a href="http://www.php.cn/css-tutorial-389389.html" target="_blank"> </a><br></p>
The above is the detailed content of Pure css3 code realizes the display of multiple elements in sequence. For more information, please follow other related articles on the PHP Chinese website!

Article discusses CSS margin property, specifically "margin: 40px 100px 120px 80px", its application, and effects on webpage layout.

The article discusses CSS border properties, focusing on customization, best practices, and responsiveness. Main argument: border-radius is most effective for responsive designs.

The article discusses CSS background properties, their uses in enhancing website design, and common mistakes to avoid. Key focus is on responsive design using background-size.

Article discusses CSS HSL colors, their use in web design, and advantages over RGB. Main focus is on enhancing design and accessibility through intuitive color manipulation.

The article discusses the use of comments in CSS, detailing single-line and multi-line comment syntaxes. It argues that comments enhance code readability, maintainability, and collaboration, but may impact website performance if not managed properly.

The article discusses CSS Selectors, their types, and usage for styling HTML elements. It compares ID and class selectors and addresses performance issues with complex selectors.

The article discusses CSS priority, focusing on inline styles having the highest specificity. It explains specificity levels, overriding methods, and debugging tools for managing CSS conflicts.

Article discusses three methods to add CSS to HTML: inline, internal, and external. Each method's impact on website performance and suitability for beginners is analyzed.(159 characters)


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 English version
Recommended: Win version, supports code prompts!

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Chinese version
Chinese version, very easy to use

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.
