.

Ticker

6/recent/ticker-posts

<div class="route" id="buy"></div>
<section class="giftcard">
  <section class="giftcard-cover">
    <img src="https://i.imgur.com/xOt35LF.png" " width="auto" height="150"> 
  </section>
  <div class="giftcard-content">
    <h2>UN LUGAR CON BOLETO PARA Arctic Monkeys
</h2>
    <address>
      <h3>Maritza Acuña</h3>    
      <a href="https://www.github.com/davidkpiano" target="_blank">www.github.com/davidkpiano</a>    
      <a href="https://www.facebook.com/Grinzitours" target="_blank">https://www.facebook.com/Grinzitours</a>    
    </address>
    <div class="subtext">Comunicate con Grin</div>    
  </div>
  <footer class="giftcard-footer">
    <div class="giftcard-text">
      <h1>De Maritza Acuña</h1>
      <h2>Para Andres Espinoza</h2>
    </div>
    <div class="ribbon">
      <div class="giftwrap">
        <a href="#buy" class="button">Abrir</a>
      </div>
      <div class="bow">
        <i class="fa fa-bookmark"></i>
        <i class="fa fa-bookmark"></i>
      </div>
    </div>
    <div class="giftcard-info">
      <div>

      </div>
      <div>
        <a href="#" class="button secondary">Felicidades!</a>
      </div>
    </div>
  </footer>
</section>

@import url(https://fonts.googleapis.com/css?family=PT+Sans:400,700);

*, *:before, *:after { box-sizing: border-box; position: relative; }

$button-width: 100px;
$button-height: 50px;
$wrap-width: 32%; 
$wrap-height: 18%;
$wrap-duration: 0.6s;
$bow-top: 47%;
$bow-left: 40%;
$easing: cubic-bezier(0.77, 0, 0.175, 1);

$ribbon-delay: $wrap-duration / 3;
$wrap-delay: $wrap-duration * 1.2;

$ribbon-color-foreground: #fed531;
$ribbon-color-background: #db8b22;

$card-width: 500px;
$card-height: 300px;

$color-primary: #1950cc;
$color-gray: #939393;

$footer-height: 5rem;

html {
  height: 100%;
  width: 100%;
  background: #ececec;
}

body {
  height: 100%;
  width: 100%;
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

.route {
  display: none;
}

.giftcard {
  height: $card-height;
  width: $card-width;
  font-family: PT Sans, sans-serif;
  overflow: hidden;
  border-radius: 1.5rem/2rem;
  box-shadow: 8px 10px 16px rgba(0,0,0,0.1);
  transform: translateZ(0);
}

.giftcard-content, .giftcard-cover {
  position: absolute;
  top: 0;
  left: 0;
  height: calc(100% - #{$footer-height});
  width: 100%;
}

.giftcard-cover {
  background: $color-primary;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2;
  
  > .fa-apple {
    color: white;
    font-size: 6rem;
  }
}

.giftcard-content {
  padding: 1rem 2rem;
  color: $color-gray;
  z-index: 1;
  background: white;
  
  > * {
    transform: translateX(3rem);
    opacity: 0;    
  }
  
  h2 {
    font-size: 1.2rem;
    text-transform: uppercase;
  }
  h3 {
    font-size: 1rem;
    margin: 0;
    font-weight: normal;
  }
  h2, h3 {
    color: #232323;
  }
  div { font-size: 1rem; }
  address {
    font-style: normal;
    margin-bottom: 1rem;
  }
  
  a, .subtext { color: $color-gray; }
  
  a {
    display: block;
    text-decoration: none;
  }
}

.giftcard-footer {
  position: absolute;
  bottom: 0;
  left: 0;
  height: $footer-height;
  width: 100%;
  background: white;
  z-index: 3;
  transform: translateZ(0);
  
  > * {
    float: left;
  }
}

.giftcard-text, .giftcard-info {
  width: calc(100% - #{$button-width + $button-height});
  padding: 1rem;
}

.giftcard-text {
  height: 100%;
  padding: 1rem;
  
  > h1, > h2 {
    margin: 0;
    font-weight: normal;
    line-height: 1.1;
  }
  
  h1 {
    font-size: 1.5rem;
    color: $color-primary;
  }
  
  h2 {
    font-size: 1.2rem;
    color: $color-gray;    
  }
}

.giftcard-info {
  position: absolute;
  right: 0;
  top: 0;
  height: 100%;
  text-align: right;
  transform: translateX(100%);
  display: table;
  padding-left: 0;
  background: white;
  
  > * {
    display: table-cell;
    
    &:first-child {
      padding-right: 1rem;
    }
  }
  
  input[type="text"] {
    height: $button-height;
    width: 100%;
    padding: 0 1rem;
    -webkit-appearance: none;
    background: transparent;
    border: 1px solid #dedede;
  }
}

@mixin giftwrap($dx, $dy, $outer: true) {
  $coords: (
    50% - $dx $dx,
    50% + $dx $dx,
    100% - $dy 50% - $dy,
    100% - $dy 50% + $dy,
    50% + $dx 100% - $dx,
    50% - $dx 100% - $dx,
    $dy 50% + $dy,
    $dy 50% - $dy
  );
  
  $bgcoords: (
    nth($coords, 1),
    50% 2 * $dx,
    nth($coords, 2),
    nth($coords, 3),
    100% - 2 * $dy 50%,
    nth($coords, 4),
    nth($coords, 5),
    50% 100% - 2 * $dx,
    nth($coords, 6),
    nth($coords, 7),
    2 * $dy 50%,
    nth($coords, 8),
    nth($coords, 7),
    nth($coords, 6),
    nth($coords, 5),
    nth($coords, 4),
    nth($coords, 3),
    nth($coords, 2),
    nth($coords, 1)
  );
  
  @if not $outer {
    clip-path: polygon(#{join($coords, (), comma)});
  } @else {
    clip-path: polygon(#{join($bgcoords, (), comma)});
  }
}
$width: 100px;
$height: 50px;

.button, input[type="text"] {
  border-radius: 3px;
}

.button {
  display: inline-block;
  width: auto;
  height: $height;
  line-height: 50px;
  text-align: center;
  background: orange;
  color: white;
  font-size: 1.3rem;
  padding-left: 1rem;
  padding-right: 1rem;
  text-decoration: none;
  
  &.secondary {
    background: #009cee;
  }
}

.giftwrap {
  width: $width + $height;
  height: $width + $height;
  
  .button {
    width: $width;
    top: calc(50% - #{$height / 2});
    left: calc(50% - #{$width / 2});
  }
  
  &:before, &:after {
    display: none;
    content: '';
    position: absolute;
    height: ($width + $height);
    width: ($width + $height);
    top: 0;
    left: 0;
  }
  
  &:before {
    @include giftwrap(0%, 0%);
    background: #fc1f33;
    z-index: 2;
  }
  
  &:after {
    @include giftwrap(0%, 0%, false);
    background: #bc0a13;
    z-index: -1;    
  }
}

.bow {
  $bow-size: 1.25rem;
  display: none;
  opacity: 0;
  position: absolute;
  top: calc(#{$bow-top} - #{$bow-size / 2});
  left: calc(#{$bow-left} - #{$bow-size / 2});
  height: $bow-size;
  width: $bow-size;
  /* background: $ribbon-color-foreground; */
  background: #000;
  border-radius: 50%;
  z-index: 3;

  &:after {
    content: '';
    display: block;
    position: absolute;
    height: 100%;
    width: 100%;
    border-radius: 50%;
    background: lighten($ribbon-color-foreground, 10%);
    box-shadow: 0 1px 1px rgba(0,0,0,0.2);
    z-index: 2;
  }
  
  > .fa-bookmark {
    position: absolute;
    top: $bow-size / 2;
    left: $bow-size / 4;
    font-size: 1rem;
    color: $ribbon-color-foreground;
    text-shadow: 0 1px 1px rgba(0,0,0,0.2);
    z-index: 1;
    
    &:first-child { transform: translateX(-$bow-size / 2) scaleY(1.5) rotate(55deg); }
    &:last-child { transform: translateX($bow-size / 2) scaleY(1.5) rotate(-55deg); }    
  }
}

@mixin ribbon($dx, $dy, $outer: true) {
  $width: 10%;
  $hw: $width / 2;
  $left: $bow-left;
  $top: $bow-top;
  
  $bgcoords: (
    $left - $hw $dy,
    $left + $hw $dy,
    $left + $hw $top - $hw,
    100% - $dx $top - $hw,
    100% - $dx $top + $hw,
    $left + $hw $top + $hw,
    $left + $hw 100% - $dy,
    $left - $hw 100% - $dy,
    $left - $hw $top + $hw,
    $dx $top + $hw,
    $dx $top - $hw,
    $left - $hw $top - $hw
  );
  
  $dy-top-inner: ($dy / $top) * ($dy + 5%);
  $dy-bottom-inner: 100% - $dy - ($dy / $top) * (100% - $top - $dy + 5%);
  
  $dx-left-inner:  ($dx / $left) * (100% - $dx + 5%);
  $dx-right-inner: (1 - $dx / $left) * (100% - $dx);
  
  $coords: (
    $left - $hw $dy + $dy-top-inner,
    nth($bgcoords, 1),
    nth($bgcoords, 2),
    $left + $hw $dy + $dy-top-inner,
    
    $dx-right-inner $top - $hw,
    nth($bgcoords, 4),
    nth($bgcoords, 5),
    $dx-right-inner $top + $hw,
    
    $left + $hw $dy-bottom-inner,
    nth($bgcoords, 7),
    nth($bgcoords, 8),
    $left - $hw $dy-bottom-inner,
    
    $dx-left-inner $top + $hw,
    nth($bgcoords, 10),
    nth($bgcoords, 11),
    $dx-left-inner $top - $hw,
    
    $left - $hw $dy + $dy-top-inner,
    $dx-left-inner $top - $hw,
    $dx-left-inner $top + $hw,
    $left - $hw $dy-bottom-inner,
    $left + $hw $dy-bottom-inner,
    $dx-right-inner $top + $hw,
    $dx-right-inner $top - $hw,
    $left + $hw $dy + $dy-top-inner
  );
  
  @if not $outer {
    clip-path: polygon(#{join($bgcoords, (), comma)});
  } @else {
    clip-path: polygon(#{join($coords, (), comma)});
  }
}

.ribbon {
  width: $button-width + $button-height;
  height: $button-width + $button-height;
  top: calc(50% - #{($button-width + $button-height) / 2});

  &:before, &:after {
    display: none;
    content: '';
    position: absolute;
    width: $width + $height;
    height: $width + $height;
    top: 0;
    left: 0;
  }
  
  &:before {
    @include ribbon(25%, 35%, false);
    background: $ribbon-color-background;
    z-index: -1;
  }
  
  &:after {
    @include ribbon(0%, 0%, true);
    background: $ribbon-color-foreground;
    z-index: 2;
  }
}

#buy:target ~ .giftcard {
  .giftwrap > .button {
    animation: button 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.65) forwards;
  }
  .giftwrap {
    &:before, &:after { display: block; }
    &:before { animation: wrap-before-2 $wrap-duration $easing both; }
    &:after { animation: wrap-after-2 $wrap-duration $easing both; } 
  }
  
  .bow {
    display: block;
    animation: bow 0.3s $wrap-duration * 1.2 cubic-bezier(0.175, 0.885, 0.32, 1.65) forwards;
  }
  
  .ribbon {
    &:before, &:after { display: block; }
    &:before { animation: ribbon-before $wrap-duration $ribbon-delay $easing both; }
    &:after { animation: ribbon-after $wrap-duration $ribbon-delay $easing both; } 
  }
  
  .giftcard-footer {
    animation: footer $wrap-duration $wrap-delay $easing both;
  }
  
  .giftcard-cover {
    animation: cover $wrap-duration $wrap-delay $easing both;
  }
  
  .giftcard-content {
    > * { animation: content $wrap-duration $wrap-delay $easing both; }
    
    @for $i from 1 through 3 {
      > *:nth-child(#{$i}) {
        animation-delay: $wrap-delay + ($i - 1) * 0.05s;
      }
    }
  }
}

@keyframes button {
  to { transform: scale(0.9); }
}

@keyframes content {
  to {
    transform: translateX(0);
    opacity: 1;    
  }
}

@keyframes cover {
  to {
    transform: translateY(calc(100% - 1px)) scaleX(0.95);
  }
}

@keyframes footer {
  to {
    transform: translateX(calc(-100% + #{$button-width + $button-height}));
  }
}

@keyframes wrap-before-2 {
  50% {
    @include giftwrap(0%, 0%);
  }
  100% {
    @include giftwrap($wrap-width, $wrap-height);
  }
}

@keyframes wrap-after-2 {
  0% {
    clip-path: polygon(50% 40%, 60% 50%, 50% 60%, 40% 50%);
  }
  49.999% {
    clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  }
  50% {
    @include giftwrap(0%, 0%, false);
  }
  100% { @include giftwrap($wrap-width, $wrap-height, false); }
}

@keyframes ribbon-before {
  0% { @include ribbon($wrap-height + 5%, $wrap-width + 5%, false); }  
  50% { @include ribbon(0%, 0%, false); }
  100% { @include ribbon($wrap-height, $wrap-width, false); }
}

@keyframes ribbon-after {
  0%, 50% { @include ribbon(0%, 0%, true); }
  100% { @include ribbon($wrap-height, $wrap-width, true); }
}

@keyframes bow {
  from { transform: scale(0.8); opacity: 1; }
  to { transform: scale(1); opacity: 1; }
}

Publicar un comentario

0 Comentarios