Contact Me Animation
Based on a Dribbble by Riccardo Cavallo.
Click on the "Contact Me" button to see it in action.
A Pen by Aaron Taylor on CodePen.
Based on a Dribbble by Riccardo Cavallo.
Click on the "Contact Me" button to see it in action.
A Pen by Aaron Taylor on CodePen.
<div class="contact-area"> | |
<div class="contact"> | |
<main> | |
<section> | |
<div class="content"> | |
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/256492/_mLIxaKY_400x400.jpg" alt="Profile Image"> | |
<aside> | |
<h1>Riccardo Cavallo</h1> | |
<p>Hi, I'm Riccardo Cavallo and I'm a Graphic and Visual Designer.</p> | |
</aside> | |
<button> | |
<span>Contact Me</span> | |
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"> <g class="nc-icon-wrapper" fill="#444444"> <path d="M14.83 30.83L24 21.66l9.17 9.17L36 28 24 16 12 28z"></path> </g> </svg> | |
</button> | |
</div> | |
<div class="title"><p>Contact Me</p></div> | |
</section> | |
</main> | |
<nav> | |
<a href="#" class="gmail"> | |
<div class="icon"> | |
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M16 3v10c0 .567-.433 1-1 1h-1V4.925L8 9.233 2 4.925V14H1c-.567 0-1-.433-1-1V3c0-.283.108-.533.287-.712C.467 2.107.718 2 1 2h.333L8 6.833 14.667 2H15c.283 0 .533.108.713.288.179.179.287.429.287.712z" fill-rule="evenodd"/></svg> | |
</div> | |
<div class="content"> | |
<h1>Email</h1> | |
<span>Riccavallo@gmail.com</span> | |
</div> | |
<svg class="arrow" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"> <g class="nc-icon-wrapper" fill="#444444"> <path d="M17.17 32.92l9.17-9.17-9.17-9.17L20 11.75l12 12-12 12z"></path> </g> </svg> | |
</a> | |
<a href="#" class="facebook"> | |
<div class="icon"> | |
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M15.117 0H.883C.395 0 0 .395 0 .883v14.234c0 .488.395.883.883.883h7.663V9.804H6.46V7.39h2.086V5.607c0-2.066 1.262-3.19 3.106-3.19.883 0 1.642.064 1.863.094v2.16h-1.28c-1 0-1.195.48-1.195 1.18v1.54h2.39l-.31 2.42h-2.08V16h4.077c.488 0 .883-.395.883-.883V.883C16 .395 15.605 0 15.117 0" fill-rule="nonzero"/></svg> | |
</div> | |
<div class="content"> | |
<h1>Facebook</h1> | |
<span>Riccardo Cavallo</span> | |
</div> | |
<svg class="arrow" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"> <g class="nc-icon-wrapper" fill="#444444"> <path d="M17.17 32.92l9.17-9.17-9.17-9.17L20 11.75l12 12-12 12z"></path> </g> </svg> | |
</a> | |
<a href="#" class="twitter"> | |
<div class="icon"> | |
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M16 3.038c-.59.26-1.22.437-1.885.517.677-.407 1.198-1.05 1.443-1.816-.634.37-1.337.64-2.085.79-.598-.64-1.45-1.04-2.396-1.04-1.812 0-3.282 1.47-3.282 3.28 0 .26.03.51.085.75-2.728-.13-5.147-1.44-6.766-3.42C.83 2.58.67 3.14.67 3.75c0 1.14.58 2.143 1.46 2.732-.538-.017-1.045-.165-1.487-.41v.04c0 1.59 1.13 2.918 2.633 3.22-.276.074-.566.114-.865.114-.21 0-.41-.02-.61-.058.42 1.304 1.63 2.253 3.07 2.28-1.12.88-2.54 1.404-4.07 1.404-.26 0-.52-.015-.78-.045 1.46.93 3.18 1.474 5.04 1.474 6.04 0 9.34-5 9.34-9.33 0-.14 0-.28-.01-.42.64-.46 1.2-1.04 1.64-1.7z" fill-rule="nonzero"/></svg> | |
</div> | |
<div class="content"> | |
<h1>Twitter</h1> | |
<span>@RichoxDesign</span> | |
</div> | |
<svg class="arrow" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"> <g class="nc-icon-wrapper" fill="#444444"> <path d="M17.17 32.92l9.17-9.17-9.17-9.17L20 11.75l12 12-12 12z"></path> </g> </svg> | |
</a> | |
</nav> | |
</div> | |
</div> |
$('button').click(function(){ | |
$('button').toggleClass('active'); | |
$('.title').toggleClass('active'); | |
$('nav').toggleClass('active'); | |
}); |
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> |
/* COLORS | |
========================================== */ | |
$bg-color: #051321; | |
$color-1: #eb524a; | |
$color-2: #c63535; | |
$color-3: #ffbe44; | |
$white: #ffffff; | |
$black: #000000; | |
// Social media | |
$gmail: #d14836; | |
$facebook: #3b5998; | |
$twitter: #1da1f2; | |
/* MIXINS | |
========================================== */ | |
@mixin animation($animation) { | |
-webkit-animation: #{$animation}; | |
-moz-animation: #{$animation}; | |
-o-animation: #{$animation}; | |
animation: #{$animation}; | |
} | |
@mixin keyframes($keyframes) { | |
@-webkit-keyframes #{$keyframes} { @content; } | |
@-moz-keyframes #{$keyframes} { @content; } | |
@-o-keyframes #{$keyframes} { @content; } | |
@keyframes #{$keyframes} { @content; } | |
} | |
@mixin transform($transform) { | |
-webkit-transform: $transform; | |
-moz-transform: $transform; | |
-ms-transform: $transform; | |
-o-transform: $transform; | |
transform: $transform; | |
} | |
@mixin transition($transition) { | |
-webkit-transition: #{$transition}; | |
-moz-transition: #{$transition}; | |
-o-transition: #{$transition}; | |
transition: #{$transition}; | |
} | |
@mixin transition-delay($transition-delay) { | |
-webkit-transition-delay: #{$transition-delay}; | |
-moz-transition-delay: #{$transition-delay}; | |
-o-transition-delay: #{$transition-delay}; | |
transition-delay: #{$transition-delay}; | |
} | |
/* RESET | |
========================================== */ | |
*, *:before, *:after { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
} | |
body { | |
background: $bg-color; | |
//font-family: 'Open Sans', sans-serif; | |
font-family: 'Roboto Condensed', sans-serif; | |
} | |
/* CONTACT | |
========================================== */ | |
.contact-area { | |
width: 100%; | |
height: 100vh; | |
position: relative; | |
} | |
.contact { | |
position: relative; | |
max-width: 420px; | |
padding: 40px 20px; | |
overflow: hidden; | |
margin: 0 auto; | |
@media (min-width: 1024px) { | |
position: absolute; | |
top: 50%; | |
left: 50%; | |
@include transform(translate(-50%, -50%)); | |
} | |
main { | |
float: left; | |
width: 100%; | |
position: relative; | |
section { | |
border-radius: 5px; | |
float: left; | |
width: 100%; | |
background-color: $color-1; | |
.content { | |
float: left; | |
width: 100%; | |
padding: 20px 30px 50px 30px; | |
position: relative; | |
text-align: center; | |
@media (min-width: 414px) { | |
text-align: left; | |
} | |
img { | |
display: inline-block; | |
width: 140px; | |
border-radius: 50%; | |
@media (min-width: 414px) { | |
float: left; | |
width: 30%; | |
margin-right: 10%; | |
} | |
} | |
aside { | |
float: left; | |
width: 100%; | |
color: $white; | |
margin-top: 10px; | |
@media (min-width: 414px) { | |
width: 60%; | |
} | |
h1 { | |
font-weight: 100; | |
font-size: 22px; | |
margin-bottom: 10px; | |
} | |
p { | |
font-size: 14px; | |
letter-spacing: .5px; | |
line-height: 160%; | |
} | |
} | |
} | |
} | |
.title { | |
float: left; | |
width: 100%; | |
background-color: $color-2; | |
max-height: 0px; | |
border-bottom-left-radius: 5px; | |
border-bottom-right-radius: 5px; | |
overflow: hidden; | |
@include transition(all .55s); | |
&.active { | |
max-height: 100px; | |
@include transition(all 1.3s); | |
p { | |
@include transform(scale(1)); | |
transition-delay: .2s; | |
} | |
} | |
p { | |
padding: 15px 30px; | |
color: $white; | |
font-size: 16px; | |
display: inline-block; | |
font-weight: 500; | |
text-transform: uppercase; | |
letter-spacing: .5px; | |
@include transition(all .3s); | |
@include transform(scale(0)); | |
} | |
} | |
button { | |
position: absolute; | |
bottom: 0; | |
right: 50%; | |
background-color: $color-3; | |
color: $color-2; | |
border: 0; | |
width: 200px; | |
height: 48px; | |
text-align: center; | |
border-radius: 30px; | |
font-size: 16px; | |
letter-spacing: .5px; | |
text-transform: uppercase; | |
margin-bottom: -24px; | |
margin-right: -100px; | |
@include transition(all .4s); | |
transition-delay: .1s; | |
outline: none; | |
overflow: hidden; | |
z-index: 10; | |
font-family: inherit; | |
span { | |
opacity: 1; | |
@include transition(opacity .2s); | |
transition-delay: .4s; | |
display: block; | |
width: 200px; | |
float: left; | |
padding: 15px 0px; | |
} | |
svg { | |
position: absolute; | |
top: 50%; | |
left: 50%; | |
@include transform(translate(-50%, -50%)); | |
opacity: 0; | |
@include transition(all .4s); | |
path { | |
fill: $color-2; | |
} | |
} | |
&.active { | |
margin-right: 0; | |
right: 20px; | |
width: 65px; | |
height: 65px; | |
margin-bottom: -32.5px; | |
text-indent: 100%; | |
white-space: nowrap; | |
overflow: hidden; | |
border-radius: 65px; | |
box-shadow: 0px 3px 15px rgba(0,0,0,0.2); | |
span { | |
opacity: 0; | |
transition-delay: 0s; | |
width: 200px; | |
} | |
svg { | |
opacity: 1; | |
transition-delay: .5s; | |
} | |
} | |
} | |
} | |
nav { | |
float: left; | |
width: 100%; | |
overflow: hidden; | |
max-height: 0px; | |
@include transition(all .5s); | |
&.active { | |
max-height: 600px; | |
@include transition(all 1s); | |
a { | |
opacity: 1; | |
@include transform(translateY(0px)); | |
@include transition(all .7s); | |
&:nth-of-type(1) { | |
transition-delay: .5s; | |
} | |
&:nth-of-type(2) { | |
transition-delay: .7s; | |
} | |
&:nth-of-type(3) { | |
transition-delay: .9s; | |
} | |
} | |
} | |
a { | |
float: left; | |
width: 100%; | |
margin-top: 18px; | |
background-color: $white; | |
padding: 18px 20px; | |
border-radius: 5px; | |
text-decoration: none; | |
@include transition(all .3s); | |
opacity: 0; | |
@include transform(translateY(-10px)); | |
position: relative; | |
@media (min-width: 414px) { | |
padding: 18px 30px; | |
} | |
.arrow { | |
position: absolute; | |
right: 15px; | |
top: 50%; | |
@include transform(translateY(-50%)); | |
path { | |
fill: darken($white, 10%); | |
} | |
} | |
&.gmail { | |
.icon { | |
svg { | |
background-color: $gmail; | |
} | |
} | |
.content { | |
h1 { | |
color: $gmail; | |
} | |
} | |
} | |
&.facebook { | |
.icon { | |
svg { | |
background-color: $facebook; | |
} | |
} | |
.content { | |
h1 { | |
color: $facebook; | |
} | |
} | |
} | |
&.twitter { | |
.icon { | |
svg { | |
background-color: $twitter; | |
} | |
} | |
.content { | |
h1 { | |
color: $twitter; | |
} | |
} | |
} | |
.icon { | |
float: left; | |
width: 50px; | |
height: 50px; | |
border-radius: 50%; | |
overflow: hidden; | |
margin-right: 20px; | |
svg { | |
width: 100%; | |
height: 100%; | |
padding: 14px; | |
path { | |
fill: $white; | |
} | |
} | |
} | |
.content { | |
h1 { | |
font-size: 20px; | |
font-weight: 400; | |
line-height: 160%; | |
letter-spacing: .4px; | |
} | |
span { | |
font-size: 14px; | |
color: darken($white, 30%); | |
display: block; | |
letter-spacing: .4px; | |
} | |
} | |
} | |
} | |
} |
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet" /> |