关于这次作业的几个问题

关于这次作业的几个问题

以下是我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>CSS运用</title>
    <style type="text/css">
       /*补充样式*/
    .header{background-color:grey;font-size:30px;}
    .body{background-color:#f2f2f2;}
    span{font-size:20px;color:blue;}
    .info{color:grey;}
    .colorgreen{color:green;}
    .colorgreen a{color:green;}
    .colorred{color:red;}
    .coloryellow{color:yellow;}
    .footer{background-color:grey;font-size:30px;}
    .colorgreen a:visited{color:purple;}
    .colorgreen a:hover{color:blue;}
    </style>
</head>
<body>
<div class="header">慕课网</div>
<div class="body">
    <div>
        <p><span>HTML超文本标记语言</span>,“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。</p>
        <p class="info">课程内容</p>
        <ul>
            <li class="colorgreen"><a href="#1">html基础标签</a>
                <ol class="colorred">
                    <li>段落标签</li>
                    <li>图像和超链接标签</li>
                    <li>列表标签</li>
                </ol>
            </li>
            <li class="colorgreen">html表格标签</li>
            <li class="colorgreen">html表单标签</li>
        </ul>            
    </div>
    <div>
        <p><span>CSS层叠样式表</span>(Cascading Style Sheets),样式定义如何显示HTML元素。</p>        
        <p class="info">课程内容</p>
        <ul>
            <li  class="colorgreen"><a href="#2">CSS基础语法</a></li>
            <li  class="colorgreen">CSS使用方法
                <ol class="colorred">
                    <li>行内样式</li>
                    <li>内部样式</li>
                    <li>外部样式</li>
                </ol>
            </li>
            <li class="colorgreen">CSS选择器
                <ul class="coloryellow">
                    <li>ID选择器</li>
                    <li>class选择器</li>
                    <li>标签选择器</li>
                </ul>
            </li>
        </ul>            
    </div>
</div>
<div class="footer">慕课网 只学有用的</div>    
</body>
</html>

然后我的问题主要在链接a的样式设置上:

  1. 我开始是给a标签中设置的colorgreen的类,然后发现这样子会导致a标签内的内容始终是绿色的,无视hover样式。

    http://img1.sycdn.imooc.com//climg/5cdecf190001dd9507070058.jpg

  2. 于是我把colorgreen类放到li标签中,样式表如图

    http://img1.sycdn.imooc.com//climg/5cdee17a0001166f06150103.jpg

    此时,链接的文字是绿色,鼠标过去也会变蓝色,但是点击之后,不会变成visited的紫色。这里是我第一个疑惑的点,为什么这里会影响到visited属性?于是我将visited也列出来写,如图:

    http://img1.sycdn.imooc.com//climg/5cdee2b90001118806190090.jpg

    噗!……这回又没问题了什么鬼………………

    试着试着,这回又没问题了,不用加.colorgreen来增加权重了…

    那我就问一下,我的代码加不加这个. colorgreen 在hover和visited前面是不是没有什么区别……就是对于伪类是不是不需要考虑它和其他样式的权重关系,只需要注意其自身的顺序就可以了?然后伪类自身这四个是完全通过顺序来影响优先级,而和他们四个互相的权重无关吗?(其实这个问题没必要……因为都是相对于同一个选择器,一定是一样的权重值…………但是当我为了某种目的去改变其中一个的权重,比如.class a:hover,这时其他的三个不用管,还是也必须列出来加上.class来让权重一样?)

    问题有点多。老师有时间再回复我吧。我都嫌自己啰嗦……感谢,感谢


正在回答

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

1回答

同学你好, 1、 老师这边测试, 直接给a设置colorgreen类, 可以设置hover样式。 

2、另,试着将colorgreen类放到li标签中, 老师这边,可以实现点击后出现紫色。

在测试代码效果的过程中, 可能是由于浏览器缓存的原因, 导致修改后的效果没有出现, 可以清除缓存再试试。

3、 伪类也需要考虑权重。为了让链接被访问过visited后, 可以再次实现鼠标移入的效果。 如果是一样的权重, 需要注意visited和hover的书写的顺序(hover在visited后面)。 

但是如果是如下图这种情况, hover的权重高于visited的权重, 所以hover也可以写在visited前面, 实现被访问过后鼠标移入字体变蓝色的效果。

http://img1.sycdn.imooc.com//climg/5cdf753b0001d20105000285.jpg

所以, 按着同学说的情况: 设置.class a:hover,这时其他的三个可以不用管,可以不用添加class也能实现效果

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

  • Rockets总冠军 提问者 #1
    非常非常感谢老师的回复。 老师的意思就是: 将class属性放在a标签内,也可以设置hover来实现效果;然后class放li标签内也不需要讲visited写出来实现效果;以上可能都是未清除缓存的原因。 那就是我的代码,将class放到a中,设置hover之后,效果都可以成功实现吗? 最后再请老师点评一下我的代码,就是哪里比较明显的需要优化什么的? 感谢老师!
    2019-05-18 11:17:50
  • 好帮手慕慕子 回复 提问者 Rockets总冠军 #2
    你好, 1、 需要写visited的样式才能有点击后的效果呀, 针对你的第二条疑惑, 老师的意思是你可以使用.colorgreen a:visited {color: purple;}这种写法。 2、 另, 直接将class放到a中,设置hover, 老师这边测试是可以成功实现效果。 3、 效果实现的很好,代码也很简洁, 可以不用优化哦。 继续加油~~~祝学习愉快!!!
    2019-05-18 12:05:12
  • Rockets总冠军 提问者 回复 好帮手慕慕子 #3
    嗯嗯,谢谢老师,可能因为我印象里visited的属性是默认的,就是不自己设置,它也是默认的visited颜色是purple,但是这里我不自己写出来就没有紫色的效果。感谢老师的回答!!
    2019-05-18 13:05:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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