老师帮忙检查一下代码,谢谢
来源:2-8 项目作业
慕的地7233660
2022-05-07 17:31:48
<style>
* {
margin: 0;
padding: 0;
}
.center-wrap {
position: relative;
box-sizing: border-box;
font-size: 14px;
width: 1152px;
margin: 0 auto;
margin-top: 30px;
}
.log {
float: left;
font-size: 24px;
}
.slide-nav {
float: right;
position: relative;
}
.slide-nav ul {
width: 360px;
overflow: hidden;
}
.slide-nav li {
float: left;
width: 50px;
height: 30px;
list-style: none;
margin-right: 10px;
cursor: pointer;
}
.slide-nav ul li:hover {
color: #f01400;
}
.slide-nav li:last-child {
margin-right: 0;
}
.slide-nav li a {
text-decoration: none;
color: black;
}
.btn {
position: absolute;
right: 0;
background-color: black;
color: wheat;
}
.em {
width: 30px;
height: 4px;
background-color: #f01400;
position: absolute;
top: 20px;
left: 0;
transition: left 0.5s ease 0s;
}
</style>
<section class="center-wrap">
<div class="log">慕课手机</div>
<nav class="slide-nav">
<ul id="list">
<li data-n="0">
<a href="#">首页</a>
</li>
<li data-n="1">
<a href="#">外观</a>
</li>
<li data-n="2">
<a href="#">配置</a>
</li>
<li data-n="3">
<a href="#">型号</a>
</li>
<li data-n="4">
<a href="#">说明</a>
</li>
</ul>
<div class="em" id="em"></div>
</nav>
<button class="btn">立即购买</button>
</section>
<script>
//得到元素
var em = document.getElementById('em')
var list = document.getElementById('list')
//绑定事件监听,用事件委托
list.onmouseover = function (e) {
if (e.target.tagName.toLowerCase() == 'li')
t = e.target.getAttribute('data-n')
console.log(t)
em.style.display = 'inline-block'
em.style.left = 60 * t + 'px'
}
</script>
问题描述:1,我给li设置了:hover属性,为什么鼠标悬停上去的时候li标签的颜色没有
改变,2,为什么鼠标触碰到li标签的margin区域,添加的监听才会起效果?1回答
好帮手慕小李
2022-05-07
同学你好,解答如下:
1、给li设置hover不变色是因为li中的文字,是由a标签进行包裹的,那么a标签是不继承父级的color属性的,所以这里需要将hover挪到a标签上,如下:

效果如下:

2、在list移入事件中,我们尝试打印一下console.log(e.target.tagName)看看效果:

这里同学会发现,当我们移入li的时候其实并不都是li,因为冒泡的机制,这里可能是a也可能是li也可能是ul。那么当我们鼠标移入到margin上时其实是不生效的,因为margin是外边距(盒模型的知识点),那么js会认为这里并不属于li的一部分了。所以继续向上冒泡。解释如下:

那么这里如要优化同学可以看看以下的思路:
把margin-left换成padding左右如下:

因为padding是内边距,如果鼠标移入padding区域,那么js会判定为它还在li内部,或者已经在li内部了。
同学自己试试,祝学习愉快!
相似问题