Javascript 用无序列表展开DIV
我希望有一个无序的列表,可以过滤掉我的一些工作。我的过滤器工作得非常好(不是在这个例子中),我现在在这个阶段,我有困难的样式。我曾尝试设置div的宽度,并进行一些在线研究,但没有成功 它现在看起来像这样: 我希望最初只显示两个单词(Filter和All),当用户将鼠标悬停或单击单词“Filter”时,列表会随着CSS宽度的变化而扩展,以显示其他类别(Web、静止、运动和游戏)。因此,从这里: 过滤|全部 为此:Javascript 用无序列表展开DIV,javascript,html,css,Javascript,Html,Css,我希望有一个无序的列表,可以过滤掉我的一些工作。我的过滤器工作得非常好(不是在这个例子中),我现在在这个阶段,我有困难的样式。我曾尝试设置div的宽度,并进行一些在线研究,但没有成功 它现在看起来像这样: 我希望最初只显示两个单词(Filter和All),当用户将鼠标悬停或单击单词“Filter”时,列表会随着CSS宽度的变化而扩展,以显示其他类别(Web、静止、运动和游戏)。因此,从这里: 过滤|全部 为此: 过滤|网页|静止|运动|游戏将ul.过滤为两个ul,并使用一些代码: $('#exp
过滤|网页|静止|运动|游戏将
ul.过滤
为两个ul
,并使用一些代码:
$('#expand').click(function(e){
e.preventDefault();
$('.filter.hidden').show();
var tw = $('.filter.hidden').width();
$('.filter.hidden').css('width', '0px');
$('.filter.hidden').animate({width: tw+'px'});
});
- 示例:(单击过滤器)
ul
嵌套起来,比如
<div id="portfolionav">
<ul class="filter">
<li>Filter</li>
<ul class="subfilters">
<li class="web"><a href="#">Web</a></li>
<li class="still"><a href="#">Still</a></li>
<li class="motion"><a href="#">Motion</a></li>
<li class="games"><a href="#">Games</a></li>
</ul>
<li class="current all"><a href="#">All</a></li>
</ul>
</div>
更新:
以下是带有动画和固定线高错误的最终版本:
另一种不带动画的解决方案:
怎么办:
期待看到Ihor的最终结果-paspar2.com-这里是正在运行的动画,但需要一些时间来确定如何在默认情况下将其隐藏。到目前为止,有几种方法都失败了-它可以工作,但第一次单击时没有动画。完成后将发布更新。我的一个项目也需要这种效果,所以我会让它工作:)@Rob,查看我更新的答案,以获得最后的动画示例。还没有在所有浏览器中测试过它,但可能会起作用。这里有一个直接链接:简单漂亮的Ihor…我真的很感激你在回答我的问题时付出了巨大的努力。您的方法似乎比以前的建议(处理不透明度和溢出问题)提供了更好的转换。您知道一种方法可以使列表在一段时间后折叠(如果它处于非活动状态或未使用)?我在Safari和Modzilla/Firefox中对其进行了测试,在FF中,第一个和最后一个单词上似乎存在嵌套列表问题(文本删除)…解决这个问题的任何想法都让我知道,我会勾选这个答案off@Rob是的,在FF、Safari和Opera中出现了一个线条高度问题,而在Chrome中工作得很好。现在已修复:感谢您的快速响应。感谢您的建议,根据Ihor的回复,我很可能会使用这种方法。我同意,好主意,赞成。不幸的是,仅限于最近的浏览器版本。另一种实现我追求的结果的奇妙方式…谢谢Peter。
#portfolionav ul {
display: inline-block;
white-space: nowrap;
-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
transition: all 1s ease;
}
#portfolionav ul ul {width: 0; opacity: 0;}
#portfolionav ul:hover > ul {width: 370px; opacity: 1;}