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

Common styles of CSS animation effects animation

animation Define an animation: /*Set a keyframe t...

Detailed explanation of the difference between docker-compose ports and expose

There are two ways to expose container ports in d...

Docker network principles and detailed analysis of custom networks

Docker virtualizes a bridge on the host machine. ...

Summary of commonly used time, date and conversion functions in Mysql

This article mainly summarizes some commonly used...

How to add Nginx to system services in CentOS7

Introduction After compiling, installing and solv...

CentOS 7.x docker uses overlay2 storage method

Edit /etc/docker/daemon.json and add the followin...

Usage and principles of provide and inject in Vue3

Preface: When passing data between parent and chi...

How to use the Linux nl command

1. Command Introduction nl (Number of Lines) adds...

Docker installation and deployment example on Linux

After reading the following article, you can depl...

In-depth explanation of the principle of MySQL Innodb index

introduction Looking back four years ago, when I ...

Explanation of the working principle and usage of redux

Table of contents 1. What is redux? 2. The princi...