CSS realizes process navigation effect (three methods)

CSS realizes process navigation effect (three methods)

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

Recommend

jQuery implements percentage scoring progress bar

This article shares the specific code of jquery t...

Detailed explanation of how to use the Vue date time picker component

This article example shares the specific code of ...

Solution to MySQL Chinese garbled characters problem

1. The Chinese garbled characters appear in MySQL...

Understanding and using callback functions in JavaScript

Table of contents Overview What are callbacks or ...

VSCode+CMake+Clang+GCC environment construction tutorial under win10

I plan to use C/C++ to implement basic data struc...

Sample code for highlighting search keywords in WeChat mini program

1. Introduction When you encounter a requirement ...

Teach you how to subcontract uniapp and mini-programs (pictures and text)

Table of contents 1. Mini Program Subcontracting ...

How to monitor Linux server status

We deal with Linux servers every day, especially ...

Node.js sends emails based on STMP protocol and EWS protocol

Table of contents 1 Node.js method of sending ema...

Tutorial on how to create a comment box with emoticons using HTML and CSS

HTML comment box with emoticons. The emoticons ar...

Win10 configuration tomcat environment variables tutorial diagram

Before configuration, we need to do the following...

Tutorial on configuring and using i3 window manager in Linux

In this article, I will show you how to install a...

Detailed explanation of three commonly used web effects in JavaScript

Table of contents 1 element offset series 1.1 Off...

Goodbye Docker: How to Transform to Containerd in 5 Minutes

Docker is a very popular container technology. Th...