Hoy miramos un problema en el mundo real que CSS no puede resolver fácilmente y examinamos el remedio de jquey. En mi trabajo de desarrollo front-end, a menudo uso JavaScript, con JQuey, la biblioteca “hace que JavaScript sea más fácil”, como la última herramienta de instancia: una forma de imponer el estilo de un sitio cuando CSS no está disponible o sería demasiado complicado A ser implementado. Una parte importante de saber cuándo llamar a JQuey es comprender los tipos de problemas que CSS no puede resolver. Hoy te daré un ejemplo de WPShout, explicaré por qué CSS no está en altura y exploraré la solución de JQuey en detalle.
Si desea una introducción suave en JQuey, aquí hay una breve presentación conceptual y un buen tutorial para principiantes. Nuestro ejemplo en la vida real no es mucho más complicado que el tutorial, ¡así que vuelve pronto! El problema: un menú de navegación devastado, uno de los elementos más únicos del aspecto de WPShout es su menú de navegación lateral. Nos gusta mucho, pero también es la fuente de la complejidad del estilo detrás del ejemplo de hoy. Nuestro menú de navegación está absolutamente posicionado, lo que podría causar platos además de su forma generalmente divertida, nuestro menú de navegación está en realidad por encima del contenedor de contenido principal, donde el texto del artículo está:

Haga clic para aumentar
Para administrar esto y algunas otras complejidades de apariencia, nuestro menú de navegación debe colocarse absolutamente. Este atributo CSS, posición: Absoluto; , elimina un elemento de la apariencia principal de una página HTML. El elemento aún se puede colocar en relación con otros elementos DOM, pero esos otros elementos lo ignoran en sus propias decisiones de aspecto. Debido a que los elementos se ignoran entre sí, pueden lograr resultados verdaderamente problemáticos. En particular, ¿qué sucede si nuestro menú de navegación es más alto que el artículo al lado? Se vuelve feo, con elementos superpuestos incorrectamente, lo que quiero decir con “derrame”: haga clic en grande

Necesitamos una altura mínima, pero ¿qué altura mínima elegir? Lo que queremos, incluso para un artículo muy corto, es que el sótano aparezca solo en el menú de navegación:
Haga clic para aumentar

Sin embargo, no hay forma en el CSS decir “solo se muestra bajo este elemento absoluto”, porque parte de la posición absoluta es que otros elementos ignoran el elemento absolutamente posicionado en sus propias decisiones de aspecto. Entonces, lo que debemos hacer es establecer una altura mínima para el contenedor del artículo principal, que, en este caso, es una clase principal:
Haga clic para aumentar

Necesitamos un estudio continuo de la altura del menú y establecemos la altura mínima de nuestro contenedor principal igual a él. CSS no puede hacer eso, pero JQuey puede. ¿Cuál es este min-altura debería ser? Debe ser “cualquier altura real del menú de navegación”, lo que no sabemos. Podríamos agregar cosas a ese menú de navegación o podemos eliminarlas y, por supuesto, diferentes navegadores, anchos y dispositivos de navegador jugarán la altura del menú significativamente diferente. No solo porque, porque el ancho del navegador cambia los detalles de la apariencia, un usuario que cambia de tamaño de su navegador podría ver varias alturas diferentes del menú de navegación en la misma carga de página. Lo que necesitamos es un estudio continuo de la altura y el conjunto del menú. Main -Contintentemente igual a él. CSS no puede hacer eso, pero JQuey puede. Remedio: Page-Min-Height.js Para resolver este problema, escribí un guión jQuery, Page-Meght.js, en el tema WPShout. Lo puse en la cola de funciones.php teme.php; No mostraré este proceso aquí, por lo que si necesita conocer los scripts y los estilos en la cola, consulte nuestro artículo sobre este tema.
Aquí está Page-Min-Height.js en sí: (función ($) {// 1. Defina variables variable navmenu = ‘.primary-navegation’; var pageContent = ‘.main-account’; var gap = parsInt ($ ($ ($ ( ‘html’) .css (‘font-size’), 10) * 2; // 2. Defina la función para dar la función min-height setPageMin () {height = $ (navmen) .height ();) .css ( ‘Min-HEight’, Height + GAP);} $ (ventana) .Load (function () {// 3. Ejecutar función en la primera ventana baja setPageMin (); // 4. Ejecutar función cada 120 ms cuando la ventana cambia de tamaño $ (Ventana) .resize (function () {setTimeOut (function () {setPageMin ();}, 120);});}) (jQuery); Explicaré este código en cuatro partes, correspondiente a las cuatro secciones anteriores. Definición de variables En esta sección, definimos algunas variables cuyos valores usaremos en el resto del script:
Navmenu es el nombre de la clase de menú de navegación, aquí .Asprimary-navegación.

PageContant es el nombre de la clase de contenedor de contenido principal, aquí.
GAP parece confundido, pero es un entero igual al “dos veces el tamaño de la fuente principal, en píxeles, del documento HTML”. Utilizo este número para crear una “brecha” de dos líneas en el menú de navegación para que nunca pueda llegar al sótano.
Como nota, (función ($)}) (jQuery); En la primera y última línea del archivo está JQuey Boilerplate, necesaria en WordPress, por lo que podemos usar “$” para significar “jQuery” en todo el archivo. Vea aquí para más información.
2. Definición de setPageMin () Esta sección define una función, setPageMin (), haciendo dos cosas:
Encuentre la altura actual, en píxeles, del objeto especificado por Navmenu, que es.-Aflaz de navegación, el menú de navegación en sí. definido.
3. Ejecutar setPageMin () en la ventana Carga $ (ventana) .load (function () {}); Establezca una función que se ejecute cuando todos los objetos DOM se mostraran completamente en el navegador. Este es el punto donde el menú de navegación tiene una altura que podemos medir de manera confiable, por lo que lo primero que hacemos en este momento es ejecutar setPageMin ().
4. Ejecutando setPageMin () en el cambio de tamaño de la ventana aún no he terminado. ¿Qué sucede si un usuario cambia el tamaño de la ventana de su navegador? Esto podría hacer fácilmente el menú de navegación más alto o más corto, haciéndolo superponerse o disminuir bien por debajo del borde que establecemos con nuestra primera llamada (). Así que tenemos que escuchar a un usuario que cambia de tamaño de su ventana y ejecutando una función cuando lo hace. Esto es lo que $ (ventana) .resize (function () {}); Hacer lo. ¿Qué hay dentro de esta función? Bueno, lo más simple sería solo una llamada a SetPageMin (), como sigue:
$ (Ventana) .resize (function () {setPageMin ();}); Sin embargo, JavaScript está muy agitado. El código anterior se ejecutaría setPageMin (); Cada milisegundo en el que el usuario cambia el tamaño de su navegador. Es exagerado y probablemente haría que la página se comporte agitado. En cambio, solo ejecutaremos setPageMin (); una vez a 120 milisegundos. Es aproximadamente ocho veces por segundo, lo suficientemente rápido para las personas y mucho menos intensivo. Esto hace el siguiente código: setTimeOut (function () {setPageMin ();}, 120); Si desea más información sobre SetTimout, ¡le animo a que lea! Es una función maravillosa con un número sorprendente de usos. En algunos, esta sección ejecuta setPageMin (); Aproximadamente ocho veces por segundo cada vez que un usuario cambia el tamaño de la ventana de su navegador, lo que significa que Min-Weight lo establecemos para nuestro contenido principal nunca se sincroniza con la altura efectiva medida del menú de navegación. ¡Frío! ¡Gracias JQuery! Esta semana, entré en detalles sobre un límite de CSS real y una solución práctica de jquey. Espero que ahora te sientas más cómodo con JQuery y espero que tengas algunas ideas nuevas sobre el uso de JQuey para corregir los agujeros en tus propios proyectos. ¡Gracias por leer! Imagen de crédito: rmkoske
Corrección de agujeros en CSS con JQuey: un ejemplo práctico
Tags Corrección de agujeros en CSS con JQuey: un ejemplo práctico
homefinance blog