HTML+CSS+JavaScript realizes the display of selected effect following the mouse movement

HTML+CSS+JavaScript realizes the display of selected effect following the mouse movement

1. Display effect:

2, html structure

<div class="process_list-lpu">
                <div class="process_line"></div>
                <div class="content_list">
                    <ul>
                        <li><a href="javascipt:;">End customer get product<b>1</b></a> </li>
                        <li><a href="javascipt:;">Log in to EFOSE website and present installation or maintenance requirements <b>2</b></a></li>
                        <li><a href="javascipt:;">EFOSE prefer contact service point<b>3</b></a> </li>
                        <li style="margin-left:115px;"><a href="javascipt:;">Customer contact service point to get service<b>4</b></a> </li>
                        <li><a href="javascipt:;">Customer pays the bill directly or EFOSE pays the maintenance cost<b>5</b></a> </li>
                    </ul>
                    <div class="clear"></div>
                </div>
            
            </div>

3. Main CSS styles

.line-lpu{ height:55px; position:relative; width:100%; overflow:hidden;}
    .line-lpu span{ width:43px; height:46px; background:url('https://www.efose.com/images/banners/lpu_03.png') no-repeat; position:absolute;top:0;}
    .border-lpu{border-bottom:1px solid #959595; height:23px; }
     .join-lpu li{ width:19%; float:left; margin-right:8px;background:none; padding:0; }
    .join-lpu li a{ display:block; color:#606060; text-decoration:none; border:1px solid #959595; min-height:215px; padding:10px;position:relative; overflow:hidden;} 
    .join-lpu li a:hover{border:1px solid #337ab7;}
    .join-lpu li b{ font-size:60px; position:absolute; bottom:7px; right:-1px; font-style:italic; color:#c7c7c7;}
    .clear{clear:both;}
    .step-lpu span{ background:url('https://www.efose.com/images/banners/icon-lpu.png') no-repeat; display:block; width:75px; height:65px; margin-left:28px;}
    .step-lpu .icon0{ background-position:0 0;}
    .step-lpu .icon1{ background-position:0 -70px;}
    .step-lpu .icon2{ background-position:0 -140px;}
    .step-lpu .icon3{ background-position:0 -204px; height:58px; margin-bottom:7px;}
    .step-lpu .icon4{ background-position:0 -260px;}

4. Writing JavaScript

<script type="text/javascript">
        //Instantiate animationHover object window.onload = function(){
            var ah = new animationHover();  
            ah.init();
        }; 
        //Initialize label object function animationHover(){
            this.step = document.getElementById('step');
            this.stepLi = this.step.getElementsByTagName('li');
            this.line = document.getElementById('line');
            this.attr = null;
            this.timer = null;
            this.target = null;
                            
            }
        //Initialize event animationHover.prototype.init=function(){
            This = this;
            for(var i=0;i<this.stepLi.length;i++){
                this.stepLi[i].index=i;
                //Bind event to li tag this.stepLi[i].onmouseover=function(e){    
                    var myIndex=this.index;
                    This.onOver(This.line,(myIndex*162+55));
                    };
                this.stepLi[i].onmouseout=function(){            
                   This.line.style.left=myIndex*162+55+'px';
                    };    
                
                }
            };
        //Define the mouse processing function animationHover.prototype.onOver=function(obj,target){
            This=this;
            clearInterval(this.timer);
            This.target=target;
            timer = setInterval(function(){
                var target=This.target; //Stop target point var attrValue=parseInt(This.getStyle(obj,'left')); 
                var dx=target-attrValue; //"distance" from the target point
                var speed=1/10*dx;
                speed=speed>0?Math.ceil(speed):Math.floor(speed); 
                            //Prevent jitter caused by rounding if(target==attrValue) clearInterval(timer); 
                            //If you reach the target point, turn off the timer else{
                    obj.style.left=attrValue+speed+'px';
                }
                },100);
                                    
            };
        //Get the css attribute value of the current tag object animationHover.prototype.getStyle = function (obj, attr) {                    
            if (obj.currentStyle) {                
                return obj.currentStyle[attr];
            }else{
                return getComputedStyle(obj,false)[attr];
            }
            };    
</script>

Summarize

The above is the html+css+javascript that I introduced to you to achieve the selection effect of following the mouse movement. I hope it will be helpful to you. If you have any questions, please leave me a message and I will reply to you in time!

<<:  Common attacks on web front-ends and ways to prevent them

>>:  Detailed explanation of js event delegation

Recommend

Detailed explanation of the problems and solutions caused by floating elements

1. Problem Multiple floating elements cannot expa...

CSS new feature contain controls page redrawing and rearrangement issues

Before introducing the new CSS property contain, ...

...

How to uninstall MySQL 5.7 on CentOS7

Check what is installed in mysql rpm -qa | grep -...

Spring Boot layered packaging Docker image practice and analysis (recommended)

Table of contents 1. Prepare the springboot proje...

MySQL scheduled task example tutorial

Preface Since MySQL 5.1.6, a very unique feature ...

How to track users with JS

Table of contents 1. Synchronous AJAX 2. Asynchro...

How to achieve the maximum number of connections in mysql

Table of contents What is the reason for the sudd...

Complete steps to install Anaconda3 in Ubuntu environment

Table of contents Introduction to Anaconda 1. Dow...

What you need to know about responsive design

Responsive design is to perform corresponding ope...

Solution to the problem of session failure caused by nginx reverse proxy

A colleague asked for help: the login to the back...

Detailed graphic and text instructions for installing MySQL 5.7.20 on Mac OS

Installing MySQL 5.7 from TAR.GZ on Mac OS X Comp...

Analysis of the difference between emits and attrs in Vue3

Table of contents in conclusion Practice Analysis...

An example of using Lvs+Nginx cluster to build a high-concurrency architecture

Table of contents 1. Lvs Introduction 2. Lvs load...

Detailed explanation of JavaScript primitive data type Symbol

Table of contents Introduction Description Naming...