Переход ширины 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/, где проблема выходит.
Надеюсь, я дал вам всю информацию, чтобы попытаться решить мою проблему.
Приветствия.
Ответы
Ответ 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>
И его работа совершенно отлично...