CSS宽度转换根本不起作用

时间:2013-09-25 12:51:51

标签: html css css3 css-transitions

您好我正在尝试为此width的{​​{1}}内span的{​​{1}}设置动画

a

这里是nav

<nav class="navigator">
   <ul>
    <li><a href="#home">H<span>home</span></a></li>
    <li><a title="What?" href="#what">W<span>what</span></a></li>
    <li><a title="Porfolio" href="#works">P<span>works</span></a></li>
    <li><a title="Who?" href="#who">W<span>who</span></a></li>
    <li><a title="Where?" href="#where">W<span>where</span></a></li>
  </ul>
</nav>

正如您所看到的,我正在尝试为CSS制作动画,但是,header nav ul li a{ position: relative; width: 40px; display: block; text-decoration: none; font-size: 18px; color: #000; } header nav ul li a:hover span{ width: auto; overflow: visible; text-align: right; } header nav ul li a span{ position: absolute; width: 0; right: 45px; overflow: hidden; transition:width 0.25s; -webkit-transition:width .25s; -moz-transition: width 0.25s; font-size: 16px; } 不是逐渐增长,而是只显示width。 为了让你弄清楚我想要查看的效果,请查看本网站的spanhttp://kitkat.com/

我自己提出了transitionhttp://jsfiddle.net/ZUhsn/这个问题出现的问题。

希望我提供了所有信息,试图解决我的问题。 欢呼声。

3 个答案:

答案 0 :(得分:27)

试试这个:

header nav ul li a:hover{}
header nav ul li a:hover span{
    width: 100%; /* YOU'LL NEED TO ADJUST THIS, IT CANNOT BE AUTO*/
    overflow: visible;
    text-align: right;
}

header nav ul li a span{
    position: absolute;
    width: 0;
    right: 45px;
    overflow: hidden;
    transition:width 0.25s;
    -webkit-transition:width .25s;
    -moz-transition: width 0.25s;
    font-size: 16px;
    display:block; /*HERE IS MY OTHER CHANGE*/
}

http://jsfiddle.net/ZUhsn/4/

两个问题:

首先,默认情况下,span是一个内联元素,因此它没有你想象的宽度。通过应用display:block;,我们将其转换为具有宽度的块级元素。

其次,您正在转换为'auto'的宽度值。过渡只能在数值上设置动画,因此您必须使用单位为结束过渡提供测量。

答案 1 :(得分:4)

只需将width : 100%更改为span上的hover

header nav ul li a:hover span{
    width : 100%;
    overflow: visible;
    text-align: right;
}

选中此JSFiddle

答案 2 :(得分:0)

以下是您提供的信息的快速再现:

    <style>
    .navigator
    {
        position: absolute;
        left: 200px;
        border:1px solid black;
    }

    .navigator span
    {
        position: absolute;
        -moz-transition: 0.5s;
        opacity: 0;
        right: 0px;
        z-index: -1;
    }

    .navigator a
    {
        text-decoration: none;
        color: black;
    }

    .navigator a:hover span
    {
        right: 100%;
        opacity: 1;
        -moz-transition: 0.5s;
    }
</style>

<nav class="navigator">
    <ul>
        <li>
            <a href="#home">
                H
                <span>
                    Home
                </span>
            </a>
        </li>
        <li>
            <a title="What?" href="#what">
                W
                <span>
                    What
                </span>
            </a>
        </li>
        <li>
            <a title="Portfolio" href="#works">
                P
                <span>
                    Works
                </span>
            </a>
        </li>
        <li>
            <a title="Who?" href="#who">
                W
                <span>
                    Who
                </span>
            </a>
        </li>
        <li>
            <a title="Where?" href="#where">
                W
                <span>
                    Where
                </span>
            </a>
        </li>
    </ul>


 </nav>

它的工作非常完美......