CSS3隐藏转换

时间:2013-12-13 03:37:06

标签: css css3 css-transitions

我有一个菜单,其中高度和可见性在悬停时转换,并在没有悬停时转换回来。它工作正常,但当链接逐渐消失时,链接会相互折叠。我一直在寻找各地,我无法弄清楚如何防止它们在彼此之上坍塌。所以我的问题是,如何阻止它这样做呢?它只是一些我忽略的简单解决方案,还是更复杂的东西?

HTML

<header>
<section id="logo_section">
    <h1><a href="#">FLASH OF REALITY</a></h1>
    <p>Photography, Film, & Animation in Utah</p>
</section>
<nav>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Photography</a></li>
        <li><a href="#">Video</a></li>
        <li><a href="#">Animation</a></li>
        <li><a href="#">My Portfolio</a></li>
        <li><a href="#">Service</a></li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">About Me</a></li>
    /ul>
</nav>
</header>

CSS

header ul li {
visibility: hidden;
height: 0px;
transition: visibility .5s, height .5s;
}

header:hover ul li {
visibility: visible;
height: 57px;
}

1 个答案:

答案 0 :(得分:0)

当您转换<li>项目的高度时,它们将逐渐变为0,因此它们只是坐在彼此的顶部,因为它们没有高度。

enter image description here

您可以将<li>的最大高度从0转换为比列表更高的值,而不是转换<ul>

header ul {
  max-height: 0;
  transition: max-height .5s;
  overflow: hidden;
}

header:hover ul {
  max-height: 600px;
}

<强> http://jsfiddle.net/4CfeU/2/