CSS realizes the process navigation effect. The specific contents are as follows: ::tip Use pure CSS for online process navigation effects. This article uniformly adopts flex layout, you can also use other layouts to achieve it, the core principle remains unchanged::: ## Method 1: Cropping This method is not supported in IE Use clip-path: polygon() to directly draw a triangle. The only point you need to calculate is the approximate percentage. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <style> .nav-box { display: flex; list-style: none; font-size: 14px; } .nav-box li { white-space: nowrap; color: #019fe9; background: #edf9ff; counter-increment: listCounter; clip-path: polygon(87% 0, 100% 50%, 87% 100%, 0 100%, 13% 50%, 0 0); line-height: 40px; padding: 0 25px; margin-right: -10px; } .nav-box li::before { content: counter(listCounter) "-"; } .nav-box .active { color: #fcfefe; background: #009fe9; } .nav-box .active ~ li { color: #8e8e8e; background: #ebedf0; } </style> </head> <body> <!-- Container --> <ol class="nav-box"> <li><a href="">Rule Description</a></li> <li><a href="">Participate in the event</a></li> <li class="active" aria-current="true"><a href="">Participate in the lucky draw</a></li> <li><a href="">Prize Distribution</a></li> <li><a href="">View Results</a></li> </ol> </body> </html> ## Method 2: Using Dislocation flex + transform : skewX(); implement the prefix -ms- in ie9+ + This method also fully utilizes before and after. + Principle 1 --- Use before + after to divide into upper and lower halves <Badge text="[This method has a flaw that it needs to complete the first tail separately]" type="warn"/> + Principle 2 --- Use before + after to divide into left and right halves <Badge text="[This method only processes the first before or after to avoid the problem of the first one]" type="success"/> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <style scoped> .nav-box { display: flex; list-style: none; font-size: 14px; } .nav-box li { white-space: nowrap; color: #019fe9; padding: 0 15px 0 25px; line-height: 40px; margin-left: 3px; position: relative; z-index: 99; } .nav-box li:first-child{ background: #edf9ff; margin-right: 7px; } .nav-box .active:first-child{ background: #019fe9; } .nav-box li:first-child::before, .nav-box li:first-child::after{ left: 7px; } .nav-box li::before, .nav-box li::after { content: ""; position: absolute; left: 0; height: 50%; width: 100%; background: #edf9ff; z-index: -1; } .nav-box li::before { top: 0; transform: skew(30deg); } .nav-box li::after { bottom: 0; transform: skew(-30deg); } .nav-box .active { color: #d7effb; } .nav-box .active::before, .nav-box .active::after { background: #009fe9; } .active ~ li { color: #909091; } .active ~ li::before, .active ~ li::after { background: #ebedf0; } </style> </head> <body> <!-- Container --> <ol class="nav-box"> <li class="active">1-Rule Description</li> <li>2- Participate in activities</li> <li>3- Participate in the lucky draw</li> <li>4- Prize Distribution</li> <li>5-Participation Results</li> </ol> </body> </html> ## Method 3: border triangle Use border to generate front and back triangles. The disadvantage is that the index needs to be defined by yourself. CSS counters cannot be used without labels. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <style> .nav-box{ height:40px; line-height:40px; list-style: none; padding:0; display:flex; font-size:14px; overflow: hidden; } .nav-box li{ padding:0 10px 0 10px; margin-right: 18px; white-space: nowrap; position:relative; color:#019fe9; background:#edf9ff; } /* Triangle */ .nav-box li:before,.nav-box li:after{ content:''; position:absolute; width: 0; height: 0; } .nav-box li:before{ right: -16px; border: solid transparent; border-width: 20px 0 20px 16px; border-left-color:#edf9ff; z-index:2; } /* White line */ .nav-box li:after{ top: -3px; left: -18px; border: solid #edf9ff; border-width: 23px 0 23px 18px; border-left-color: transparent; z-index: 1; } .nav-box .active{ color: #fff; background:#009fe9; } .nav-box .active ~ li{ color:#8e8e8e; background:#ebedf0; } .nav-box .active:before{ border-left-color:#009fe9; } .nav-box .active:after{ border-color: #009fe9; border-left-color: transparent; } .nav-box .active ~ li:before{ border-left-color:#ebedf0; } .nav-box .active ~ li:after{ border-color: #ebedf0; border-left-color: transparent; } </style> </head> <body> <ol class="nav-box"> <li>1-Rules description</li> <li>2- Participate in activities</li> <li class="active">3- Participate in the lucky draw</li> <li>4- Prize Distribution</li> <li>5-Participation Results</li> </ol> </body> </html> Summarize The above is the CSS implementation of process navigation effect (three methods) introduced by the editor. I hope it will be helpful to everyone. If you have any questions, please leave me a message and the editor will reply to you in time. I would also like to thank everyone for their support of the 123WORDPRESS.COM website! If you find this article helpful, please feel free to reprint it and please indicate the source. Thank you! |
<<: Summary of using MySQL isolation columns and prefix indexes
>>: How to build an ELK log system based on Docker
This article shares the specific code of jquery t...
This article example shares the specific code of ...
1. The Chinese garbled characters appear in MySQL...
Table of contents Overview What are callbacks or ...
I plan to use C/C++ to implement basic data struc...
1. Introduction When you encounter a requirement ...
Table of contents 1. Mini Program Subcontracting ...
We deal with Linux servers every day, especially ...
Table of contents 1 Node.js method of sending ema...
HTML comment box with emoticons. The emoticons ar...
Before configuration, we need to do the following...
In this article, I will show you how to install a...
Effect (source code at the end): accomplish: 1. D...
Table of contents 1 element offset series 1.1 Off...
Docker is a very popular container technology. Th...