Diseño responsivo III: diseño adaptativo con unidades relativas

Diseño responsivo III: diseño adaptativo con unidades relativas

Como diseñadores, nos vemos siempre en la obligación de ofrecer una experiencia de usuario excepcional. Una de esas técnicas es el uso de unidades relativas en lugar de unidades absolutas al definir tamaños y dimensiones en CSS. Este enfoque no solo simplifica el proceso de diseño, sino que también garantiza una adaptabilidad óptima en una amplia gama de dispositivos y pantallas. En este artículo, exploraremos en detalle qué son las unidades relativas, por qué son importantes y cómo pueden mejorar significativamente la calidad y la flexibilidad del diseño web.

El uso de unidades relativas en el diseño web es una práctica fundamental para crear experiencias de usuario adaptables, escalables y fáciles de mantener. Al adoptar em, rem y porcentajes en lugar de dimensiones absolutas, los diseñadores pueden garantizar que su contenido se vea y funcione de manera óptima en una amplia variedad de dispositivos y pantallas. Además, las unidades relativas fomentan la accesibilidad al permitir que los usuarios ajusten el tamaño del texto según sus preferencias personales, lo que resulta en una experiencia más inclusiva para todos. En resumen, al priorizar las unidades relativas en el diseño web, los diseñadores pueden crear sitios web que sean flexibles, adaptables y atractivos para una audiencia diversa.

¿Qué son las unidades relativas?

En CSS, las unidades relativas son aquellas cuyo tamaño se calcula en relación a otra propiedad, generalmente el tamaño de la fuente del elemento padre. Las unidades relativas más comunes son:

  • Em (em): Esta unidad representa el tamaño de la fuente actual. Por ejemplo, si el tamaño de la fuente de un elemento es de 16 píxeles, 1em equivale a 16 píxeles. Si se establece un tamaño de fuente de 1.5em en un elemento con una fuente de 16 píxeles, el tamaño de fuente resultante sería de 24 píxeles (1.5 * 16).
    Se recomienda su uso para tamaños de fuente y dimensiones que deben ajustarse en relación con el contenido de texto.
  • Rem (rem): Similar a em, pero en lugar de basarse en el tamaño de la fuente del elemento padre, rem se calcula utilizando el tamaño de fuente del elemento raíz (generalmente el tamaño de fuente del elemento <html>). Esto garantiza una mayor consistencia en todo el documento, ya que rem no se ve afectado por los cambios en el tamaño de la fuente de los elementos secundarios.
    Rem es ideal para establecer dimensiones globales que deben mantenerse consistentes en todo el sitio web, como márgenes, rellenos y anchos de contenedores.

Vamos. a intentar verlo de un modo más claro en el siguiente ejemplo:

html {
    font-size: 16px;
}

.nombre_clase {
    font-size: 24px;
    padding: 2em;    margin: 2rem;
}

El padding definido con unidades em, se refiere al tamaño de la fuente de la clase a la que pertenece, es decir, padding: 2em = 2×24= 48px El margin, definido con unidades rem, se refiere al tamaño fuente del documento, es decir, margin: 2rem = 2×16=32px

La mayoría de los navegadores tienen por defecto el tamaño de texto de párrafo de 16px, este valor lo puede cambiar el usuario modificando las preferencias del navegador, esto significa que cuando utilizamos las unidades relativas rem, además, estamos dando la oportunidad al usuario de modificar el tamaño de todo el contenido de la web a su antojo, según sus preferencias.

Hemos definido em y rem para definir los tamaños de fuente, ahora vamos a ver cómo definir relativamente los demás tamaños.

  • Porcentaje (%): Aunque no exclusivamente relativa al tamaño de la fuente, el porcentaje también se utiliza comúnmente para definir dimensiones en relación con el tamaño de su elemento padre. Por ejemplo, un ancho del 50% en un div hará que ese div tenga la mitad del ancho de su contenedor padre.
  • VH: significa “viewport height”, es decir, altura de la ventana gráfica, que es la altura de la pantalla visible y que depende de cada uno de los dispositivos. 100VH representaría el 100% de la altura de la ventana gráfica o la altura completa de la pantalla.
  • VW: significa «viewport weight», es decir, anchura de la ventana gráfica, el ancho de la pantalla visible, y 100VW representa el 100% del ancho de la pantalla.

La diferencia del % con VH y VW, es que el primero se refiere al elemento padre, y los segundos al tamaño de pantalla del dispositivo, los tres son imprescindibles si queremos ajustar elementos en función de la pantalla del dispositivo.

Ventajas del uso de unidades relativas:

  1. Escalabilidad y Adaptabilidad: Una de las principales ventajas de las unidades relativas es su capacidad para adaptarse a diferentes tamaños de pantalla y dispositivos. Al utilizar em o rem para definir tamaños de fuente y dimensiones de diseño, el contenido se ajusta automáticamente según el tamaño de la fuente del usuario o el tamaño de la pantalla, lo que garantiza una experiencia de usuario consistente y atractiva en todos los dispositivos, desde teléfonos móviles hasta pantallas de escritorio.
  2. Facilidad de Mantenimiento: Al evitar tamaños absolutos en favor de unidades relativas, se simplifica el proceso de mantenimiento del sitio web. Cambiar el tamaño de fuente base en el elemento raíz afectará automáticamente a todas las demás dimensiones definidas en unidades relativas, lo que facilita ajustar el diseño según las necesidades cambiantes del proyecto o las preferencias del usuario.
  3. Accesibilidad Mejorada: El uso de unidades relativas puede mejorar la accesibilidad del sitio web al permitir que los usuarios ajusten el tamaño de la fuente según sus preferencias. Esto es especialmente beneficioso para aquellos con discapacidades visuales o que simplemente prefieren un tamaño de fuente más grande para facilitar la lectura.
  4. Compatibilidad con Diseño Responsivo: Las unidades relativas son fundamentales para el diseño web receptivo, donde el diseño y el contenido se adaptan dinámicamente a diferentes resoluciones y tamaños de pantalla. Al utilizar em, rem y porcentajes en lugar de píxeles absolutos, se garantiza que el diseño se ajuste sin problemas a una variedad de dispositivos y configuraciones de pantalla.

 

 

Share and Enjoy !

Shares
Diseño web. Home Full Screen con flecha para continuar navegación.

Diseño web. Home Full Screen con flecha para continuar navegación.

En el diseño web, como en los demás diseños, las tendencias vienen y van. Sin embargo el Full Screen en diseño web se ha mantenido durante varios años, sigue siendo una apuesta segura. En este post, además de comentar algún aspecto de este tipo de diseños, os dejo el código explicado para que podáis hacer la vuestra.

En las web full screen, el contenido llena toda la pantalla del navegador, independientemente de la resolución que estemos usando, son responsive.
Son pantallas con un fuerte impacto visual, ideales para presentar un producto. El menú suele ser de hamburguesa y un icono en forma de flecha o ratón nos indica que la web continúa en navegación vertical.

El diseño full screen suele plantearse solo en el primer módulo de información, pasando luego a una web de navegación vertical, aunque también hay diseñadores que apuestan por hacer todos los módulos de contenido en full screen.

Vamos por partes:

1 BACKGROUND. IMAGEN DE FONDO

Es importante encontrar una imagen que no deje indiferente, que sea impactante y a ser posible «limpia», ya que sobre ella habrá texto, y cualquier detalle pequeño puede no verse. Además aconsejo meter un filtro que oscurezca un poco la imagen para ganar en legibilidad del texto que va encima.
En este ejemplo, he usado dos imágenes con formatos distintos para que veáis la diferencia. La primera (rosa) es vertical y la del segundo bloque apaisada. Si modificáis el tamaño de la ventana del navegador, veréis que el comportamiento de la segunda se adapta mucho mejor a todas las resoluciones desktop, y la primera funcionará mejor en las pantallas mobile.

Vamos al código CSS. Se trata de hacer que la imagen ocupe el 100% de la ventana del navegador:

  • capa1 y capa2; son los contenedores de los dos módulos. En este ejemplo de web he usado dos módulos full screen.
  • height: 100vh;  con esta orden, le decimos a la CSS que el alto de la imagen tiene que ocupar el 100% del alto de la ventana del navegador.
  • background-size:cover; indicamos que la imagen debe ocupar todo el contenedor, incluso si tiene que estirarse.
  • background-position: center top; aquí indicamos que la imagen crezca o encoja desde el punto situado en el eje central de la imagen y desde su punto superior.
  • padding: 200px 0 0 10%; para colocar el texto, he decidido separarlo 200px del top y un 10% del ancho de pantalla del margen izquierdo.

Como decía antes, es conveniente oscurecer un poco la imagen de fondo para hacer más legible el texto, esto puedes hacerlo de dos maneras, la primera con photoshop o el editor de imágenes que suelas utilizar, la segunda forma de hacerlo es con CSS, le aplicamos a toda la capa un gradiente negro con una opacidad que iremos modificando según nuestra conveniencia, en este caso un 60%

2 FLECHA EN EL BOTTOM PARA CONTINUAR NAVEGACIÓN

En la parte inferior de la ventana de navegación, he colocado una flecha que con un movimiento suave vertical, indica que la navegación sigue más abajo. Además he puesto un enlace en la flecha para que al pulsar sobre ella muestre el segundo bloque, vamos a ver cómo se hace esto:

En primer lugar, en lugar de usar una imagen png para la flecha, usamos una fuente, de ese modo no se pixelará y será más nítida en cualquier resolución. Para ello usamos este icono.

En el código, podéis ver todos los parámetros de la flecha. Con translateY movemos la flecha 20px en vertical. La duración de la animación es de 0.7s y es un loop infinito.

A continuación os dejo el código, espero que os sea útil.
NOTA: coloca el visor en 0.5x para ver bien el efecto

 

See the Pen
LANDING FULL SCREEN
by Omar Benyakhlef Domnguez (@gloobs)
on CodePen.

Share and Enjoy !

Shares
Alinear capas sin salto de línea con CSS

Alinear capas sin salto de línea con CSS

Existen varias maneras de alinear capas sin que se produzca salto de línea. Para mi esta es la más sencilla, y además es responsive, por lo que no tendrás ningún problema independientemente de la resolución de pantalla que esté usando el usuario de tu sitio.

Este es el único código que tienes que usar en tu CSS en el contenedor que va a alojar las distintas capas, como verás es bien sencillo:

.box {display: flex; align-items: stretch; flex-wrap: wrap;}

Con esto ya estaría, pero vamos a darle un poco de estilo a las capas que van dentro, para que no quede feo:

.uno, .dos, .tres, .cuatro, .cinco, .seis {padding:50px; color: #fff; width: 150px; font-family: ‘Bebas Neue’, cursive; font-size:30px}
.uno {background-color: #fdd129}
.dos {background-color: #c91818}
.tres {background-color: #2d4f62}
.cuatro {background-color: #498356}
.cinco {background-color: #f18f39}
.seis {background-color: #000}

Simplemente hemos dado a cada capa un color y a todas unas características de ancho, tipo de fuente y padding.

En el HTML, colocamos la capa principal y contenedor (box) y dentro las capas que van a ir alineadas.

<div class=»box»>
<div class=»uno»>Uno</div>
<div class=»dos»>Dos</div>
<div class=»tres»>Tres
<br>tiene
<br>texto
<br>extra
</div>
<div class=»cuatro»>Cuatro</div>
<div class=»cinco»>Cinco</div>
<div class=»seis»>Seis</div>
</div>

Y ya está !!!

Ahora entra en el siguiente enlace para verlo funcionando y prueba a hacer más grande y pequeña la ventana del navegador, para comprobar cómo se va adaptando automáticamente a cualquier resolución de pantalla, colocando las que no entran en la siguiente línea.

VER EJEMPLO FUNCIONANDO

 
 

Share and Enjoy !

Shares
Centrar horizontal y verticalmente un texto sobre un div con background image

Centrar horizontal y verticalmente un texto sobre un div con background image

 

En numerosas ocasiones, centrar un texto dentro de un div, se convierte en una tarea complicada. En este post vamos a enseñarte a centrar el texto tanto horizontal como verticalmente y que además sea adaptativo.

Vamos a ver cómo se hace este ejemplo; se trata de una capa que contiene un background-image y sobre la que hemos puesto un texto, que ha quedado centrado horizontal y verticalmente, independientemente del tamaño de la caja contenedora.

GLOOBS
DESIGN

Vamos a ver cómo lo hemos hecho.

Para empezar, definimos un contenedor con el tamaño que va a llevar el módulo, y le aplicamos una CSS en la que simplemente definimos un width, un height y el background con la imagen.

<div class="contenedor"></div>
  .contenedor{width:350px; height: 500px;
background-image: url("nombreimagen.jpg");}

Dentro de este contenedor, metemos la caja que va a llevar el texto centrado. Para ello he visto que hay muchas maneras de hacerlo, pero esta me parece la más completa, ya que no hace falta definir el tamaño del contenedor, de modo que conseguimos que funcione en cualquier tipo de resolución de pantalla, desktop o mobile. Se trata del flex, un módulo de caja flexible, conocido como flexbox, un método que mejora las capacidades de alineación.
No hace falta que sepáis flex, basta con que metáis esta CSS dentro del div que contiene al texto y que va dentro del que acabamos de ver (contenedor):

<div class="contenedor">
   <div class="bloque">Texto</div>
</div>

.contenedor{width:350px; height: 500px;
background-image: url("nombreimagen.jpg");}

.bloque{display: flex; flex-direction: column;
justify-content: center; align-items: center;
flex:1; height:100%; }

Y eso es todo, así de fácil !!!

 

 

 

Share and Enjoy !

Shares
Efectos sorprendentes sobre tus textos

Efectos sorprendentes sobre tus textos

Hoy traemos un efecto espectacular para tus textos, una composición retro, con luces de neón.
Solo tienes que cambiar los textos y listo, Yoav Kadosh nos ha dejado todo preparado para que simplemente tengamos que copiar la CSS y poder usarlo.
Se trata de puro CSS, con máscaras, inclinación de texto, efecto neón… Y además de ser compatible con Chrome, Edge, Firefox, Opera, Safari, es responsive, lo que significa que lo puedes usar en cualquier proyecto sin miedo a que no se vea en móvil.
Échale un vistazo, cambia los textos en la parte html y sorpréndete !!

VER DEMO Y CÓDIGO

 

 

Share and Enjoy !

Shares
Anima tus contenidos con CSS

Anima tus contenidos con CSS

La animación de contenidos en la web es una práctica habitual en el diseño web. Desde hacer que las fotos aparezcan suavemente, a que la página se vaya formando según hacemos scroll, apareciendo los contenidos por los lados… Se trata de enfatizar contenidos o llamar la atención del usuario y mostrarle un diseño atractivo.
Existe una forma muy fácil de hacer todos estos efectos y que no suponen excesivo peso para la página, vamos a ver cómo.

Animate.css es una biblioteca de animaciones listas para usar en tus proyectos web.
Si entras en https://animate.style/ a la derecha podrás ver un montón de efectos que se aplican en tiempo real al contenido central de la página.
Vamos a ver cómo usarlo:

Para empezar hacemos la llamada a la librería, puedes descargarla y alojarla en tu host o puedes llamarla así:

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
  />
</head>

Luego, añade a tu texto o imagen la clase que quieres aplicar del siguiente modo:

<img src="imagen.png" class="animate__animated animate__rubberBand">

siendo rubberBand el efecto que quieres aplicar y que puedes sustituir por cualquiera de estos:

  • bounce
  • flash
  • pulse
  • rubberBand
  • shake
  • headShake
  • swing
  • tada
  • wobble
  • jello
  • bounceIn
  • bounceInDown
  • bounceInLeft
  • bounceInRight
  • bounceInUp
  • bounceOut
  • bounceOutDown
  • bounceOutLeft
  • bounceOutRight
  • bounceOutUp
  • fadeIn
  • fadeInDown
  • fadeInDownBig
  • fadeInLeft
  • fadeInLeftBig
  • fadeInRight
  • fadeInRightBig
  • fadeInUp
  • fadeInUpBig
  • fadeOut
  • fadeOutDown
  • fadeOutDownBig
  • fadeOutLeft
  • fadeOutLeftBig
  • fadeOutRight
  • fadeOutRightBig
  • fadeOutUp
  • fadeOutUpBig
  • flipInX
  • flipInY
  • flipOutX
  • flipOutY
  • lightSpeedIn
  • lightSpeedOut
  • rotateIn
  • rotateInDownLeft
  • rotateInDownRight
  • rotateInUpLeft
  • rotateInUpRight
  • rotateOut
  • rotateOutDownLeft
  • rotateOutDownRight
  • rotateOutUpLeft
  • rotateOutUpRight
  • hinge
  • jackInTheBox
  • rollIn
  • rollOut
  • zoomIn
  • zoomInDown
  • zoomInLeft
  • zoomInRight
  • zoomInUp
  • zoomOut
  • zoomOutDown
  • zoomOutLeft
  • zoomOutRight
  • zoomOutUp
  • slideInDown
  • slideInLeft
  • slideInRight
  • slideInUp
  • slideOutDown
  • slideOutLeft
  • slideOutRight
  • slideOutUp

Prueba estas animaciones tanto en textos como imágenes, incluso puedes aplicarlo a un div para mover varios objetos a la vez.

En próximos post veremos cómo controlar estas animaciones, modificando la duración de la animación o el delay, unas opciones que incluso nos pueden servir para crear banners.

 

 

 

Share and Enjoy !

Shares