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
1. Problem Multiple floating elements cannot expa...
Before introducing the new CSS property contain, ...
Check what is installed in mysql rpm -qa | grep -...
Table of contents 1. Prepare the springboot proje...
Preface Since MySQL 5.1.6, a very unique feature ...
Table of contents 1. Synchronous AJAX 2. Asynchro...
Table of contents What is the reason for the sudd...
Table of contents Introduction to Anaconda 1. Dow...
Responsive design is to perform corresponding ope...
A colleague asked for help: the login to the back...
Installing MySQL 5.7 from TAR.GZ on Mac OS X Comp...
Table of contents in conclusion Practice Analysis...
Table of contents 1. Lvs Introduction 2. Lvs load...
Table of contents Introduction Description Naming...