关于使用:firstchild设置颜色

关于使用:firstchild设置颜色

老师,在完成作业中间,在实现颜色改变阶段时我一开始使用了这种方法:先把li的firstchild设置为红色,然后再用js实现触发事件。

这个时候我的排他设置对其余li都管用,但是第一个始终是红色,请问为什么呢?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: o;
margin: 0;
}
.center-wrap {
width: 1000px;
margin: 50px auto;
position: relative;
}
.title {
float: left;
font-size: 19px;
}
.nav-r {
float: right;
height: 36px;
}
.list {
list-style: none;
float: left;
}
.list li {
float: left;
margin-right: 50px;
margin-top: 7px;
cursor: pointer;
}
.list li:first-child {
color: red;
}
.btn {
float: right;
background-color: black;
color: white;
height: 36px;
width: 100px;
font-size: 15px;
border-style: none;
cursor: pointer;
}
.dash {
background-color: red;
width: 37px;
height: 3px;
position: absolute;
top:36px;
left:488px
}
</style>
</head>
<body>
<div class = 'center-wrap'>
<p class="title">慕课手机</p>
<div class = 'nav-r'>
<ul class = 'list' id = 'list'>
<li>首页</li>
<li>外观</li>
<li>配置</li>
<li>型号</li>
<li>说明</li>
</ul>
<button class = 'btn' id = 'btn'>立即购买</button>
</div>
<div class = 'dash' id="dash"></div>
</div>
<script>
var list = document.getElementById('list');
var btn = document.getElementById('btn');
var dash = document.getElementById('dash');
var lis = list.getElementsByTagName('li');
list.onmouseover = function (e) {
if (e.target.tagName.toLowerCase() == 'li') {
for (var i = 0; i < lis.length; i++) {
lis[i].style.color = '';
}
e.target.style.color = 'red';
}
}
</script>
</body>
</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2022-03-08 13:46:15

同学你好,left值加的也是行内样式,覆盖掉了css样式值,例如:

https://img1.sycdn.imooc.com//climg/6226ed0d0941a6fe14080459.jpg

https://img1.sycdn.imooc.com//climg/6226ed1d0931ead106220486.jpg

同学的代码中移除样式,移除的是style的,自己本身的还存在,所以显示红色

https://img1.sycdn.imooc.com//climg/6226ed7d09b7258515640617.jpg

自己再理解下。

好帮手慕久久 2022-03-08 11:47:10

同学你好,解答如下:

1、js的“排他”操作,只是把所有li的行内样式去掉了:

https://img1.sycdn.imooc.com//climg/6226d10b09d3962d05920057.jpg

第一个li本身还有设置在style中的样式:

https://img1.sycdn.imooc.com//climg/6226d12e0942862405580120.jpg

该样式是没法通过lis[i].style.color = ''的形式去掉的,所以无法去掉第一个li的字体颜色。

2、建议给第一个li也设置行内样式:

https://img1.sycdn.imooc.com//climg/6226d1810993f18504550141.jpg

https://img1.sycdn.imooc.com//climg/6226d1a009a2383105220120.jpg

祝学习愉快!

  • 提问者 Cynthia4660559 #1

    那请问为什么left right这种不是行内式的css样式却可以修改呢?

    2022-03-08 11:52:08
  • 好帮手慕久久 回复 提问者 Cynthia4660559 #2

    不是很理解同学的意思,可以举个具体的例子,老师再给你解释。

    2022-03-08 12:34:45
  • 提问者 Cynthia4660559 回复 好帮手慕久久 #3

    比如我们用这个语句来设置一个div的位置,它的left值我也是通过css语句来写的,不是行内式,为什么就可以实现呢?

    dash.style.left = 488+(n-1)*82+'px';


    2022-03-08 12:37:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师