Elemento div CSS: ¿cómo mostrar solo las barras de desplazamiento horizontal?


200

Tengo un contenedor div y he definido su estilo de la siguiente manera:

div#tbl-container 
{
    width: 600px;   
    overflow: auto;    
    scrollbar-base-color:#ffeaff
}

Esto me da barras de desplazamiento horizontal y vertical automáticamente una vez que lleno mi tabla que está contenida en este div. Solo quiero que las barras de desplazamiento horizontal aparezcan automáticamente. Modificaré la altura de la tabla mediante programación.

¿Cómo hago esto?

Respuestas:


277

No debe obtener barras de desplazamiento horizontales y verticales a menos que haga que el contenido sea lo suficientemente grande como para requerirlas.

Sin embargo, normalmente lo haces en IE debido a un error. Compruebe en otros navegadores (Firefox, etc.) para saber si en realidad solo lo está haciendo IE.

IE6-7 (entre otros navegadores) admite la extensión CSS3 propuesta para establecer barras de desplazamiento de forma independiente, lo que podría usar para suprimir la barra de desplazamiento vertical:

overflow: auto;
overflow-y: hidden;

También es posible que deba agregar para IE8:

-ms-overflow-y: hidden;

ya que Microsoft amenaza con mover todas las propiedades estándar anteriores a CR a su propio cuadro '-ms' en el modo de estándares IE8. (Esto habría tenido sentido si siempre lo hubieran hecho así, pero ahora es un inconveniente para todos).

Por otro lado, es completamente posible que IE8 haya solucionado el error de todos modos.


¡Oh Dios, me salvaste el día! Aunque no he probado la especificación ie-8. Está bien ahora FF y IE-7. Eso es todo lo que necesito. Gracias de nuevo !
Satya Kalluri el

76

También tuve que agregar white-space: nowrap;al estilo, de lo contrario, los elementos se incluirían en el área a la que estamos eliminando la capacidad de desplazamiento.


8
white-space: nowrap;es clave, sin ella tus elementos se apilarán / envolverán.
Ricardo Zea

white-space: nowrap no parece trabajar en Firefox Safari o Chrome, incluso con las imágenes que tengo dentro de la pantalla div: en línea o como bloques

27

Esta solución no tiene especificación de alto / ancho para el div padre, por lo que responderá al cambio de tamaño de la ventana y lo más útil es que las barras de desplazamiento horizontales aparecen solo si es necesario.

.container{
    padding:20px;
    border:dotted 1px;
    white-space:nowrap;
    overflow-x:auto;
}

.box{
    width:100px;
    height:180px;
    background-color: red;
    margin:10px;
    display:inline-block
}

Echa un vistazo a DEMO


25

Para mostrar ambos:

<div style="height:250px; width:550px; overflow-x:scroll ; overflow-y: scroll; padding-bottom:10px;">      </div>

Ocultar eje X:

<div style="height:250px; width:550px; overflow-x:hidden; overflow-y: scroll; padding-bottom:10px;">      </div>

Ocultar eje Y:

<div style="height:250px; width:550px; overflow-x:scroll ; overflow-y: hidden; padding-bottom:10px;">      </div>

14

también puede hacerlo overflow: autoy dar una altura y un ancho máximos fijos de esa manera, cuando el texto o lo que sea que esté allí, se desborde, mostrará solo la barra de desplazamiento requerida


5

Yo uso las propiedades CSS: 1) " overflow-x: auto"; 2) " overflow-y: hidden"; 3) " white-space: nowrap";

No olvide establecer un ancho, tanto para el contenedor como para los componentes internos DIVS. La propiedad "white-space: nowrap" permite que los DIVS internos no caigan en una línea diferente.

Teniendo en cuenta el siguiente HTML:

<div class="container"> 
  <div class="inner-1"></div>
  <div class="inner-2"></div>
  <div class="inner-3"></div>
</div>

Yo uso el siguiente CSS para tener solo un desplazamiento horizontal:

.container {
  height: 80px;
  width: 600px;
  overflow-x: auto;
  overflow-y: hidden; 
  white-space: nowrap;
}
.inner-1,.inner-2,.inner-3 {
  height: 60px;
  max-width: 250px;
 display: inline-block; /* this should fix it */
}

Fiddle: https://jsfiddle.net/qrjh93x8/ (no funciona con el código anterior)


Agregué espacios en blanco pero el mío no funciona: jsfiddle.net/jjq4xgz5/1 . Gracias.
Si8

3

Usa lo siguiente

<div style="max-width:980px; overflow-x: scroll; white-space: nowrap;">
<table border="1" style="cellpadding:0; cellspacing:0; border:0; width=:100%;" >

1
.box-author-txt {width:596px; float:left; padding:5px 0px 10px 10px;  border:1px #dddddd solid; -moz-border-radius: 0 0 5px 5px; -webkit-border-radius: 0 0 5px 5px; -o-border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px; overflow-x: scroll; white-space: nowrap; overflow-y: hidden;}


.box-author-txt ul{ vertical-align:top; height:auto; display: inline-block; white-space: nowrap; margin:0 9px 0 0; padding:0px;}
.box-author-txt ul li{ list-style-type:none;  width:140px; }

3
Por favor explique su respuesta.
hims056

1

CSS3 tiene la overflow-xpropiedad, pero no esperaría un gran soporte para eso. En CSS2, todo lo que puede hacer es establecer una scrollpolítica general y trabajar widthspara heightsno estropearlos.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.