如何让这个 <SPAN> 元素跨越 100% 的 LI?
How to I get this <SPAN> element to span 100% of LI?
我正在处理这个导航栏,我快完成了,但我只有一个问题需要解决。我的导航使用 jQuery 和代码目标 <SPAN>
元素来打开子菜单。我的问题是,出于某种原因,跨度不包括整个 LI
区域。有一大堆 "empty" space 你可以点击,什么也没有发生。如何让 span
覆盖整个 LI
区域?我试过弄乱宽度、填充和边距,并且 none 有效。
这是 jsFiddle。
CSS
#navbar {
display: block;
clear: both;
width: 100%;
height: auto;
margin: 0px;
padding: 0%;
background-color: #29568F;
border-bottom: 3px solid #29568F;
}
#menu-icon {
display: inline-block;
float: left;
}
#menu-icon img {
height: 16px;
width: 21px;
align: center;
margin: 0px 10px 0px 0px;
position: relative;
top: 2px;
}
#empty-tab{
}
.nav-tabs {
display: inline-block;
position: relative;
width: 100%;
background-color: #29568F;
margin: 0px 0px;
padding: 0px;
list-style-type: none;
color: white;
text-decoration: none;
text-shadow: 2px 2px #000000;
font: 18px arial, verdana, sans-serif;
}
.nav-tabs li {
float: left;
cursor: pointer;
padding: 10px 20px;
text-align: center;
border-right: 1px solid lightgrey;
}
.nav-tabs li span {
border: 1px solid red;
}
.nav-tabs li:last-child {
border: 0px;
}
.nav-tabs li:hover,
.nav-tabs > .open {
background-color: #3399CC;
}
#active {
background-color: #3399CC;
}
.nav-tabs li a {
color: white;
text-decoration: none;
text-shadow: 2px 2px #000000;
font: 18px arial, verdana, sans-serif;
}
HTML
<div id="navbar">
<ul class="nav-tabs">
<li id="menu-icon"><span><img src="/images/menu-icon.png">Menu</span></li>
<li><span>Dogs <div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Meet the Breeds<div class="arrow-closed"></div></span>
<ul class="drop-menu">
<li><span>Sort A - Z <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Breeds A - F</li>
<li>Breeds G - L</li>
<li>Breeds M - R</li>
<li>Breeds S - Z</li>
</ul>
</li>
<li><span>Sort by AKC Group <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Sporting Group</li>
<li>Working Group</li>
<li>Herding Group</li>
<li>Hound Group</li>
<li>Terrier Group</li>
<li>Non-Sporting Group</li>
<li>Toy Group</li>
</ul>
</li>
<li><span>Sort by Size <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>X-Small (&le 10in)</li>
<li>Small (10in > < 15in)</li>
<li>Medium (15in &ge < 21in)</li>
<li>Large (21in &ge < 28in)</li>
<li>X-Large (28in +)</li>
</ul>
</li>
<li><span>Sort by Coat <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Very Short/Hairless</li>
<li>Short Coat</li>
<li>Medium Coats</li>
<li>Long Coats</li>
<li>Non-Shedding Coats</li>
<li>Curly Coats</li>
</ul>
</li>
<li><span>Sort by Trait <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Apartment Suitable</li>
<li>Laid Back</li>
<li>Athletic</li>
<li>Protective</li>
<li>Extroverted</li>
<li>Pet Friendly</li>
<li>Cuddle-Buddies</li>
</ul>
</li>
</ul>
</li>
<li><span>Supplies<div class="arrow-closed"></div></span>
<ul class="drop-menu">
<li><span>Crates & Kennels</span></li>
<li><span>Bowls & Dishes</span></li>
<li><span>Collars & Leashes</span></li>
<li><span>Toys & Games</span></li>
<li><span>Grooming</span></li>
<li><span>Apparal & Accessories</span></li>
</ul>
</li>
<li><span>Finding a Dog<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Cats<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Birds<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Small Mammals<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Articles<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Videos<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Updates<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
</ul>
</div>
我用红色勾勒出了跨度。这仅用于可视化目的,因此我(我们)可以看到跨度在哪里。当跨度实际覆盖整个区域时,它将被删除。我还隐藏了箭头的 CSS,因为它导致菜单表现得很古怪。
很简单:
.nav-tabs li {
float: left;
/* padding: 10px 20px; */ /* remove */
cursor: pointer;
text-align: center;
border-right: 1px solid lightgrey;
}
.nav-tabs li span {
display:block; /* add */
padding: 10px 20px; /* add */
border: 1px solid red;
}
您需要删除 li
上的填充,因为它不允许子 span
在 li
中完全展开。而是将填充应用于 span
并添加 display:block;
,因为 span
默认情况下是内联元素,只会扩展到足以包含其内容。
演示 http://jsfiddle.net/m65b10ph/1/
另外,为了正确定位第 4 级菜单,您需要 clear
修复,因为其中有浮动跨度。那是因为包含 li
的计算高度为 0:
.drop-menu li:after {
display: table;
clear: both;
content: "";
}
<span>
是一个 display: inline;
元素,默认情况下它只占用内容的区域。 display: block;
元素占据可用宽度的 100%。您可以将 <span>
设置为 display: block;
或使用 <div>
代替,但这样您还需要将 <li>
元素的填充设置为 0,以便内部元素 ( <span>
) 将获得 <li>
元素的完整宽度。然后您可以将填充设置为 <span>
.
我正在处理这个导航栏,我快完成了,但我只有一个问题需要解决。我的导航使用 jQuery 和代码目标 <SPAN>
元素来打开子菜单。我的问题是,出于某种原因,跨度不包括整个 LI
区域。有一大堆 "empty" space 你可以点击,什么也没有发生。如何让 span
覆盖整个 LI
区域?我试过弄乱宽度、填充和边距,并且 none 有效。
这是 jsFiddle。
CSS
#navbar {
display: block;
clear: both;
width: 100%;
height: auto;
margin: 0px;
padding: 0%;
background-color: #29568F;
border-bottom: 3px solid #29568F;
}
#menu-icon {
display: inline-block;
float: left;
}
#menu-icon img {
height: 16px;
width: 21px;
align: center;
margin: 0px 10px 0px 0px;
position: relative;
top: 2px;
}
#empty-tab{
}
.nav-tabs {
display: inline-block;
position: relative;
width: 100%;
background-color: #29568F;
margin: 0px 0px;
padding: 0px;
list-style-type: none;
color: white;
text-decoration: none;
text-shadow: 2px 2px #000000;
font: 18px arial, verdana, sans-serif;
}
.nav-tabs li {
float: left;
cursor: pointer;
padding: 10px 20px;
text-align: center;
border-right: 1px solid lightgrey;
}
.nav-tabs li span {
border: 1px solid red;
}
.nav-tabs li:last-child {
border: 0px;
}
.nav-tabs li:hover,
.nav-tabs > .open {
background-color: #3399CC;
}
#active {
background-color: #3399CC;
}
.nav-tabs li a {
color: white;
text-decoration: none;
text-shadow: 2px 2px #000000;
font: 18px arial, verdana, sans-serif;
}
HTML
<div id="navbar">
<ul class="nav-tabs">
<li id="menu-icon"><span><img src="/images/menu-icon.png">Menu</span></li>
<li><span>Dogs <div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Meet the Breeds<div class="arrow-closed"></div></span>
<ul class="drop-menu">
<li><span>Sort A - Z <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Breeds A - F</li>
<li>Breeds G - L</li>
<li>Breeds M - R</li>
<li>Breeds S - Z</li>
</ul>
</li>
<li><span>Sort by AKC Group <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Sporting Group</li>
<li>Working Group</li>
<li>Herding Group</li>
<li>Hound Group</li>
<li>Terrier Group</li>
<li>Non-Sporting Group</li>
<li>Toy Group</li>
</ul>
</li>
<li><span>Sort by Size <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>X-Small (&le 10in)</li>
<li>Small (10in > < 15in)</li>
<li>Medium (15in &ge < 21in)</li>
<li>Large (21in &ge < 28in)</li>
<li>X-Large (28in +)</li>
</ul>
</li>
<li><span>Sort by Coat <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Very Short/Hairless</li>
<li>Short Coat</li>
<li>Medium Coats</li>
<li>Long Coats</li>
<li>Non-Shedding Coats</li>
<li>Curly Coats</li>
</ul>
</li>
<li><span>Sort by Trait <div class="arrow-closed"></div></span>
<ul class="slide-menu">
<li>Apartment Suitable</li>
<li>Laid Back</li>
<li>Athletic</li>
<li>Protective</li>
<li>Extroverted</li>
<li>Pet Friendly</li>
<li>Cuddle-Buddies</li>
</ul>
</li>
</ul>
</li>
<li><span>Supplies<div class="arrow-closed"></div></span>
<ul class="drop-menu">
<li><span>Crates & Kennels</span></li>
<li><span>Bowls & Dishes</span></li>
<li><span>Collars & Leashes</span></li>
<li><span>Toys & Games</span></li>
<li><span>Grooming</span></li>
<li><span>Apparal & Accessories</span></li>
</ul>
</li>
<li><span>Finding a Dog<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Cats<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
<li><span>Cat Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Birds<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
<li><span>Bird Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Small Mammals<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
<li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Articles<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
<li><span>Article Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Videos<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
<li><span>Video Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
<li><span>Updates<div class="arrow-closed"></div></span>
<ul class="sub-menu">
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
<li><span>More Links<div class="arrow-closed"></div></span></li>
</ul>
</li>
</ul>
</div>
我用红色勾勒出了跨度。这仅用于可视化目的,因此我(我们)可以看到跨度在哪里。当跨度实际覆盖整个区域时,它将被删除。我还隐藏了箭头的 CSS,因为它导致菜单表现得很古怪。
很简单:
.nav-tabs li {
float: left;
/* padding: 10px 20px; */ /* remove */
cursor: pointer;
text-align: center;
border-right: 1px solid lightgrey;
}
.nav-tabs li span {
display:block; /* add */
padding: 10px 20px; /* add */
border: 1px solid red;
}
您需要删除 li
上的填充,因为它不允许子 span
在 li
中完全展开。而是将填充应用于 span
并添加 display:block;
,因为 span
默认情况下是内联元素,只会扩展到足以包含其内容。
演示 http://jsfiddle.net/m65b10ph/1/
另外,为了正确定位第 4 级菜单,您需要 clear
修复,因为其中有浮动跨度。那是因为包含 li
的计算高度为 0:
.drop-menu li:after {
display: table;
clear: both;
content: "";
}
<span>
是一个 display: inline;
元素,默认情况下它只占用内容的区域。 display: block;
元素占据可用宽度的 100%。您可以将 <span>
设置为 display: block;
或使用 <div>
代替,但这样您还需要将 <li>
元素的填充设置为 0,以便内部元素 ( <span>
) 将获得 <li>
元素的完整宽度。然后您可以将填充设置为 <span>
.