Based on Dribbble: https://dribbble.com/shots/2026784-Search-Animation
A Pen by Kristy Yeaton on CodePen.
<div class="search"> | |
<input type="search" class="search-box" /> | |
<span class="search-button"> | |
<span class="search-icon"></span> | |
</span> | |
</div> |
$('.search-button').click(function(){ | |
$(this).parent().toggleClass('open'); | |
}); |
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
$background-color: #2A2E37; | |
$search-bg-color: #242628; | |
$icon-color: #00FEDE; | |
$transition: all .5s ease; | |
* { | |
box-sizing: border-box; | |
} | |
body { | |
background: $background-color; | |
} | |
.search { | |
width: 100px; | |
height: 100px; | |
margin: 40px auto 0; | |
background-color: $search-bg-color; | |
position: relative; | |
overflow: hidden; | |
transition: $transition; | |
&:before { | |
content: ''; | |
display: block; | |
width: 3px; | |
height: 100%; | |
position: relative; | |
background-color: $icon-color; | |
transition: $transition; | |
} | |
&.open { | |
width: 420px; | |
&:before { | |
height: 60px; | |
margin: 20px 0 20px 30px; | |
position: absolute; | |
} | |
} | |
} | |
.search-box { | |
width: 100%; | |
height: 100%; | |
box-shadow: none; | |
border: none; | |
background: transparent; | |
color: #fff; | |
padding: 20px 100px 20px 45px; | |
font-size: 40px; | |
&:focus { | |
outline: none; | |
} | |
} | |
.search-button { | |
width: 100px; | |
height: 100px; | |
display: block; | |
position: absolute; | |
right: 0; | |
top: 0; | |
padding: 20px; | |
cursor: pointer; | |
} | |
.search-icon { | |
width: 40px; | |
height: 40px; | |
border-radius: 40px; | |
border: 3px solid $icon-color; | |
display: block; | |
position: relative; | |
margin-left: 5px; | |
transition: $transition; | |
&:before { | |
content: ''; | |
width: 3px; | |
height: 15px; | |
position: absolute; | |
right: -2px; | |
top: 30px; | |
display: block; | |
background-color: $icon-color; | |
transform: rotate(-45deg); | |
transition: $transition; | |
} | |
&:after { | |
content: ''; | |
width: 3px; | |
height: 15px; | |
position: absolute; | |
right: -12px; | |
top: 40px; | |
display: block; | |
background-color: $icon-color; | |
transform: rotate(-45deg); | |
transition: $transition; | |
} | |
.open & { | |
margin: 0; | |
width: 60px; | |
height: 60px; | |
border-radius: 60px; | |
&:before { | |
transform: rotate(52deg); | |
right: 22px; | |
top: 23px; | |
height: 18px; | |
} | |
&:after { | |
transform: rotate(-230deg); | |
right: 22px; | |
top: 13px; | |
height: 18px; | |
} | |
} | |
} |