我在做导航。
这是一个ul列表。 'a'标签和'span'位于同一空间,span包含隐藏的图像。 图像确实fadeIn / fadeOut成功。 我试图将img / span的宽度设置为li(父级)的宽度
我似乎无法做到这一点。请帮忙。
<ul id="nav">
<li><a href="#">Web<br />Design</a><span><img src="images/nav-over.png" height="100px" /></span></li>
<li><a href="#">Graphic<br />Design</a><span><img src="images/nav-over.png" height="100px" /></span></li>
<li><a href="#">Our<br />Work</a><span><img src="images/nav-over.png" height="100px" /></span></li>
<li><a href="#">SEO</a><span><img src="images/nav-over.png" height="100px" /></span></li>
</ul>
这在正确的道路上有点......
var h = $('#nav li img').parent().height();
var w = $('#nav li img').parent().width();
$('#nav li img').width(w).height(h);
但它设置了所有#nav li span的高度和宽度相同而不是来自父...
然后我试过这个:
$('#nav li span').each(function(){$(this).parent().width()});
$('#nav li span img').each(function(){$(this).parent().width()});
我知道结构很差,但我只是在测试。但没有它不起作用......
因此对于每个#nav li span和#nav li img我想将宽度设置为相应的父(li)宽度。
我想我正确地解释了这一点。大声笑。感谢。
继承人css
#nav {
list-style:none; width:608px; height:100px; display:block; padding:0; margin:0; position:relative
}
#nav li {
background:url(images/nav-div.jpg) right top no-repeat; float:left; text-align:center;height:100px;
}
#nav li a {
color:#565555; font-size: 18px; letter-spacing:10px; line-height:25px; text-transform:uppercase; text-decoration:none;height:100px; display:block; padding:0 19px 0 19px; position:relative; top:0; left:0;z-index:900
}
#nav li a:hover {
color:#eaeaea
}
#nav li span {
position:relative; top:-100px; left:0; z-index:800; opacity:0.0;
}
答案 0 :(得分:1)
在您.width()
的地方使用.each()
,并使用.closest("li")
代替.parent()
,并且不要忘记return
声明:
$('#nav li span img').width(function () { return $(this).closest("li").width(); });
$('#nav li span img').height(function () { return $(this).closest("li").height(); });
编辑:这是一个更有效的版本,可防止图像循环两次(感谢natedavisolds):
$('#nav li span img').each(function () {
var img = $(this);
var listItem = img.closest("li");
img.width(listItem.width()).height(listItem.height());
});
答案 1 :(得分:1)
叫我疯了,但你不能/不应该用CSS做这个吗?:
#nav li img {
width: 100%;
}
答案 2 :(得分:1)
假设CSS设置正确(即块元素)。
$('#nav li').each(function() {
var $li = $(this);
$li.find('span, span img').css({ width: $li.width(), height: $li.height()});
});
应该可以工作但未经测试。