понедельник, 17 марта 2014 г.

3D CSS3 Effects

3D Выделение с приближением

.box {
  transition: all 500ms cubic-bezier(0.190, 1.000, 0.220, 1.000);

  box-shadow: 0 1px 1px rgba(0,0,0,0.3);
  transform: translateY(0) scale(0.95, 0.95);
}

.box.active {
  box-shadow: 0 11px 18px rgba(0,0,0,0.2);
  transform: translateY(-20px) scale(1, 1);
}

3D Поворот


3D Переворачивающаяся карточка


flip-animations-with-shadow.css

@-webkit-keyframes back {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1)
    rotateY(180deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.024576)
    rotateY(180deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.125424)
    rotateY(180.17135717260666deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.149232)
    rotateY(185.48342952341287deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.15)
    rotateY(221.6397929434164deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.149232)
    rotateY(318.3602070565836deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.125424)
    rotateY(354.51657047658716deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.024576)
    rotateY(359.8286428273933deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.000768)
    rotateY(360deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1)
    rotateY(360deg);
  }


}

@-moz-keyframes back {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1)
    rotateY(180deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.024576)
    rotateY(180deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.125424)
    rotateY(180.17135717260666deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.149232)
    rotateY(185.48342952341287deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.15)
    rotateY(221.6397929434164deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.149232)
    rotateY(318.3602070565836deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.125424)
    rotateY(354.51657047658716deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.024576)
    rotateY(359.8286428273933deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.000768)
    rotateY(360deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1)
    rotateY(360deg);
  }


}

@-ms-keyframes back {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1)
    rotateY(180deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.024576)
    rotateY(180deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.125424)
    rotateY(180.17135717260666deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.149232)
    rotateY(185.48342952341287deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.15)
    rotateY(221.6397929434164deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.149232)
    rotateY(318.3602070565836deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.125424)
    rotateY(354.51657047658716deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.024576)
    rotateY(359.8286428273933deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.000768)
    rotateY(360deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1)
    rotateY(360deg);
  }


}

@-o-keyframes back {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -o-transform:
    scale(1)
    rotateY(180deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.024576)
    rotateY(180deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.125424)
    rotateY(180.17135717260666deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.149232)
    rotateY(185.48342952341287deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.15)
    rotateY(221.6397929434164deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.149232)
    rotateY(318.3602070565836deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.125424)
    rotateY(354.51657047658716deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.024576)
    rotateY(359.8286428273933deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.000768)
    rotateY(360deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -o-transform:
    scale(1)
    rotateY(360deg);
  }


}

@keyframes back {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    transform:
    scale(1)
    rotateY(180deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    transform:
    scale(1.000768)
    rotateY(180deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    transform:
    scale(1.024576)
    rotateY(180deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    transform:
    scale(1.125424)
    rotateY(180.17135717260666deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    transform:
    scale(1.149232)
    rotateY(185.48342952341287deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    transform:
    scale(1.15)
    rotateY(221.6397929434164deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    transform:
    scale(1.149232)
    rotateY(318.3602070565836deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    transform:
    scale(1.125424)
    rotateY(354.51657047658716deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    transform:
    scale(1.024576)
    rotateY(359.8286428273933deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    transform:
    scale(1.000768)
    rotateY(360deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    transform:
    scale(1)
    rotateY(360deg);
  }


}



@-webkit-keyframes front {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1)
    rotateY(0deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.000768)
    rotateY(0deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.024576)
    rotateY(0deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.125424)
    rotateY(0.17135717260665195deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.149232)
    rotateY(5.4834295234128625deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.15)
    rotateY(41.639792943416424deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.149232)
    rotateY(138.36020705658356deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.125424)
    rotateY(174.51657047658713deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.024576)
    rotateY(179.82864282739334deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -webkit-transform:
    scale(1)
    rotateY(180deg);
  }


}

@-moz-keyframes front {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1)
    rotateY(0deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.000768)
    rotateY(0deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.024576)
    rotateY(0deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.125424)
    rotateY(0.17135717260665195deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.149232)
    rotateY(5.4834295234128625deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.15)
    rotateY(41.639792943416424deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.149232)
    rotateY(138.36020705658356deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.125424)
    rotateY(174.51657047658713deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.024576)
    rotateY(179.82864282739334deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -moz-transform:
    scale(1)
    rotateY(180deg);
  }


}

@-ms-keyframes front {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1)
    rotateY(0deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.000768)
    rotateY(0deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.024576)
    rotateY(0deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.125424)
    rotateY(0.17135717260665195deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.149232)
    rotateY(5.4834295234128625deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.15)
    rotateY(41.639792943416424deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.149232)
    rotateY(138.36020705658356deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.125424)
    rotateY(174.51657047658713deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.024576)
    rotateY(179.82864282739334deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -ms-transform:
    scale(1)
    rotateY(180deg);
  }


}

@-o-keyframes front {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -o-transform:
    scale(1)
    rotateY(0deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.000768)
    rotateY(0deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.024576)
    rotateY(0deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.125424)
    rotateY(0.17135717260665195deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.149232)
    rotateY(5.4834295234128625deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.15)
    rotateY(41.639792943416424deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.149232)
    rotateY(138.36020705658356deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.125424)
    rotateY(174.51657047658713deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.024576)
    rotateY(179.82864282739334deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    -o-transform:
    scale(1.000768)
    rotateY(180deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    -o-transform:
    scale(1)
    rotateY(180deg);
  }


}

@keyframes front {
  0% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    transform:
    scale(1)
    rotateY(0deg);
  }

  10% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    transform:
    scale(1.000768)
    rotateY(0deg);
  }

  20% {
    box-shadow: 0px 4.112960000000001px 4.112960000000001px rgba(0,0,0,0.3);
    transform:
    scale(1.024576)
    rotateY(0deg);
  }

  30% {
    box-shadow: 0px 16.88704px 16.88704px rgba(0,0,0,0.3);
    transform:
    scale(1.125424)
    rotateY(0.17135717260665195deg);
  }

  40% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    transform:
    scale(1.149232)
    rotateY(5.4834295234128625deg);
  }

  50% {
    box-shadow: 0px 20px 20px rgba(0,0,0,0.3);
    transform:
    scale(1.15)
    rotateY(41.639792943416424deg);
  }

  60% {
    box-shadow: 0px 19.90272px 19.90272px rgba(0,0,0,0.3);
    transform:
    scale(1.149232)
    rotateY(138.36020705658356deg);
  }

  70% {
    box-shadow: 0px 16.887040000000006px 16.887040000000006px rgba(0,0,0,0.3);
    transform:
    scale(1.125424)
    rotateY(174.51657047658713deg);
  }

  80% {
    box-shadow: 0px 4.112959999999997px 4.112959999999997px rgba(0,0,0,0.3);
    transform:
    scale(1.024576)
    rotateY(179.82864282739334deg);
  }

  90% {
    box-shadow: 0px 1.0972799999999998px 1.0972799999999998px rgba(0,0,0,0.3);
    transform:
    scale(1.000768)
    rotateY(180deg);
  }

  100% {
    box-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    transform:
    scale(1)
    rotateY(180deg);
  }


}

index.html

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width">

  <title></title>

  <link rel="stylesheet" href="flip-animations-with-shadow.css">
  <style>

    html, body {
      width: 100%;
      height: 100%;
      margin: 0;
      background: #fcfcfc;
      font-family: Helvetica, Arial, sans-serif;
    }

    #container {
      -webkit-perspective: 1000px;
      -moz-perspective: 1000px;
      -ms-perspective: 1000px;
      -o-perspective: 1000px;
      perspective: 1000px;
      width: 100%;
      height: 100%;
    }

    .box,
    .box-back {

      background: url(flip-card-front.jpg) center center no-repeat;
      background-size: 200px 300px;

      width: 200px;
      height: 300px;
      border-radius: 3px;
      position: absolute;
      left: 50%;
      top: 50%;
      margin: -150px 0 0 -100px;

      -webkit-backface-visibility: hidden;
      -moz-backface-visibility: hidden;
      -ms-backface-visibility: hidden;
      -o-backface-visibility: hidden;
      backface-visibility: hidden;

    }

    .box-back {

      background: url(flip-card-back.jpg) center center no-repeat;
      background-size: 200px 300px;

      -webkit-transform: rotateY(180deg);
      -moz-transform: rotateY(180deg);
      -ms-transform: rotateY(180deg);
      -o-transform: rotateY(180deg);
      transform: rotateY(180deg);
    }

    .livedemo {
      width: 100px;
      background: #333;
      color: #FFF !important;
      font-size: 14px;
      padding: 7px 10px;
      border-radius: 4px;
      border: none;
      transition: background 0.3s ease-out;

      position: absolute;
      bottom: 10px;
      left: 50%;
      margin-left: -50px;
    }

    .livedemo:hover {
      background: #50C0FB;
    }

    #container.active .box,
    #container.active .box:after,
    #container.active .box-back:after {
      -webkit-animation: front 650ms 0s 1 linear forwards;
      -moz-animation:    front 650ms 0s 1 linear forwards;
      -o-animation:      front 650ms 0s 1 linear forwards;
      animation:         front 650ms 0s 1 linear forwards;
    }

    #container.active .box-back {

      -webkit-animation: back 650ms 0s 1 linear forwards;
      -moz-animation:    back 650ms 0s 1 linear forwards;
      -o-animation:      back 650ms 0s 1 linear forwards;
      animation:         back 650ms 0s 1 linear forwards;
    }

    #container.active .box:after,
    #container.active .box-back:after {
      -webkit-animation-name: shadow;
      -moz-animation-name:    shadow;
      -o-animation-name:      shadow;
      animation-name:         shadow;
    }

    #container.active .box,
    #container.active .box-back,
    #container.active .box:after,
    #container.active .box-back:after {
      -webkit-animation-play-state: running;
      -moz-animation-play-state:    running;
      -o-animation-play-state:      running;
      animation-play-state:         running;
    }

    #container.reverse .box {

      -webkit-transform: scale(1) rotateY(180deg);
      -moz-transform: scale(1) rotateY(180deg);
      -ms-transform: scale(1) rotateY(180deg);
      -o-transform: scale(1) rotateY(180deg);
      transform: scale(1) rotateY(180deg);

      -webkit-animation-direction: reverse;
      -moz-animation-direction:    reverse;
      -o-animation-direction:      reverse;
      animation-direction:         reverse;
    }

    #container.reverse .box-back {

      -webkit-transform: scale(1) rotateY(360deg);
      -moz-transform: scale(1) rotateY(360deg);
      -ms-transform: scale(1) rotateY(360deg);
      -o-transform: scale(1) rotateY(360deg);
      transform: scale(1) rotateY(360deg);

      -webkit-animation-direction: reverse;
      -moz-animation-direction:    reverse;
      -o-animation-direction:      reverse;
      animation-direction:         reverse;
    }

  </style>
</head>
<body>

  <div id="container">
    <div class="box"></div>
    <div class="box-back"></div>
  </div>

  <button id="animate" class="livedemo">Animate</button>

  <script>

    // shim layer with setTimeout fallback
    // always got hugz for Paul Irish
    window.requestAnimFrame = (function(){
      return  window.requestAnimationFrame       ||
              window.webkitRequestAnimationFrame ||
              window.mozRequestAnimationFrame    ||
              function( callback ){
                window.setTimeout(callback, 1000 / 60);
              };
    })();

    var goButton = document.getElementById("animate");
    var container = document.getElementById("container");
    var animating = false;

    goButton.addEventListener('click', function() {

      if (animating)
        return;

      container.classList.add('active');
      animating = true;

      setTimeout(function() {
        requestAnimFrame(function() {
          animating = false;
          container.classList.remove('active');
          container.classList.toggle('reverse');
        });
      }, 680);
    });
  </script>
</body>
</html>

По мотивам статьи: aerotwist.com/tutorials/protip-nobody-expects-3d

четверг, 13 марта 2014 г.

Вертикальное центрирование текста внутри DIV

A.) Если текст состоит только из одной строки:

HTML:

<div>vertically centered text</div>

CSS:

div {
  height: 20px;
  line-height: 20px; <-- это значение вы должны задать по высотке div
  vertical-align: middle;
}

B.) Если текст состоит только из нескольких строк:

HTML:

<div><span>vertically centered<br />text</span></div>

CSS:

div {
    height: 200px;
    width: 200px;
    line-height: 200px; <-- устанавливаем значение  line-height для центрирования текста по вертикали
    border: 1px solid black;
    text-align:center;
    margin: 10px;
}

span {
    display: inline-block;
    vertical-align: middle;
    line-height: 1em; <-- возвращаем значение line-height для текста к исходному
}

среда, 5 марта 2014 г.

Блок-схема на CSS



<!DOCTYPE html>
<html>
<style>

* {
    margin: 0;
    padding: 0;
}

.tree ul {
    position: relative;
    padding-top: 20px;
}

.tree li {
    position: relative;
    float: left;
    padding: 20px 5px 0 5px;
    list-style-type: none;
    text-align: center;
}

/*We will use ::before and ::after to draw the connectors*/
/*
.tree li::before,
.tree li::after {
    content: '';
    position: absolute;
    width: 50%;
    height: 20px;
    top: 0;
    right: 50%;
    border-top: 1px solid #ccc;
}

.tree li::after {
    left: 50%;
    right: auto;
    border-left: 1px solid #ccc;
}
*/
/*We need to remove left-right connectors from elements without any siblings*/
/*
.tree li:only-child::after,
.tree li:only-child::before {
    display: none;
}
*/
/*Remove space from the top of single children*/
/*
.tree li:only-child {
    padding-top: 0;
}
*/
/*Remove left connector from first child and right connector from last child*/
/*
.tree li:first-child::before,
.tree li:last-child::after {
    border: 0 none;
}
*/
/*Adding back the vertical connector to the last nodes*/
/*
.tree li:last-child::before {
    border-right: 1px solid #ccc;
}
*/
/*Time to add downward connectors from parents*/
/*
.tree ul ul::before {
    content: '';
    position: absolute;
    width: 0;
    height: 20px;
    top: 0;
    left: 50%;
    border-left: 1px solid #ccc;
}
*/
.tree li a {
    display: inline-block;
    padding: 5px 10px;
    border: 1px solid #ccc;
    text-decoration: none;
    color: #666;
    font-family: arial, verdana, tahoma;
    font-size: 11px;
}

/*Time for some hover effects*/
/*We will apply the hover effect the the lineage of the element also*/

.tree li a:hover,
.tree li a:hover+ul li a {
    background: #c8e4f8;
    border: 1px solid #94a0b4;
    color: #000;
}

/*Connector styles on hover*/
/*
.tree li a:hover+ul li::after,
.tree li a:hover+ul li::before,
.tree li a:hover+ul::before,
.tree li a:hover+ul ul::before {
    border-color:  #94a0b4;
}
*/
</style>
<head><title>Tree</title></head>
<body>


<div class="tree" style="width: 800px; height: 500px;  overflow: hidden; border: 1px solid black;">
 <ul>
  <li>
   <a href="#">Parent</a><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div><div style="height: 1px; position: absolute; background-color: black; left: 8.3%; right: 42.5%; top: 66px;"></div>
   <ul>
    <li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%; top: 0;"></div>
     <a href="#">Child</a><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div>
     <ul>
      <li>
       <a href="#">Grand Child</a>
      </li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div>
     </ul>
    </li>
    <li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%; top: 0;"></div>
     <a href="#">Child</a><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div><div style="height: 1px; position: absolute; background-color: black; left: 9%; right: 8.9%; top: 66px;"></div>
     <ul>
      <li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%; top: 0;"></div><a href="#">Grand Child</a></li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div>
      <li>
       <a href="#">Grand Child</a><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div><div style="height: 1px; position: absolute; background-color: black; left: 16%; right: 16%; top: 66px;"></div>
       <ul>
        <li>
         <a href="#">Great Grand Child</a>
        </li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 15%;"></div>
        <li>
         <a href="#">Great Grand Child</a>
        </li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%;"></div>
        <li>
         <a href="#">Great Grand Child</a>
        </li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 85%;"></div>
       </ul>
      </li>
      <li><div style="width: 1px; height: 20px; position: absolute; background-color: black; left: 50%; top: 0;"></div><a href="#">Grand Child</a></li>
     </ul>
    </li>
   </ul>
  </li>
 </ul>
</div>


</body>

вторник, 4 марта 2014 г.

Дерево на CSS 3



Файл index.html

<h2>Achievement Tree</h2>
<ul class="tree"><li>Taking Inventory
    <ul><li>Getting Wood
        <ul><li>Benchmarking
            <ul>
                <li>Time to Farm!
                    <ul>
                        <li>Bake Bread</li>
                        <li>The Lie</li>
                    </ul>
                </li>
                <li>Time to Strike!
                    <ul>
                        <li>Monster Hunter</li>
                        <li>Cow Tipper
                            <ul><li>When Pigs Fly</li></ul>
                        </li>
                    </ul>
                </li>
                <li>Time to Mine!
                    <ul>
                        <li>Getting an Upgrade</li>
                        <li>Hot Topic
                            <ul>
                                <li>Delicious Fish</li>
                                <li>Acquire Hardware
                                    <ul><li>On a Rail</li></ul>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li></ul>
    </li></ul>
</li></ul>
<ul>
    <li>Doesn’t affect lists outside</li>
    <li>like this one</li>
</ul>

Файл index.css

ul.tree    {padding-left: 0}
ul.tree ul {padding-left:1em}
ul.tree li {list-style-type:none}

/* specify line style */
ul.tree li:not(:last-child),
ul.tree li::before {border: 0 solid black}

/* vertical line connecting siblings */
ul.tree li:not(:last-child) {border-left-width: 1px}
/* horizontal line connecting children to the stem */
ul.tree li::before {
    content: "";
    display: inline-block;
    position: relative;
    border-bottom-width: 1px;
    bottom: .3em; /*elevation*/
    min-width: 1ex; /*length*/
    margin-right: 2px;
}
/* vertical line connecting the last sibling
   to the sibling-connecting line */
ul.tree li:last-child::before {
    border-left-width: 1px;
    min-height: .7em; /*line-height - elevation of the horizontal line*/
}