Estire el menú al ancho completo del CSS. ¿Cómo hacer un menú de respuesta flexible en css? Marcado HTML y estilos básicos para menús horizontales
Un diseño bastante común del menú del sitio, cuando el contenedor con él ocupa todo el ancho disponible en la página. En este caso, el primer elemento está adyacente al borde izquierdo y el último al derecho, y la distancia entre todos los elementos es igual. Hoy te contamos cómo se hace esto.
Le ofrecemos un ejemplo de cómo implementar un menú de goma usando CSS para su recurso. En este menú, los elementos se ubicarán en una línea. No se utilizará JavaScript. El contenido del menú se incluirá en una lista regular. La característica principal de dicho menú es su versatilidad, que se expresa en el hecho de que tanto el número como la longitud de los elementos pueden ser cualquiera.
¿Cómo implementar esto?
Cada programador puede ofrecer su propia forma de resolver el problema. Todo depende de su imaginación, nivel de profesionalismo y habilidades. La solución más común a este problema es utilizar una tabla. Además, muchos sugerirían usar javascript. Aquellos que sugerirían usar la propiedad de visualización con el valor mesa o celda de tabla- Me apresuro a enfadarme. Este método no es suficientemente compatible con varios navegadores.
Nuestra solución
Nuestra propuesta se construirá sobre una base sólida de conocimientos de HTML5 y CSS3.
El núcleo del proceso se basa en la propiedad text-align con un valor de justificación. Para aquellos que lo han olvidado, les recuerdo: esta propiedad orienta la alineación del texto en todo el ancho del contenedor.
Hay dos reglas esenciales a seguir al utilizar nuestra solución. La primera es que el ancho del contenedor de elementos de menú debe ser menor que el texto. Es decir, no en una sola línea. La segunda regla importante es que las palabras se estiran por igual, independientemente de si pertenecen al mismo punto o no.
A continuación se muestra el código que sirve como ejemplo de creación de un menú "caucho":
HTML
< ul> < li>< a href= "#" >hogar a> li> < li>< a href= "#" >Blog a> li> < li>< a href= "#" >Noticias a> li> < li>< a href= "#" >Popular a> li> < li>< a href= "#" >Nuevos objetos a> li> ul>
ul (alinear texto: justificar; desbordar: oculto; / * elimina los efectos secundarios del método * / altura: 20px; / * elimina lo innecesario también * / cursor: predeterminado; / * establece la forma original del cursor * / margen: 50px 100px 0 100px; fondo: #eee; relleno: 5px; ) li (pantalla: en línea; / * hace que los elementos del menú sean texto * /) li a (pantalla: bloque en línea; / * arregla el salto de palabra en el menú * / color: # 444; ) a: hover (color: # ff0000;) ul: after ( / * formación de la segunda línea para elaborar el método * / contenido: "1"; margen izquierdo: 100%; altura: 1px; desbordamiento: oculto; pantalla: bloque en línea; )
Para trabajar en el viejo Internet Explower, debe agregar el siguiente código al CSS
ul (z- index: expression (runtimeStyle. zIndex = 1, insertAdjectedHTML ("beforeEnd & apos,"< li class = "last" > li> "));) ul .last (margin-left: 100%;) * html ul (/ * solo se necesita ie6 * / height: 30px;)
Habiendo registrado los valores de propiedad necesarios y el código, obtenemos el siguiente menú de goma:
Desventajas del método
- Código a granel
- Incapacidad para determinar el estado activo de un elemento a través de un selector de clases. Esto se debe a la ruptura de las palabras en los párrafos (si es que hay una). La solución a este problema es agregar otro contenedor dentro de los elementos de la lista.
- Para el menú desplegable, debe personalizar el código debido al impacto negativo del desbordamiento.
¿En qué navegadores funciona?
6.0+ | 6.0+ | 10.5+ | 5.0+ | 3.6+ | - | - |
Menú horizontal es una lista de secciones del sitio, por lo que es más lógico marcarlo dentro del elemento
- y luego aplicar estilos CSS a sus elementos. Esta disposición del menú es la más común debido a las evidentes ventajas en su posicionamiento en una página web.
- Opción del menú
- Opción del menú
- Opción del menú ...
Cómo hacer un menú horizontal: ejemplos de marcado y diseño
Marcado HTML y estilos básicos para un menú horizontal
De forma predeterminada, todos los elementos de la lista se colocan verticalmente, ocupando todo el ancho del elemento contenedor en ancho, que a su vez ocupa todo el ancho de su bloque contenedor.
Marcado HTML para navegación horizontal
Opcionalmente, se puede colocar un menú horizontal dentro de una etiqueta dentro de un elemento. y / o
Hay varias formas de colocarlos. horizontalmente... Primero, debe restablecer los estilos de navegador predeterminados para los elementos de navegación:
Ul (estilo de lista: ninguno; / * eliminar marcadores de lista * / margen: 0; / * eliminar margen superior e inferior igual a 1em * / padding-left: 0; / * eliminar margen izquierdo igual a 40px * /) a ( text-decoration: none; / * eliminar el subrayado del texto del enlace * /)
Método 1.li (pantalla: en línea;)
Poner los elementos de la lista en minúsculas. Como resultado, se colocan horizontalmente, en el lado derecho entre ellos se agrega un espacio igual a 0.4em (calculado en relación con el tamaño de la fuente). Para eliminarlo, agregue un margen derecho li negativo para li (margin-right: -4px;). A continuación, aplicaremos el estilo que queramos a los enlaces.
Método 2.li (flotación: izquierda;)
Flotando los elementos de la lista. Como resultado, se colocan horizontalmente. La altura del bloque de contenedores ul se vuelve cero. Para resolver este problema, agregamos (overflow: hidden;) al ul, expandiéndolo y permitiendo así que contenga elementos flotantes. Para los enlaces, agregue un (display: block;) y modifíquelos como desee.
Método 3.li (pantalla: bloque en línea;)
Hacemos los elementos de la lista inline-block. Están ubicados horizontalmente, se forma un espacio en el lado derecho, como en el primer caso. Para los enlaces, agregue un (display: block;) y modifíquelos como desee.
Método 4.ul (pantalla: flex;)
Haciendo del ul un recipiente flexible usando un modelo. Como resultado, los elementos de la lista se organizan horizontalmente. Agregue un (display: block;) para los enlaces y modifíquelos como desee.
1. Menú adaptable con un efecto de subrayado al pasar el cursor sobre un enlace.
@import url ("https://fonts.googleapis.com/css?family=Ubuntu+Condensed"); .menu-main (list-style: none; margin: 40px 0 5px; padding: 25px 0 5px; text-align: center; background: white;) .menu-main li (display: inline-block;) .menu- main li: after (content: "|"; color: # 606060; display: inline-block; vertical-align: top;) .menu-main li: last-child: after (contenido: ninguno;) .menu-main a (decoración de texto: ninguna; familia de fuentes: "Ubuntu Condensed", sans-serif; espaciado entre letras: 2px; posición: relativa; fondo de relleno: 20px; margen: 0 34px 0 30px; tamaño de fuente: 17px; text-transform: mayúsculas; display: inline-block; transición: color .2s;) .menu-main a, .menu-main a: visitado (color: # 9d999d;) .menu-main a.current, .menu- main a: hover (color: # feb386;) .menu-main a: before, .menu-main a: after (content: ""; position: absolute; height: 4px; top: auto; right: 50%; bottom : -5px; izquierda: 50%; fondo: # feb386; transición: .8s;) .menu-main a: hover: before, .menu-main .current: before (left: 0;) .menu-main a: hover: after, .menu-main .current: after (derecha: 0; ) @media (max-width: 550px) (.menu-main (padding-top: 0;) .menu-main li (display: block;) .menu-main li: after (content: none;) .menu- principal a (relleno: 25px 0 20px; margen: 0 30px; ))2. Menú adaptable para el sitio de la boda
@import url ("https://fonts.googleapis.com/css?family=PT+Sans"); .top-menu (posición: relativa; fondo: #fff; box-shadow: inset 0 0 10px #ccc;) .top-menu: before, .top-menu: after (content: ""; display: block; height : 1px; border-top: 3px solid # 575350; border-bottom: 1px solid # 575350; margin-bottom: 2px;) .top-menu: after (border-bottom: 3px solid # 575350; border-top: 1px solid # 575350; caja-sombra: 0 2px 7px #ccc; margin-top: 2px;) .menu-main (estilo de lista: ninguno; relleno: 0 30px; margen: 0; tamaño de fuente: 18px; alineación de texto: centro; posición: relativa;) .menu-main: before, .menu-main: after (content: "\ 25C8"; line-height: 1; position: absoluta; top: 50%; transform: translateY (-50% );) .menu-main: before (left: 15px;) .menu-main: after (right: 15px;) .menu-main li (display: inline-block; padding: 5px 0;) .menu-main a (decoración de texto: ninguna; pantalla: bloque en línea; margen: 2px 5px; relleno: 6px 15px; familia de fuentes: "PT Sans", sans-serif; tamaño de fuente: 16px; color: # 777777; borde inferior : 1px sólido transparente; transitio n: .3s lineal; ) .menu-main .current, .menu-main a: hover (border-radius: 3px; background: # f3ece1; color: # 313131; text-shadow: 0 1px 0 #fff; border-color: # c6c6c6;) @media (ancho máximo: 500px) (.menu-main li (pantalla: bloque;))3. Menú adaptable con vieiras
@import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .menu-main (estilo de lista: ninguno; relleno: 0 30px; margen: 0; tamaño de fuente: 18px; alineación de texto: centro; posición: relativa; fondo: blanco;) .menu-principal: después (contenido: ""; posición: absoluta; ancho: 100%; alto: 20px; izquierda: 0; fondo: -20px; fondo: radial-gradient (blanco 0%, blanco 70%, rgba (255,255,255,0) 70%, rgba ( 255,255,255,0) 100%) 0 -10px; tamaño de fondo: 20px 20px; repetición de fondo: repetición-x;) .menu-main li (display: inline-block;) .menu-main a (texto-decoración: none; display: inline-block; margin: 0 15px; padding: 10px 30px; font-family: "PT Sans Caption", sans-serif; color: # 777777; transición: .3s lineal; posición: relativa;) .menu -main a: before, .menu-main a: after (content: ""; position: absolute; top: calc (50% - 3px); width: 6px; height: 6px; border-radius: 50%; background: # F58262; opacidad: 0; transición: .5s entrada-salida fácil;) .menu-main a: before (izquierda: 5px;) .menu-main a: after (derecha: 5px;) .menu-main a. actual: antes, .menu-main a.cur rent: after, .menu-main a: hover: before, .menu-main a: hover: after (opacidad: 1;) .menu-main a.current, .menu-main a: hover (color: # F58262; ) @media (ancho máximo: 680px) (.menu-main li (pantalla: bloque;))4. Menú adaptable en la cinta
@import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .top-menu (margen: 0 60px; posición: relativa; fondo: # 5A394E; cuadro-sombra: recuadro 1px 0 0 rgba (255,255,255, .1), recuadro -1px 0 0 rgba (255,255,255, .1), recuadro 150px 0 150px -150px rgba (255,255,255, .12), recuadro -150px 0 150px -150px rgba (255,255,255, .12);) .top-menu: before, .top-menu: after (content: ""; position: absolute ; z-index: 2; left: 0; width: 100%; height: 3px;) .top-menu: before (top: 0; border-bottom: 1px dashed rgba (255,255,255, .2);) .top- menu: after (bottom: 0; border-top: 1px rgba discontinuo (255,255,255, .2);) .menu-main (estilo de lista: ninguno; relleno: 0; margen: 0; alineación de texto: centro;). menu-main: before, .menu-main: after (content: ""; posición: absoluta; ancho: 50px; altura: 0; parte superior: 8px; borde superior: 18px sólido # 5A394E; borde inferior: 18px sólido # 5A394E; transform: rotate (360deg); z-index: -1;) .menu-main: before (left: -30px; border-left: 12px solid rgba (255, 255, 255, 0);) .menu- main: after (right: -30px; border-right: 12px solid rgba (2 55, 255, 255, 0); ) .menu-main li (display: inline-block; margin-right: -4px;) .menu-main a (text-decoration: none; display: inline-block; padding: 15px 30px; font-family: "PT Sans Caption ", sans-serif; color: blanco; transición: .3s lineal;) .menu-main a.current, .menu-main a: hover (background: rgba (0,0,0, .2);) @media (max-width: 680px) (.top-menu (margin: 0;) .menu-main li (display: block; margin-right: 0;) .menu-main: before, .menu-main: after (contenido: ninguno;) .menu-main a (pantalla: bloque;))5. Menú adaptable con un logotipo en el medio
@import url ("https://fonts.googleapis.com/css?family=Arimo"); .top-menu (posición: relativa; fondo: rgba (34,34,34, .2);) .menu-main (estilo de lista: ninguna; margen: 0; relleno: 0;) .menu-main: después (contenido: ""; display: table; clear: both;) .left-item (float: left;) .right-item (float: right;) .navbar-logo (position: absoluta; left: 50%; top : 50%; transform: translate (-50%, - 50%);) .menu-main a (text-decoration: none; display: block; line-height: 80px; padding: 0 20px; font-size: 18px ; espaciado entre letras: 2px; familia de fuentes: "Arimo", sans-serif; peso de fuente: negrita; color: blanco; transición: .3s lineal;) .menu-main a: hover (background: rgba (0, 0,0, .3);) @media (ancho máximo: 830px) (.menu-main (padding-top: 90px; text-align: center;) .navbar-logo (posición: absoluta; izquierda: 50% ; top: 10px; transform: translateX (-50%);) .menu-main li (float: none; display: inline-block;) .menu-main a (line-height: normal; padding: 20px 15px; font -tamaño: 16px;)) @media (ancho máximo: 630px) (.menu-main li (display: block;))6. Menú adaptable con logotipo a la izquierda
@import url ("https://fonts.googleapis.com/css?family=Arimo"); .top-menu (fondo: rgba (255,255,255, .5); box-shadow: 3px 0 7px rgba (0,0,0, .3); padding: 20px;) .top-menu: after (content: "" ; display: table; clear: both;) .navbar-logo (display: inline-block;) .menu-main (list-style: none; margin: 0; padding: 0; float: right;) .menu-main li (display: inline-block;) .menu-main a (text-decoration: none; display: block; position: relativa; line-height: 61px; padding-left: 20px; font-size: 18px; letter-spacing : 2px; font-family: "Arimo", sans-serif; font-weight: bold; color: # F73E24; transición: .3s linear;) .menu-main a: before (content: ""; width: 9px; altura: 9px; fondo: # F73E24; posición: absoluta; izquierda: 50%; transformar: rotar (45deg) translateX (6.5px); opacidad: 0; transición: .3s lineal;) .menu-main a: hover: before (opacidad: 1;) @media (max-width: 660px) (.menu-main (float: none; padding-top: 20px;) .top-menu (text-align: center; padding: 20px 0 0 0; ) .menu-main a (relleno: 0 10px;) .menu-main a: be fore (transform: rotate (45deg) translateX (-6px);)) @media (max-width: 600px) (.menu-main li (display: block;))Continuamos la serie con un tutorial sobre menús desplegables. El siguiente paso es un menú desplegable horizontal en CSS con sus propias manos.
Si llegaste aquí por accidente o estabas buscando otra implementación del menú desplegable, te aconsejo que vayas a la sección de padres.
Esta sección describirá el menú desplegable horizontal en CSS y HTML.
Navegación de página:
Entonces, nuestra tarea:
haga un menú horizontal con el menú desplegable css (en listas ul li) sin usar jQuery y Javascript y también sin usar tablas