Hi I'm trying to animate the width
of the span
inside the a
of this 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>
here it is the 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; }
As you can see I'm trying to animate the width
, but, instead of growing gradually the span
is only showing up without any transition
. To let you figure out the effect that I'm trying to get check out the nav
of this site :http://kitkat.com/
I made a fiddle of my own nav
:http://jsfiddle.net/ZUhsn/ where the problem comes out.
Hope I gave you all the information to try to solve my issue. Cheers.
Try this:
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/
Two issues:
Firstly, span is an inline element by default, so it doesn't have a width like you would expect. By applying display:block;
, we turn it into a block-level element with width.
Secondly, you were transitioning to a width value of 'auto'
. Transitions can only animate across numerical values, so you'll have to give your ending transition a measurement with units.
Just change width : 100%
to your span
on hover
:
header nav ul li a:hover span{ width : 100%; overflow: visible; text-align: right; }
Check this JSFiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With