Krypton Solid

La última tecnología en raciones de 5 minutos

Cómo crear desplazamiento horizontal usando Pantalla: Table-Cell

Cómo crear desplazamiento horizontal usando Pantalla: Table-Cell

Los diseños horizontales de todo tipo me han intrigado desde que te descubrí podría Haz eso. No sé exactamente por qué estoy fascinado con ellos … tal vez sea solo mi rebelde interior hablando. Cualquiera sea la razón, estoy a punto de declarar que el desplazamiento vertical está obsoleto, pasado de moda y muuuucho del último milenio.

De acuerdo, eso no es realmente a lo que me refiero. Aún así, con el repentino aumento en la cantidad de pantallas táctiles por ahí, se vuelve más difícil afirmar que «arriba y abajo» son nuestras mejores opciones. «Derecha e izquierda» se han convertido en direcciones viables para la ubicación del contenido, siempre que no se trate de volúmenes sustanciales de texto.

Sin embargo, nunca me molesté en construir diseños horizontales. Los problemas técnicos y las limitaciones siempre parecían superar cualquier beneficio estilístico o de navegación que pudiera haber. Sin embargo, eso fue antes; y esto es ahora …

Me encontré con la técnica descrita en este artículo de la forma en que suelo encontrar las cosas: tratando de hacer algo completamente diferente. Estaba intentando (te puedes reír) crear un marco de cuadrícula CSS basado en display: table-cell (está bien, deja de reír ahora).

Bueno, por razones que ahora parecen obvias, no funcionó. Intenta hacer una cuadrícula de imagen receptiva con la propiedad table-cell. Adelante, esperaré.

En pocas palabras, las celdas de la tabla están diseñadas para formar una sola fila horizontal. (¡Dije que dejes de reír!) Eso es lo que hacen, y no les gusta cuando tratas de obligarlos a hacer otra cosa. Renuncié a ese proyecto. Sin embargo, unas semanas más tarde, estaba considerando volver a diseñar mi cartera.

CONTENIDO RELACIONADO  Investigación: se prefiere el almacenamiento de datos local en un 69 por ciento

Pensé que sería bueno poner todos mis proyectos en una página. Consideré varias soluciones organizativas para mostrar mis proyectos web, de redacción y de fotografía, y se me ocurrió esto: quiero mostrar estas tres categorías como filas de miniaturas que se desplazan horizontalmente.

Fue entonces cuando me di cuenta: “Las celdas de tabla serían perfectas para eso. Además, ¡puedes centrar las cosas verticalmente dentro de ellas! ¡Soy tan inteligente que duele! » [Some dramatization here.]

Todavía no he rediseñado mi sitio; en cambio, codifiqué los dos ejemplos de mi técnica que se encuentran en el archivo .zip vinculado al final de este artículo.

Haciendo que funcione

Entonces, para darle una imagen, aquí hay una demostración en la que he trabajado.

Así es como se marca cada fila:

<div class="horizontal">
    <div class="table">
        <article>
            <h3>Project Title</h3>
        </article>
        <!-- Repeat this part as many times as necessary. -->
    </div>
</div>

A partir de ahí, el CSS necesario para que funcione es bastante simple:

// This container element gives us the scrollbars we want.
div.horizontal {
    width: 100%;
    height: 400px;
    overflow: auto;
}

// table-layout: fixed does a lot of the magic, here. It makes sure that the "table cells" retain the pixel dimensions you want.
.table {
    display: table;
    table-layout: fixed;
    width: 100%;
}

// Arranging your content inside the "cells" is as simple as using the vertical-align and text-align properties. Floats work, too.
article {
    width: 400px;
    height: 400px;
    display: table-cell;
    background: #e3e3e3;
    vertical-align: middle;
    text-align: center;
}

// Some styling for contrast.
article:nth-child(2n+2)
{
    background: #d1d1d1;
}

Algunas técnicas de disposición horizontal requieren el elemento contenedor (div.horizontal, en este caso) para tener un ancho de píxel definido igual al ancho combinado de los elementos que contiene. Otras técnicas requieren visualización: bloque en línea; No soy fanático de esta técnica. Con table-cell, siga agregando elementos siempre que lo necesite, y estará listo para comenzar: es perfecto para usar con un CMS.

CONTENIDO RELACIONADO  Wi-Fi Responda la llamada para aplicaciones habilitadas para WLAN

Haciéndolo a pantalla completa

De acuerdo, el otro tipo de diseño horizontal es el diseño horizontal de pantalla completa. Creando esto con el celda de tabla La propiedad requiere algo de JavaScript. Usé jQuery para acelerar las cosas. El requisito de JS puede hacer que esta técnica sea más útil para la situación, pero sigue siendo genial.

Aquí hay una demostración funcional.

El marcado es similar:

<div class="horizontal">
    <div class="table">
        <section>
            <h1>Full-Screen Horizontal Layouts</h1>
            <p>Made with <code>display: table-cell;</code></p>
            <p>By Ezequiel Bruni</p>
        </section>
        <!-- Repeat this part as necessary. -->
    </div>
</div>

Aquí, sin embargo, es sólo una «fila» que se ha hecho para ajustarse al tamaño de la ventana del navegador. Cada En este caso, también se ha adaptado a la ventana del navegador.

Aquí está el CSS:

// Don't touch this part. It helps.
html, body {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

// In this case, I didn't want a scrollbar, so I used overflow: hidden. The container element is more essential than ever, though. The body element will not do.
div.horizontal {
    display: block;
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: static;
}

.table {
    display: table;
    table-layout: fixed;
    width: 100%;
    height: 100%;
}

.table > section {
    width: 1600px; // The width is based on my monitor. It's replaced by jQuery anyway. Percentage widths do not work.
    height: 100%;
    display: table-cell;
    background: #e3e3e3;
    vertical-align: middle;
    text-align: center;
}

Como se indicó anteriormente, los anchos porcentuales no funcionan. Se requieren anchos de píxel. Si desea que cada sección se ajuste a las dimensiones de su ventana, deberá hacerlo con JavaScript:

$(window).load(function() {
    var vWidth = $(window).width();
    var vHeight = $(window).height();
    $('.table > section').css('width', vWidth).css('height', vHeight);
});

$(window).resize(function() {
    var vWidth = $(window).width();
    var vHeight = $(window).height();
    $('.table > section').css('width', vWidth).css('height', vHeight);
});

Notarás que también agregué la altura. Bueno, eso es para Firefox. Firefox no juega bien con las alturas porcentuales en los elementos de la celda de la tabla (por cierto, Firefox también produce un silbido si coloca las celdas en una posición relativa y coloca elementos absolutamente posicionados dentro de ellas).

Bueno, esa es mi técnica para colocar contenido horizontalmente. Puede descargar los archivos fuente aquí.

¿Ha diseñado un sitio horizontal? ¿Ha utilizado una técnica diferente para el desplazamiento horizontal? Háznoslo saber en los comentarios.

Imagen destacada / miniatura, imagen de lado a través de Shutterstock.

Deja un comentario

También te puede interesar...

AOL está probando la versión 8.0

America Online ha lanzado silenciosamente una versión preliminar de su software AOL 8.0 de próxima generación, que incluirá varias formas para que las personas personalicen la apariencia del servicio. El lanzamiento preliminar, ofrecido a los

Definición de tasa de ocupación

¿Qué es la tasa de ocupación? La tasa de ocupación es la relación entre el espacio alquilado o utilizado y la cantidad total de espacio disponible. Los analistas utilizan las tasas de ocupación cuando hablan

NordVPN confirma la violación del centro de datos

NordVPN, proveedores de un servicio de red privada virtual (VPN) ampliamente utilizado, confirmado una violación de uno de sus centros de datos en marzo de 2018. La compañía afirmó que un atacante obtuvo acceso a

Por qué el caos es el corazón de Dota 2

Autopista de tres carriles Cada semana, Chris documenta su compleja relación continua con Dota 2, Smite y los magos en general. Llevo jugando Dota 2 poco menos de tres años. En ese tiempo, he visto

Mejores

El mejor software de servicio de atención al cliente

El mejor software de servicio de atención al cliente Tabla de contenidos Sus clientes harán o romperán el éxito de su negocio. Los clientes felices siguen regresando y gastando más dinero, mientras que los clientes insatisfechos

Linux: GPL previene más que ayuda

Supongamos que tengo razón: los medios abandonaron en gran medida su entusiasmo por Linux como contracultura y retiraron el impulso que condujo a su adopción en 1997-2002. ¿Y qué? A medida que disminuía su soporte,