4-2有3个疑惑

4-2有3个疑惑

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
*{padding:0;
margin:0;}
.page{
width:100%;
height:4043px;
background:url(mooc.png) no-repeat center top;
}
.nav{
width:160px;
height:auto;

position:fixed;
left:0;
top:50%;
margin-top:-103px ;
font-family: 'microsoft yahei';
}
.nav-li{
width:160px;
height:auto;
border-bottom:1px solid #fff;
background:#333;
text-align:center;
line-height:40px;
color:#fff;
font-size:16px;

}
.tit{
width:160px;
height:40px;
}
.nav-li ul{
width:160px;
height:122px;

background:#fff;
display:none;


}
.nav-li ul li{
width:160px;
height:40px;
border-bottom:1px dashed #666;
color:#333;
text-align: center;
line-height: 40px;
cursor:pointer;
}
.tit2{
width:160px;
height:40px;
position:relative;
}
.nav-li ul ul {
width:160px;
height:auto;
background:black;

top:40px;
left:160px;
position:absolute;


}
.nav-li:hover ul{
display:block;
}
.list3{
width:160px;
height:40px;
color:#fff;
}
/*.list3{
color:#fff;
display: none;
}
.nav-li ul li:hover .list3{
display:block;
}*/
</style>
</head>
<body>
<div class="page">
<div class="nav">
<div class="nav-li">
<div class="tit">标题</div>
<ul>
<li>
<div class="tit2">二级栏目</div>
<ul >
<li class="list3">三级栏目</li>
<li class="list3">三级栏目</li>
<li class="list3">三级栏目</li>
</ul>
</li>
<li>
二级栏目
</li>
<li>
二级栏目
</li>
</ul>
</div>
<div class="nav-li">
<div class="tit">标题</div>
<ul>
<li>
<div class="tit2">二级栏目</div>

</li>
<li>
二级栏目
</li>
<li>
二级栏目
</li>
</ul>

</div>
<div class="nav-li">
<div class="tit">标题</div>
<ul>
<li>
<div class="tit2">二级栏目</div>

</li>
<li>
二级栏目
</li>
<li>
二级栏目
</li>
</ul>

</div>
<div class="nav-li">
<div class="tit">标题</div>
<ul>
<li>
<div class="tit2">二级栏目</div>

</li>
<li>
二级栏目
</li>
<li>
二级栏目
</li>
</ul>

</div>
<div class="nav-li">
<div class="tit">标题</div>
<ul>
<li>
<div class="tit2">二级栏目</div>

</li>
<li>
二级栏目
</li>
<li>
二级栏目
</li>
</ul>

</div>
</div>
</div>
</body>
</html>

1、我在自己做三级栏目的时候使用的是ul li标签,可在给class为tit2的二级栏目设置relative后,3级列表需要top设为40px才能达到视频中的位置,为什么它的祖先元素选择了一级标题而不是二级栏目呢

2、二级栏目使用的无序列表默认前面无小圆点,等到三级栏目的时候,除非设置list-style-type为none,不然就默认显示每列前的空心圆

3、为何3级列表的文字颜色无法更改,像是继承了二级栏目就不能变了

正在回答

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

4回答

你好,(1)如下图,tit2元素是三级标签的兄弟元素,并不是父级元素。所以设置定位时,无法以它为参考

        http://img1.sycdn.imooc.com/climg//59746f620001d14a05720227.jpg

(2)二级栏目不设置ist-style-type为none,也是会显示小圆点的,你这个效果中,实现效果上看不到,是因为紧挨左侧,视觉效果上被遮盖了,把.page元素改为以下形式,在去掉.nav元素中的left:0;属性,即可看到二级栏目的小圆点。

.page{
    width:800px;
    height:4043px;
    background:url(mooc.png) no-repeat center top;
    margin-left:100px; 
}

(3)3级列表的文字颜色,基础了二级栏目.nav-li ul li元素的字体颜色,color:#333;因嵌套的层级太多,直接设置 .list3时找不到该元素,可把他的父级添加上,例:.nav-li .list3。

祝学习愉快!

  • weibo_飞来云去_0 提问者 #1
    感谢您的逐条解释,还有一个问题,针对第二条,按照设置将其右挪了一部分看到了小圆点,但不单独设置二级和三级标题无序列表的样式时,一个是实心圆,一个是空心圆,这怎么理解呢?
    2017-07-24 09:58:03
  • weibo_飞来云去_0 提问者 #2
    针对第一条,我在余下的二级列表都添加三级列表,并且给class为tit的标题添加了relative样式,按照找不到祖先元素就以body作祖先的原则,三级列表理应以body位置或一级标题位置作偏移,可所有的三级列表都以第一个标题作了偏移
    2017-07-24 10:39:14
  • weibo_飞来云去_0 提问者 #3
    可以帮忙解决下上面的疑问吗,对第一条
    2017-07-25 21:14:35
好帮手慕糖 2017-07-26 13:37:36

你好,可以这么认为的!祝学习愉快~

好帮手慕糖 2017-07-26 10:34:42

你好,关于你说的“所有的三级列表都以第一个标题作了偏移”。原因可参考下列代码,所有的三级标签,都设置了绝对定位,但是它的祖先元素.nav中有固定定位position:fixed;导致所有的三级标签,都相对于.nav定位,又所有的三级标签定位(定的位置,即top,left)都是一样的,导致所有的三级标签重合。

.nav-li ul ul {
    width:160px;
    height:auto;
    background:black;
    top:40px;
    left:160px;
    position:absolute;
}

另外,如下图,tit元素是三级标签父级父级的兄弟元素,所以tit元素添加了相对定位与三级标签没有关系。

http://img1.sycdn.imooc.com/climg//5977ff370001364605630307.jpg

建议:可给.nav-li ul添加相对定位。

祝学习愉快!

  • 提问者 weibo_飞来云去_0 #1
    实际上给ul定位relative后同一个二级列表还是定位有问题,我不折腾我自己的想法和助教你了。从回答中我能不能理解两点,1是祖先元素的兄弟元素不算是定位元素的祖先,2是relative、fixed定位的元素都能作为absolute绝对定位的参照物
    2017-07-26 11:39:22
好帮手慕糖 2017-07-24 10:36:16

你好,这个是浏览器识别的时候,它们不是同一级别下的。你可以再次嵌套可ul(如下代码);会发现这个的列表样式也不一样。一般情况下只会识别三级(即:嵌套3层ul);这个我们用到的不多,一半我们使用ul li是都会设置列表样式不显示。有兴趣可以了解下;

<div class="nav-li">
  <div class="tit">标题</div>
  <ul>
    <li>
      <div class="tit2">二级栏目</div>
      <ul >
        <li class="list3">
          <ul>
            <li>fvdvghf</li>
            <li>fvdvghf</li>
            <li>fvdvghf</li>
          </ul>
        </li>
        <li class="list3">三级栏目</li>
        <li class="list3">三级栏目</li>
      </ul>
    </li>
    <li>二级栏目</li>
    <li>二级栏目</li>
  </ul>
</div>

祝学习愉快!

  • 提问者 weibo_飞来云去_0 #1
    这样呐,原来都不一样,大脑跟不上浏览器的脑回路
    2017-07-24 10:42:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

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

在线咨询

领取优惠

免费试听

领取大纲

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