domingo, 21 de febrero de 2021

👨‍💻 La Propiedad overflow

La Propiedad de desbordamiento de CSS conocida como overflow permite regular la visiblidad de los contenidos que sobresalen de una caja html.

Permite especificar si: los contenidos que sobresalen se seguirán viendo,

  • si se ocultarán,
  • si aparecerá una barra de scroll en el documento.
  • si recortar contenido,
  • mostrar el contenido excedente en un elemento a nivel de bloque o,
  • agregar barras de desplazamiento cuando el contenido de un elemento es demasiado grande para caber en un área especificada.

    Usando la propiedad overflow con un valor distinto a visible, valor por defecto, creará un nuevo contexto de formatos de bloques. Esto es técnicamente necesario debido a que si un elemento flotante interceptara con otros forzaría a reajustar el contenido alrededor de los elementos que se interceden. El reajuste sucedería luego de cada desplazamiento, y llevaría a un desplazamiento demasiado lento.


    Sintáxis formal:

    [ visible | hidden | clip | scroll | auto ]  {1,2}

    overflow:   visible
    overflow:   hidden
    overflow:   scroll
    overflow:   auto
    overflow:  inherit



  • Valores

  • visible
  • Valor por defecto. El contenido no es recortado, podría ser dibujado fuera de la caja contenedora.

  • hidden
  • El contenido es recortado y no se muestran barras de posición.

  • scroll
  • El contenido es recortado y el navegador web usa las barras de desplazamiento, se haya recortado contenido o no. Esto previene cualquier problema con las barras de desplazamiento apareciendo o desapareciendo en un entorno dinámico. Puede que las impresoras impriman contenido excedente.

  • auto
  • Depende del agente de usuario. Navegadores de escritorio como Firefox proveen barras de desplazamiento si hay contenido excedente.



    Extensiones de Mozilla

  • -moz-scrollbars-none
  • Usar overflow:hidden.

  • -moz-scrollbars-horizontal
  • Es preferible el uso de overflow-x y overflow-y.

  • -moz-scrollbars-vertical
  • Es preferible el uso de overflow-x y overflow-y.

  • -moz-hidden-unscrollable
  • Es usada principalmente para uso interno y por temas. Deshabilita el desplazamiento en elementos XML root y , usando las flechas del teclado o la rueda del ratón.



    Si no se establece la propiedad width sobre un elemento, su tamaño se calcula automáticamente en función de si es un elemento de bloque o en línea, en función del tamaño del elemento contenedor en el que se encuentra y en función de algunos otros parámetros.

    Definición

    Controla el comportamiento de los contenidos que no caben en su elemento contenedor

    Valores
    permitidos

    Uno y sólo uno de los siguientes valores:

    • visible

    • hidden

    • scroll

    • auto

    • inherit

    Valor inicial

    visible

    Se aplica a

    Elementos de bloque, celdas de tabla y elementos de tipo inline-block

    Válida en

    medios visuales

    Se hereda

    no

    Definición en
    el estándar

    w3.org/TR/CSS21/visufx.html#propdef-overflow

    En las siguientes 3 imágenes se muestra un ejemplo de cada.

    El código usado es el siguiente:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <meta name="author" content="Francesc Ricart">
            <title>Document</title>
            
            <style>
            div{
            width:150px;
            height:100px;
            border:1px solid red;
            padding:1%;
            }
                
            div{
            overflow:visible;
    /*
            overflow:hidden;
            overflow:scroll;
    */
            }
                
            </style>
            
        </head>
        <body>
            
        <div>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates debitis iste possimus doloribus doloremque earum dolor dolore fuga, eligendi itaque recusandae hic aperiam, cumque expedita, odio laborum. Tenetur, necessitatibus modi!
        </div>
    
        </body>
    </html>


    Acá una imagen con los resultados:

    overflow


    visible; hace que el texto sobresalga por encima del div.

    hidden; hace que el texto que sobresalga por encima del div no sea visible.

    scroll; crea una barra deslizante lateral



    Ejemplos




    overflow: visible.


    p {
         width: 12em;
         border: dotted;
         overflow: visible;   /* dibuja barras si es necesario */
    }
    

    visible (por defecto)
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.




    overflow: hidden.


    p { overflow: hidden; /* no se dibujan barras */ }
    

    overflow: hidden
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.




    overflow: scroll.


    p { overflow: scroll; /* se dibujan ambas barras */ }
    

    overflow: scroll
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.




    overflow: auto.


    p { overflow: auto; /* se dibujan barras según se necesite */ }
    

    overflow: auto
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.







    Otros ejemplos de prácticas



    Si no se establece la propiedad width sobre un elemento, su tamaño se calcula automáticamente en función de si es un elemento de bloque o en línea, en función del tamaño del elemento contenedor en el que se encuentra y en función de algunos otros parámetros.

    De la misma forma, si no se establece la propiedad heightsobre un elemento, su valor por defecto es auto, lo que significa que el navegador muestra ese elemento con la altura necesaria para que sus contenidos se vean completamente.

    En el diseño de páginas web es habitual establecer la anchura de los elementos mediante la propiedad width para crear las columnas de contenidos. Sin embargo, el uso de la propiedad height es mucho más limitado, ya que se suele dejar que el navegador calcule automáticamente la altura necesaria para cada elemento.

    El siguiente ejemplo muestra cómo el navegador establece automáticamente diferentes alturas para un mismo elemento en función de su anchura:

    width: 90%; height: auto Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.

    width: 50%; height: auto Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.


    El principal motivo por el que no suele establecerse la altura de los elementos es que normalmente no se conoce su contenido exacto. Si por ejemplo se utiliza un elemento <div> para mostrar la descripción de un producto o el texto de una noticia, no es posible fijar la altura correcta de ese <div>, ya que variará para cada producto o noticia.

    Cuando se establece una altura más pequeña que la necesaria para mostrar los contenidos de un elemento, el resultado es el que muestra el siguiente ejemplo:

    width: 50%; height: 50px Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

    Fusce ut leo eu ipsum faucibus pretium.
    Donec iaculis lorem eleifend mi tempor
    porttitor. Integer porttitor dui vel dui.
    Donec ornare adipiscing pede. Proin
    elementum augue ut magna.


    El estándar de CSS 2.1 indica que cuando los contenidos de un elemento no caben en su interior, el navegador debe mostrarlos aunque se salgan del elemento y se solapen con los elementos adyacentes. Afortunadamente, la propiedad overflow permite modificar este comportamiento por defecto.

    El valor por defecto de la propiedad overflow es visible, que es el comportamiento que hace que los contenidos se salgan del elemento y sean completamente visibles. El siguiente valor que define overflow es hidden, que hace que el navegador oculte todos los contenidos que se salen de la caja del elemento:

    overflow: visible Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.
    overflow: hidden Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.



    El valor hidden se utiliza cuando no se puede controlar la cantidad de contenidos que se van a incluir dentro de un elemento pero al mismo tiempo se quiere controlar de forma precisa el tamaño de cada elemento de la página.

    En ocasiones, el valor hidden no es apropiado porque es necesario que se vean todos los contenidos. Para estos casos, la propiedad overflow incluye el valor scroll, que hace que el navegador muestre barras de scroll sobre un elemento cuando sus contenidos no caben en la caja del elemento:

    overflow: visible Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.
    overflow: scroll Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.














    Si se establece la propiedad overflow: scroll sobre un elemento, el estándar indica que los navegadores deben mostrar siempre en ese elemento las dos barras de scroll (la vertical y la horizontal) aunque sus contenidos no se salgan o sólo se salgan por un sitio. En el medio print el contenido se imprime íntegramente, por lo que es equivalente al valor visible.

    Las barras de scroll siempre se muestran en el interior de las cajas (antes que los bordes), por lo que no aumentan el tamaño total de la caja del elemento, pero sí que disminuyen el sitio disponible para mostrar sus contenidos.

    Por último, la propiedad overflow también define el valor auto, que permite que cada navegador tome la decisión sobre si es necesario o no mostrar las barras de scroll. Aunque la decisión depende del navegador, el estándar de CSS 2.1 indica que si el contenido se sale del elemento, se deben mostrar barras de scroll:

    overflow: visible Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.
    overflow: auto Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut leo eu ipsum faucibus pretium. Donec iaculis lorem eleifend mi tempor porttitor. Integer porttitor dui vel dui. Donec ornare adipiscing pede. Proin elementum augue ut magna.














    El valor auto es el preferido por los diseñadores, ya que: * Si el contenido cabe dentro del elemento, no se muestra ninguna barra de scroll. * Si el contenido se sale por un lado, sólo se muestra la barra de scroll de ese lado (horizontal o vertical). * Si el contenido se sale por todos los lados, se muestran las dos barras de scroll.




    Bibliografía consultada:

    https://uniwebsidad.com/libros/referencia-css2/overflow

    https://francescricart.com/la-propiedad-overflow/#:~:text=La%20propiedad%20overflow%20permite%20regular%20la%20visiblidad%20de,el%20documento.%20Los%20valores%20que%20puede%20tomar%20son%3A

    https://developer.mozilla.org/es/docs/Web/CSS/overflow