Skip to content

Instantly share code, notes, and snippets.

@jalbertbowden
Created April 11, 2013 03:45
Show Gist options
  • Save jalbertbowden/5360575 to your computer and use it in GitHub Desktop.
Save jalbertbowden/5360575 to your computer and use it in GitHub Desktop.
A CodePen by Vincent De Oliveira. Lavalamp menu in pure CSS - Lavalamp menu with CSS transitions on pseudo-elements<br/> Works on Firefox, Chrome, Safari, Opera, IE10<br/> Based on @kizmarh work : http://kizu.ru/en/pseudos/
<!--
Lavalamp menu with CSS transitions on pseudo-elements
Works on Firefox, Chrome, Safari, Opera, IE10
Based on @kizmarh work : http://kizu.ru/en/pseudos/
-->
<ul>
<li><a href="#">✿</a></li><!--
--><li><a href="#">Lorem</a></li><!--
--><li><a href="#">Ipsum</a></li><!--
--><li><a href="#">Consectetur adipisicing</a></li><!--
--><li><a href="#">Sit amet</a></li>
</ul>
<p>Another use of fake transitions on pseudo-elements: <a href="http://codepen.io/iamvdo/pen/maJhu" target="_blank">Shine effect in pure CSS + SVG</a></p>
html{
font-family:sans-serif;
font-size:1.2em;
background:#eee;
}
ul{
position:relative;
width:27em;height:2em;
margin:100px auto;
padding:0;
white-space:nowrap;
}
ul li{
display:inline;
text-align:center;
}
ul li a{
position:relative;
top:0;left:0;right:25em;bottom:0;
display:inline-block;
-moz-box-sizing:border-box;
box-sizing:border-box;
padding:.4em .2em;
color:#09C;
text-decoration:none;
text-shadow:0 1px 0 white;
/*transition*/
-webkit-transition:width .3s,right .3s;
-moz-transition:width .3s,right .3s;
-o-transition:width .3s,right .3s;
transition:width .3s,right .3s;
}
ul li:nth-child(1) a{
width:2em;
}
ul li:nth-child(2) a{
width:4em;
}
ul li:nth-child(3) a{
width:4em;
}
ul li:nth-child(4) a{
width:12em;
}
ul li:nth-child(5) a{
width:5em;
}
ul li:last-child a::after{
content:"";
position:absolute;
right:inherit;
bottom:-3px;
width:inherit;
height:3px;
background:#ccc;
pointer-events:none;
/*transition*/
-webkit-transition:all .5s ease;
-moz-transition:all .5s ease;
-o-transition:all .5s ease;
transition:all .5s ease;
}
ul li:nth-child(1) ~ li:last-child a{
right:25em;
width:2em;
}
ul li:nth-child(2):hover ~ li:last-child a{
right:21em;
width:4em;
}
ul li:nth-child(3):hover ~ li:last-child a{
right:17em;
width:4em;
}
ul li:nth-child(4):hover ~ li:last-child a{
right:5em;
width:12em;
}
ul li:nth-child(5):last-child:hover a{
right:0;
width:5em;
}
ul li:hover ~ li:last-child a::after,
ul li:last-child:hover a::after{
background:#c351fa;
}
ul li:last-child a{
min-width:5em;max-width:5em;
}
ul li a:hover,ul li a:focus{
color:#c351fa;
background-color:rgba(255,255,255,.6);
/*transition*/
-webkit-transition:width .3s,right .3s,background-color .3s;
-moz-transition:width .3s,right .3s,background-color .3s;
-o-transition:width .3s,right .3s,background-color .3s;
transition:width .3s,right .3s,background-color .3s;
}
ul li a:focus{
border-bottom:3px solid #c351fa;
}
p{
font-size: .8em;
text-align: center;
color: rgba(0,0,0,.5);
}
p a{
color: #09C;
text-decoration: none;
}
p a:hover{
border-bottom: 1px solid #09C;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment