Подтвердить что ты не робот

Переход ширины CSS не работает вообще

Привет, я пытаюсь анимировать width span внутри 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, но вместо постепенного роста span появляется только без transition. Чтобы вы могли выяснить, что я пытаюсь проверить nav этого сайта : http://kitkat.com/

Я сделал скрипку своего собственного nav: http://jsfiddle.net/ZUhsn/, где проблема выходит.

Надеюсь, я дал вам всю информацию, чтобы попытаться решить мою проблему. Приветствия.

4b9b3361

Ответ 1

Попробуйте следующее:

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/

Два вопроса:

Во-первых, по умолчанию встроенный элемент является встроенным элементом, поэтому он не имеет такой ширины, как вы ожидали. Применяя display:block;, мы превращаем его в элемент уровня блока с шириной.

Во-вторых, вы переходите к значению ширины 'auto'. Переходы могут только анимироваться по числовым значениям, поэтому вам нужно будет дать конечный переход измерения с помощью единиц.

Ответ 2

Просто измените width : 100% на span на hover:

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

Отметьте JSFiddle

Ответ 3

Здесь вы можете быстро найти информацию, которую вы предоставили:

    <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>

И его работа совершенно отлично...