diff --git a/Natours/starter/css/style.css b/Natours/starter/css/style.css index 16faf4a..a107e1d 100644 --- a/Natours/starter/css/style.css +++ b/Natours/starter/css/style.css @@ -53,17 +53,18 @@ body { top: 40%; left: 50%; transform: translate(-50%,-50%); - /* * Limpiar animaciones para evitar temblores * No se sabe realmente por qué funciona o de dónde viene el error, pero lo hace */ backface-visibility: hidden; + text-align: center; } .heading-primary { color: #fff; text-transform: uppercase; + margin-bottom: 60px; } .heading-primary-main { @@ -71,15 +72,10 @@ body { font-size: 60px; font-weight: 400; letter-spacing: 35px; - - animation-name: moveInLeft; - animation-duration: 1.2s; - animation-timing-function: ease-out; - - /* - animation-delay: 3s; - animation-count: 3; - */ + + animation-name: slideLeft; + animation-duration: 1s; + animation-timing-function: ease-in; } .heading-primary-sub { @@ -87,41 +83,105 @@ body { font-size: 22px; font-weight: 700; letter-spacing: 16px; - /* - animation-name: moveInRight; - animation-duration: 1.2s; - */ - animation: moveInRight 1.2s ease-out; + + animation-name: slideRight; + animation-duration: 1s; + animation-timing-function: ease-in; } -@keyframes moveInLeft{ - 0%{ +@keyframes slideLeft { + 0% { + transform: translateX(-160px); opacity: 0; - transform: translateX(-100px); } - 80%{ - transform: translateX(20px); + 80% { + transform: translateX(15px); } - 100%{ + 100% { + transform: translateX(0); opacity: 1; - transform: translate(0); } } -@keyframes moveInRight{ - 0%{ +@keyframes slideRight { + 0% { + transform: translateX(160px); opacity: 0; - transform: translateX(100px); } - 80%{ - transform: translateX(-20px); + 80% { + transform: translateX(-15px); } - 100%{ + 100% { + transform: translateX(0); opacity: 1; - transform: translate(0); } +} + +@keyframes slideBottom { + 0% { + transform: translateY(50px); + opacity: 0; + } + + 100% { + transform: translateY(0); + opacity: 1; + } +} + +.btn:link, +.btn:visited { + text-transform: uppercase; + text-decoration: none; + padding: 15px 40px; + display: inline-block; + border-radius: 100px; + transition: all 0.2s; + position: relative; +} + +.btn-animated { + animation: slideBottom 0.7s ease-out .75s; + animation-fill-mode: backwards; +} + +.btn:hover { + transform: translateY(-4px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); +} + +.btn:active { + transform: translateY(-1px); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} + +.btn-white { + background-color: #fff; + color: #777; +} + +.btn::after { + content: ""; + display: inline-block; + height: 100%; + width: 100%; + border-radius: 100px; + position: absolute; + top: 0; + left: 0; + z-index: -1; + transition: all 0.4s; +} + +.btn-white::after{ + background-color: #fff; +} + +.btn:hover::after { + transform: scaleX(1.4) scaleY(1.6); + opacity: 0; } \ No newline at end of file diff --git a/Natours/starter/index.html b/Natours/starter/index.html index 6f9e183..970972c 100644 --- a/Natours/starter/index.html +++ b/Natours/starter/index.html @@ -22,6 +22,8 @@ outdoors is where life happens + + Discover our tours diff --git a/README.md b/README.md index e0b1b5f..316aba1 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,7 @@ Hay dos tipos de animaciones: - Con la propiedad 'transition' - Con keyframes - Lo ideal es solo animar con opacity y transform, porque los navegadores están optimizados para ellas dos solo. + +## Pseudo-elementos +Estados especiales de un selector (:hover, :link, etc.) +::after -> Add a virtual element 'after' el elemento