Saltar al contenido principal
Codigo Heroe
Tarea anterior
Transformaciones 2D29/29
A la lista de tareas
  1. 1. Desplazamiento horizontal con translateX
  2. 2. Desplazamiento vertical con translateY
  3. 3. Desplazamiento en dos ejes con translate
  4. 4. Cambios de tamaño con scale
  5. 5. Rotación y orden de las transformaciones
  6. 6. Combinación de desplazamiento y escala
  7. 7. Recorridos con translate
  8. 8. Combinación de rotate y translate
  9. 9. Inclinación con skewX y skewY
  10. 10. Combinación de escala, desplazamiento y rotación
  11. 11. Reflejos con valores negativos de scale
  12. 12. transform-origin y cambios de escala
  13. 13. Transiciones de escala y transform-origin
  14. 14. transform-origin y rotación
  15. 15. Rotación animada y transform-origin
  16. 16. Centrado con transform: translate
  17. 17. Rotación del título de un bloque
  18. 18. Inclinación y rotación de texto decorativo
  19. 19. Sombras con pseudoelementos y rotate
  20. 20. Efectos al pasar el cursor: rotación de un ícono
  21. 21. Efectos al pasar el cursor: escala y opacidad
  22. 22. Efectos al pasar el cursor: aparición de un ícono
  23. 23. Efectos al pasar el cursor: galería
  24. 24. Cartas superpuestas con rotate
  25. 25. Menú circular: posición y origen de rotación
  26. 26. Menú circular: rotación e inclinación
  27. 27. Menú circular: orientación de los enlaces
  28. 28. Menú circular: forma y recorte
  29. 29. Menú circular: añadir opciones
Lista de tareas
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Menú circular: añadir opciones

Esta es la técnica completa para crear un menú circular:

  1. Movemos el eje de rotación de las opciones a una esquina con transform-origin y hacemos coincidir esa esquina con el centro del menú.
  2. Inclinamos y giramos las opciones con estas fórmulas:

    [ángulo del sector] = 360° / [cantidad de opciones previstas]
    [rotación de la opción n] = (n - 1) * [ángulo del sector]
    [ángulo de inclinación] = 90° - [ángulo del sector]
  3. Deshacemos la inclinación y giramos el contenido de las opciones:

    [inclinación del contenido] = -1 * [inclinación de la opción]
    [ángulo de rotación] = -1 * (90° - ([ángulo del sector] / 2))
  4. Desplazamos el contenido de las opciones hacia el centro del círculo.
  5. Redondeamos el contenedor con border-radius y recortamos lo que sobra con overflow: hidden.

Después podemos añadir otros detalles: fondos diferentes para cada opción, un borde para el contenedor y lo que se nos ocurra.

Conservando los seis sectores previstos, añadiremos una tercera opción y formaremos un semicírculo. Su ángulo de rotación será 120°:

Esta serie de ejercicios está inspirada en el artículo Building a Circular Navigation with CSS Transforms. Los ejemplos se adaptaron y simplificaron para estos ejercicios.

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="es"> <head> <title>Menú circular: añadir opciones</title> <meta charset="utf-8"> <link rel="stylesheet" href="style.css"> </head> <body> <nav class="circle-menu"> <div class="center"></div> <ul> <li><a href="#">monitor</a></li> <li><a href="#">apertura</a></li> </ul> </nav> </body> </html>
CSS
body { margin: 0; padding: 0; background-color: #f5f5f5; } .circle-menu { position: relative; width: 400px; height: 400px; margin: 50px auto; background-color: white; box-shadow: 0 0 3px #cccccc; } .circle-menu ul { position: absolute; width: 300px; height: 300px; margin: 50px; padding: 0; list-style: none; border-radius: 50%; overflow: hidden; } .circle-menu .center { position: absolute; top: 195px; left: 195px; z-index: 1000; border: 5px solid #34495e; border-radius: 50%; box-shadow: 0 0 3px #cccccc; } .circle-menu li { position: absolute; top: -10px; left: -10px; width: 160px; height: 160px; transform-origin: 100% 100%; overflow: hidden; } .circle-menu li:nth-child(1) { transform: rotate(0deg) skew(30deg); } .circle-menu li:nth-child(2) { transform: rotate(60deg) skew(30deg); } .circle-menu li a { display: block; width: 160px; height: 160px; margin-top: 40px; margin-left: 40px; font-size: 0; background: rgba(241, 196, 15, 0.5) url("icons/monitor-4x.png") no-repeat 50% 40%; transition: background-color 0.5s; transform: skew(-30deg) rotate(-60deg); } .circle-menu li:nth-child(even) a { background-color: rgba(241, 196, 15, 0.75); } .circle-menu li a:hover { background-color: rgba(241, 196, 15, 1); } /* Íconos */ .circle-menu li:nth-child(2) a { background-image: url("icons/aperture-4x.png"); } .circle-menu li:nth-child(3) a { background-image: url("icons/audio-4x.png"); } .circle-menu li:nth-child(4) a { background-image: url("icons/battery-empty-4x.png"); } .circle-menu li:nth-child(5) a { background-image: url("icons/bluetooth-4x.png"); } .circle-menu li:nth-child(6) a { background-image: url("icons/browser-4x.png"); }

El código ha cambiado, haz clic en "Actualizar" o activa la ejecución automática.

Ha ido a otra página

Haga clic dentro del mininavegador para poner el foco en esta ventana.

100%
ObjetivosRealizado
0
    1. Añade al menú un tercer elemento de lista con un enlace dentro.
    2. Gira el tercer elemento de la lista 120°.
    3. Después inclínalo 30°.
    1. Completa el menú hasta que tenga 6 opciones.
    Codigo Heroe

    © 2023-2026, codigoheroe.com