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

When to use table and when to use CSS (experience sharing)

The main text page of TW used to have a width of 8...

JavaScript function call classic example code

Table of contents JavaScript function call classi...

Detailed graphic explanation of mysql query control statements

mysql query control statements Field deduplicatio...

Nexus uses API to operate

Nexus provides RestApi, but some APIs still need ...

15 Vim quick reference tables to help you increase your efficiency by N times

I started using Linux for development and enterta...

A Deep Dive into JavaScript Promises

Table of contents 1. What is Promise? 2. Why is t...

JavaScript to achieve all or reverse selection function

This article shares the specific code of JavaScri...

Detailed explanation of MySQL string concatenation function GROUP_CONCAT

In the previous article, I wrote a cross-table up...

Implementing timed page refresh or redirect based on meta

Use meta to implement timed refresh or jump of th...

Example of how to configure the MySQL database timeout setting

Table of contents Preface 1. JDBC timeout setting...

How to compare two database table structures in mysql

During the development and debugging process, it ...

Detailed explanation of Linux commands and file search

1. Perform file name search which (search for ...

How to create, save, and load Docker images

There are three ways to create an image: creating...

Summary of the Differences between SQL and NoSQL

Main differences: 1. Type SQL databases are prima...

Linux implements automatic and scheduled backup of MySQL database every day

Overview Backup is the basis of disaster recovery...