鼠标动画/选项卡
鼠标动画案列1
让span标签里面的文字随着鼠标的移动而移动
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Document</title> 7 <style> 8 body{ 9 position: relative; 10 } 11 div{ 12 width: 200px; 13 height: 200px; 14 background-color: aquamarine; 15 } 16 span{ 17 position: absolute; 18 top: 10px; 19 left: 10px; 20 } 21 </style> 22 <script> 23 window.onload=function(){ 24 var div=document.querySelector("div"); 25 var span=document.querySelector("span"); 26 div.onmousemove=function(e){ //e事件(event)对象 27 //获取鼠标位置 28 // console.log(e.x,e.y); 29 span.style.top=e.y+"px"; //上下是y轴,左右是x轴 e.y+"px"=>鼠标y轴的位置
30 span.style.left=e.x+"px"; //e.y+"px"=>鼠标x轴的位置
31 }
32 }
33 </script>
34 </head>
35 <body>
36 <div></div>
37 <span>这是一段文字</span>
38 </body>
39 </html>
鼠标动画案列2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
body{
position: relative;
}
ul{
width: 1000px;
min-width: 600px;
//flex布局
display: flex;
margin: 0 auto;
justify-content: space-between;
align-items: center;
list-style: none;
}
.big{
width: 300px;
height: 300px;
position: absolute;
top: 100px;
left: 100px;
display: none;
}
</style>
<script>
window.onload=function(){
var imgs=document.querySelectorAll("li img"); //所有小图片
var big=document.querySelector(".big"); //大图片
for(let i=0;i<imgs.length;i++){
imgs[i].onmousemove=function(e){
big.style.top=e.y+10+"px"; //上下是y轴,左右是x轴 e.y+10+"px"让鼠标离big有距离
big.style.left=e.x+10+"px";
big.src=this.src;
}
imgs[i].onmouseout=function(){
big.style.display="none";
}
imgs[i].onmouseenter=function(){
big.style.display="block";
}
}
}
</script>
</head>
<body>
<ul>
<li><img src="./a/toplist_a01.jpg" alt=""></li>
<li><img src="./a/toplist_a02.jpg" alt=""></li>
<li><img src="./a/toplist_a03.jpg" alt=""></li>
<li><img src="./a/toplist_a04.jpg" alt=""></li>
<li><img src="./a/toplist_a05.jpg" alt=""></li>
<li><img src="./a/toplist_a06.jpg" alt=""></li>
</ul>
<img class="big" src="./a/toplist_a01.jpg" alt="">
</body>
</html>
鼠标事件 onmouseenter 和 onmouseover 的区别
当为onmouseenter时不会冒泡,及不会重复触发父级事件,在进入父级时也不会触发子级事件。
当为onmouseover时会冒泡,只要进入到标签内就会触发标签内所有子集标签的事件,且在移动过程中父级标签会重复触发,出现连续触发的问题,可以用原生js方法阻止事件冒泡
选项卡
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
a{
text-decoration: none;
color: #333;
}
ul li{
display: inline-block;
width: 60px;
height: 20px;
}
ul li a{
display: block;
text-align: center;
background-color: #ccc;
}
.active{
background-color: aquamarine;
}
.content{
width: 186px;
height: 200px;
border: 1px solid #ccc;
}
</style>
<script>
window.onload=function(){
var as=document.querySelectorAll("li a");
for(var i=0;i<as.length;i++){
as[i].onclick=function(){
for(var j=0;j<as.length;j++){
as[j].className=""; //把li a里所有的className清除掉
}
this.className="active"; //让当前的li列表中的a标签加上active
}
}
}
</script>
</head>
<body>
<ul>
<li><a href="#" class="active" data-url="http://a">列表1</a></li>
<li><a href="#" data-url="http://b">列表2</a></li>
<li><a href="#" data-url="http://c">列表3</a></li>
</ul>
<div class="content">
</div>
</body>
</html>

浙公网安备 33010602011771号