我需要实现这种布局,请注意当前项目,
3个子列表是当前项目的子项,
这里的问题是,如果我设置绝对位置和左边:0和宽度:100%;最大宽度将根据父母的宽度确定,
所以,
如何保持列表中的子项并使它们使用整个可用空间?
这是我现在的标记:(我能保留吗?)
<nav>
<ul class="main">
<li><a href="<?=base_url('grupo-cabau')?>"><?=lang('grupo-cabau')?></a></li>
<li class="active">
<a href="<?=base_url('nuestros-hoteles')?>"><?=lang('nuestros-hoteles')?></a>
<ul>
<li>
<ul>
<li>list
<ul>
<li><a href="<?=base_url('aquasol')?>">item</a></li>
<li><a href="<?=base_url('bahia')?>">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
</ul>
<ul>
<li>listt <ul>
<li><a href="#">item</a></li>
</ul>
</li>
</ul>
<ul>
<li>list
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="<?=base_url('trabaja-con-nosotros')?>"><item</a></li>
<li><a href="<?=base_url('contacto')?>">item</a></li>
</ul>
<ul class="lang">
<li>ESP
<ul>
<li>ENG</li>
<li>DEU</li>
</ul>
</ul>
</nav>
我目前的实施(几乎在那里):
header .wrapper > div nav ul.main > li.active > ul {
background: none repeat scroll 0 0 #FFFFFF;
display: block;
height: 141px;
left: 0;
position: absolute;
top: 60px;
width: 100%;
}
当我将li.active设置为position:relative(离那里很远)时出现问题:
所以问题是,
位置如何:绝对子项更大(左侧,右侧属性响应布局),父级位置为:relative ???
我唯一有机会从树上取出名单吗?
答案 0 :(得分:1)
您要做的是根据父母的父级设置宽度。那就是问题所在。但正如您所评论的那样,菜单具有固定的宽度,这使得它更容易。
我清理了HTML:
<ul class="nav">
<li>item 1</li>
<li>item 2
<ul>
<li>List 2.1
<ul>
<li>item 2.1.1</li>
<li>item 2.1.2</li>
<li>item 2.1.3</li>
</ul>
</li>
<li>List 2.2
<ul>
<li>item 2.2.1</li>
<li>item 2.2.2</li>
<li>item 2.2.3</li>
</ul>
</li>
<li>list 2.3
<ul>
<li>item 2.3.1</li>
<li>item 2.3.2</li>
<li>item 2.3.3</li>
</ul>
</li>
</ul>
</li>
<li>item 3</li>
<li>item 4</li>
</ul>
然后制作了这个CSS:
body, ul, li {
margin: 0;
padding: 0;
list-style: none;
}
.nav {
list-style: none;
margin: 0;
padding: 0;
width: 500px; /* needs to be a fixed width */
background: lightblue;
}
.nav > li {
display: inline-block;
background: lightblue;
margin-right: -4px;
padding: 15px;
}
.nav > li > ul {
position: absolute;
display: table;
width: 500px; /* same width as .nav */
left: 0;
margin-top: 15px;
background: lightgreen;
}
.nav > li > ul > li {
display: table-cell;
width: 33%;
}
查看此演示:http://jsfiddle.net/LinkinTED/4a98c/
您可能希望在a:hover效果上显示子菜单,请检查http://jsfiddle.net/LinkinTED/4a98c/2/