Establecer overflow: hidden;en la etiqueta del cuerpo de esta manera:
<styletype="text/css">
body {overflow: hidden;}</style>
El código anterior oculta tanto la barra de desplazamiento horizontal como la vertical.
Si desea ocultar solo la barra de desplazamiento vertical , use overflow-y:
<styletype="text/css">
body {overflow-y: hidden;}</style>
Y si desea ocultar solo la barra de desplazamiento horizontal , use overflow-x:
<styletype="text/css">
body {overflow-x: hidden;}</style>
Nota: También deshabilitará la función de desplazamiento. Consulte las respuestas a continuación si solo desea ocultar la barra de desplazamiento, pero no la función de desplazamiento.
No hay una opción "ninguna" para la propiedad de desbordamiento. Las opciones disponibles incluyen: visible, oculto, desplazamiento, automático, heredar.
Sergiy Sokolenko
1273
En realidad, esta no es la respuesta correcta: desbordamiento: oculto no "oculta" la barra de desplazamiento. También detiene la función de desplazamiento en la página. Eso no es exactamente lo que pedimos.
adriendenat
17
En Chrome, cuando el desbordamiento del cuerpo está configurado en hiddendesplazamiento, funcionará con una rueda de desplazamiento del mouse. En Firefox, el desplazamiento no funcionará con una rueda de desplazamiento del mouse, me tomó un tiempo resolver esto.
Doug Molineux
13
No veo el punto de afirmar que overflow: hiddendeshabilita el desplazamiento. Si alguien quiere ocultar la barra de desplazamiento, entonces presumiblemente consideran innecesario el control porque no hay contenido para desplazarse en primer lugar . O tal vez simplemente no quieren permitir el desplazamiento por completo .
BoltClock
39
Para mí, la afirmación es perfectamente válida, ya que la pregunta es ocultar la barra de desplazamiento , no deshabilitar el desplazamiento .
sboisse
976
WebKit admite pseudo elementos de barra de desplazamiento que pueden ocultarse con reglas CSS estándar:
#element::-webkit-scrollbar {display: none;}
Si desea que todas las barras de desplazamiento estén ocultas, use
::-webkit-scrollbar {display: none;}
No estoy seguro acerca de la restauración, esto funcionó, pero podría haber una forma correcta de hacerlo:
::-webkit-scrollbar {display: block;}
Por supuesto, siempre puede usar width: 0, que luego se puede restaurar fácilmente width: auto, pero no soy fanático de abusar widthde los ajustes de visibilidad.
Firefox 64 ahora admite la propiedad experimental de ancho de barra de desplazamiento de forma predeterminada (63 requiere que se establezca un indicador de configuración). Para ocultar la barra de desplazamiento en Firefox 64:
#element {scrollbar-width: none;}
Para ver si su navegador actual admite el pseudo elemento o scrollbar-width, intente este fragmento:
.content {/* These rules create an artificially confined space, so we get
a scrollbar that we can hide. They are not directly involved in
hiding the scrollbar. */border:1px dashed gray;padding:.5em;white-space: pre-wrap;height:5em;overflow-y: scroll;}.content {/* This is the magic bit for Firefox */scrollbar-width: none;}.content::-webkit-scrollbar {/* This is the magic bit for WebKit */display: none;}
<divclass='content'>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eu
urna et leo aliquet malesuada ut ac dolor. Fusce non arcu vel ligula
fermentum sodales a quis sapien. Sed imperdiet justo sit amet venenatis
egestas. Integer vitae tempor enim. In dapibus nisl sit amet purus congue
tincidunt. Morbi tincidunt ut eros in rutrum. Sed quam erat, faucibus
vel tempor et, elementum at tortor. Praesent ac libero at arcu eleifend
mollis ut eget sapien. Duis placerat suscipit eros, eu tempor tellus
facilisis a. Vivamus vulputate enim felis, a euismod diam elementum
non. Duis efficitur ac elit non placerat. Integer porta viverra nunc,
sed semper ipsum. Nam laoreet libero lacus.
Sed sit amet tincidunt felis. Sed imperdiet, nunc ut porta elementum,
eros mi egestas nibh, facilisis rutrum sapien dolor quis justo. Quisque
nec magna erat. Phasellus vehicula porttitor nulla et dictum. Sed
tincidunt scelerisque finibus. Maecenas consequat massa aliquam pretium
volutpat. Duis elementum magna vel velit elementum, ut scelerisque
odio faucibus.
</div>
(Tenga en cuenta que esta no es realmente una respuesta correcta a la pregunta, porque también oculta las barras horizontales, pero eso es lo que estaba buscando cuando Google me señaló aquí, así que pensé que lo publicaría de todos modos).
Justo lo que estaba buscando, ya que realmente quería ocultar las barras de desplazamiento pero los elementos aún se pueden desplazar (por ejemplo, teclas arriba / abajo)
Mathias
77
esta debe ser la mejor respuesta ya que otras soluciones no le permiten desplazarse
Nuway
77
¿Esto es compatible con otros navegadores aparte de webkit? Porque no funciona en mozilla.
Rupam Datta
12
Sin embargo, hay una solicitud de función en el rastreador de Mozilla. Es posible que pueda acelerar la implementación votando por allí :)
Peter
3
¡ESTA ES LA RESPUESTA CORRECTA! Como otros faltan. El problema no es solo ocultar la barra de desplazamiento, sino cómo el desbordamiento afecta a otros estilos. Me encontré con este mismo problema en nuestra aplicación. NO queremos el desbordamiento automático en el 99% de la aplicación, sin embargo, hay una sección de ayuda en la que desea que el usuario pueda desplazarse hacia abajo. Dado que el cuerpo se ha desbordado: oculto, el único deseo de manejar esto fue una clase ng en la raíz, o gracias a estos chicos, simplemente usando algo de CSS.
Leon Gaban
524
Sí, más o menos ...
Cuando hace la pregunta, "¿Se pueden eliminar las barras de desplazamiento de un navegador de alguna manera, en lugar de simplemente ocultas o camufladas", todos dirán "No es posible" porque no es posible eliminar las barras de desplazamiento de todos los navegadores en un de manera compatible y compatible, y luego está todo el argumento de la usabilidad.
Sin embargo, es posible evitar que el navegador tenga la necesidad de generar y mostrar barras de desplazamiento si no permite que su página web se desborde.
Esto solo significa que tenemos que sustituir proactivamente el mismo comportamiento que el navegador normalmente haría por nosotros y decirle al navegador gracias pero no gracias amigo. En lugar de tratar de eliminar las barras de desplazamiento (que todos sabemos que no es posible) podemos evitar el desplazamiento (perfectamente factible) y desplazarnos dentro de los elementos que creamos y tener más control sobre ellos.
Crea un div con desbordamiento oculto. Detecta cuándo el usuario intenta desplazarse, pero no puede hacerlo porque hemos deshabilitado la capacidad de los navegadores para desplazarse con desbordamiento: oculto ... y, en su lugar, mueve el contenido hacia arriba usando JavaScript cuando esto ocurre. De este modo, creamos nuestro propio desplazamiento sin el desplazamiento predeterminado del navegador o utilizamos un complemento como iScroll .
---
Por el bien de ser minucioso; todas las formas específicas del proveedor de manipular barras de desplazamiento:
Internet Explorer 5.5+
* Estas propiedades nunca fueron parte de la especificación CSS, ni fueron aprobadas ni prefijadas por el proveedor, pero funcionan en Internet Explorer y Konqueror. También se pueden configurar localmente en la hoja de estilo del usuario para cada aplicación. En Internet Explorer lo encuentra en la pestaña "Accesibilidad", en Konqueror en la pestaña "Hojas de estilo".
body, html {/* These are defaults and can be replaced by hexadecimal color values */
scrollbar-base-color: aqua;
scrollbar-face-color:ThreeDFace;
scrollbar-highlight-color:ThreeDHighlight;
scrollbar-3dlight-color:ThreeDLightShadow;
scrollbar-shadow-color:ThreeDDarkShadow;
scrollbar-darkshadow-color:ThreeDDarkShadow;
scrollbar-track-color:Scrollbar;
scrollbar-arrow-color:ButtonText;}
A partir de Internet Explorer 8, estas propiedades tenían el prefijo de proveedor de Microsoft, pero W3C nunca las aprobó .
Internet Explorer pone a scrolldisposición lo que establece si deshabilitar o no las barras de desplazamiento; También se puede utilizar para obtener el valor de la posición de las barras de desplazamiento.
Con Microsoft Internet Explorer 6 y versiones posteriores, cuando usa la !DOCTYPEdeclaración para especificar el modo compatible con los estándares, este atributo se aplica al elemento HTML. Cuando no se especifica el modo compatible con los estándares, como en las versiones anteriores de Internet Explorer, este atributo se aplica al BODYelemento, NO al HTMLelemento.
También vale la pena señalar que cuando se trabaja con .NET, la clase ScrollBar System.Windows.Controls.Primitivesen el marco de presentación es responsable de representar las barras de desplazamiento.
Estos se pueden combinar con pseudo-selectores adicionales:
:horizontal - La pseudo-clase horizontal se aplica a cualquier pieza de la barra de desplazamiento que tenga una orientación horizontal.
:vertical - La pseudo-clase vertical se aplica a cualquier pieza de la barra de desplazamiento que tenga una orientación vertical.
:decrement- La pseudoclase de disminución se aplica a botones y piezas de seguimiento. Indica si el botón o la pieza de la pista disminuirá la posición de la vista cuando se use (por ejemplo, arriba en una barra de desplazamiento vertical, izquierda en una barra de desplazamiento horizontal).
:increment- La pseudoclase de incremento se aplica a botones y piezas de seguimiento. Indica si un botón o pieza de pista incrementará la posición de la vista cuando se use (por ejemplo, hacia abajo en una barra de desplazamiento vertical, hacia la derecha en una barra de desplazamiento horizontal).
:start- La pseudoclase de inicio se aplica a botones y piezas de seguimiento. Indica si el objeto se coloca antes del pulgar.
:end- La pseudo-clase final se aplica a botones y piezas de seguimiento. Indica si el objeto se coloca después del pulgar.
:double-button- La pseudoclase de doble botón se aplica a botones y piezas de seguimiento. Se utiliza para detectar si un botón es parte de un par de botones que están juntos en el mismo extremo de una barra de desplazamiento. Para las piezas de la pista indica si la pieza de la pista tiene un par de botones.
:single-button- La pseudoclase de un solo botón se aplica a botones y piezas de seguimiento. Se utiliza para detectar si un botón está solo al final de una barra de desplazamiento. Para las piezas de pista, indica si la pieza de pista tiene un botón singleton.
:no-button - Se aplica a las piezas de la pista e indica si la pieza de la pista corre o no hasta el borde de la barra de desplazamiento, es decir, no hay ningún botón en ese extremo de la pista.
:corner-present - Se aplica a todas las piezas de la barra de desplazamiento e indica si existe o no una esquina de la barra de desplazamiento.
:window-inactive- Se aplica a todas las piezas de la barra de desplazamiento e indica si la ventana que contiene la barra de desplazamiento está activa o no. (En noches recientes, esta pseudo-clase ahora también se aplica a :: selection. Planeamos extenderla para que funcione con cualquier contenido y proponerla como una nueva pseudo-clase estándar).
Ejemplos de estas combinaciones.
::-webkit-scrollbar-track-piece:start {/* Select the top half (or left half) or scrollbar track individually */}::-webkit-scrollbar-thumb:window-inactive {/* Select the thumb when the browser window isn't in focus */}::-webkit-scrollbar-button:horizontal:decrement:hover {/* Select the down or left scroll button when it's being hovered by the mouse */}
Mozilla tiene algunas extensiones para manipular las barras de desplazamiento, pero se recomienda no usarlas.
-moz-scrollbars-none Recomiendan usar overflow: oculto en lugar de esto.
-moz-scrollbars-horizontal Similar a overflow-x
-moz-scrollbars-vertical Similar a overflow-y
-moz-hidden-unscrollableSolo funciona internamente dentro de la configuración de un perfil de usuario. Deshabilita el desplazamiento de elementos raíz XML y deshabilita el uso de teclas de flecha y la rueda del mouse para desplazarse por las páginas web.
Por lo que sé, esto no es realmente útil, pero vale la pena señalar que el atributo que controla si las barras de desplazamiento se muestran o no en Firefox es ( enlace de referencia ):
Atributo: barras de desplazamiento
Tipo: nsIDOMBarProp
Descripción: El objeto que controla si las barras de desplazamiento se muestran o no en la ventana. Este atributo es "reemplazable" en JavaScript. Solo lectura
Por último, pero no menos importante, el relleno es como magia.
Como se ha mencionado anteriormente en algunas otras respuestas, aquí hay una ilustración que se explica por sí misma suficientemente.
Leccion de historia
Solo porque tengo curiosidad, quería aprender sobre el origen de las barras de desplazamiento, y estas son las mejores referencias que encontré.
El scrollbarobjeto BarProp es un elemento secundario del windowobjeto y representa el elemento de la interfaz de usuario que contiene un mecanismo de desplazamiento o algún concepto de interfaz similar. window.scrollbars.visiblevolverá truesi las barras de desplazamiento son visibles.
La API de historial también incluye características para la restauración de desplazamiento en la navegación de la página para mantener la posición de desplazamiento en la carga de la página.
window.history.scrollRestorationse puede usar para verificar el estado de la restauración de desplazamiento o cambiar su estado (anexar ="auto"/"manual". Automático es el valor predeterminado. Cambiarlo a manual significa que usted, como desarrollador, tomará posesión de los cambios de desplazamiento que puedan ser necesarios cuando un usuario recorre el historial de la aplicación Si lo necesita, puede realizar un seguimiento de la posición de desplazamiento mientras empuja las entradas del historial con history.pushState ().
Esta respuesta se aplicaría a un número significativamente mayor de navegadores (es decir, IE) en lugar de la respuesta actualmente votada.
Matt Jensen
Gran adición ¡Realmente implementé esa misma solución hoy! Cabe mencionar que el otro elemento debería estar desbordado: oculto;
Matt Jensen
2
Esta es la respuesta correcta, con todas las funciones. Le explico que si simplemente quiere evitar que un usuario se desplace, puede usar la regla de desbordamiento. También puede implementar su propia función de desplazamiento construida en casa. Si eso no es suficiente, puede establecer las propiedades de la barra de desplazamiento directamente usando diferentes reglas para diferentes navegadores.
newshorts
1
Si bien esta es una respuesta increíblemente bien pensada, y muy detallada, y con muchos recursos vinculados, existen grandes problemas para los usuarios de tecnología de asistencia cuando deshabilita el desplazamiento y usa JavaScript para manejar todo el desplazamiento. Si no establece también el foco en un elemento cada vez que se desplaza hacia el usuario, entonces su usuario AT se perderá por completo. Además, su usuario ahora ha perdido todo el control ajustado sobre lo que ve. Muy mala experiencia de usuario para hacerse cargo del desplazamiento para su usuario.
ShiningLight
Firefox Quantum 63.0.1 en MacOS High Sierra, no oculta la barra de desplazamiento incluso con la regla 'overflow: -moz-scrollbars-none'. Alguien sabe la solución para esto? El resto del navegador parece funcionar con las soluciones sugeridas.
Simona Adriani
106
Puede lograr esto con un contenedor divque tiene su desbordamiento oculto y el divconjunto interno configurado como auto.
Para eliminar la divbarra de desplazamiento del interior , puede sacarlo de la divventana del exterior aplicando un margen negativo al interior div. Luego aplique el mismo relleno al div interno para que el contenido permanezca a la vista.
.hide-scroll {
overflow: hidden;}.viewport {
overflow:auto;/* Make sure the inner div is not larger than the container
* so that we have room to scroll.
*/
max-height:100%;/* Pick an arbitrary margin/padding that should be bigger
* than the max width of all the scroll bars across
* the devices you are targeting.
* padding = -margin
*/
margin-right:-100px;
padding-right:100px;}
Esta debería ser la respuesta aceptada de la OMI. Lo único que tuve que agregar fue height: inheriteden el .viewportCSS.
Helzgate
44
El único problema con esta respuesta es el espacio "muerto" dejado por la barra de desplazamiento movida, porque no sabemos realmente el ancho de la barra de desplazamiento, para restarlo del relleno.
Frondor
3
Además, no necesita usar valores fijos para el relleno y los márgenes. 100%Es más versátil y hace el trabajo.
Frondor
Trabajó en IE11, Operah y Chrome, todavía no he probado Firefox. Esta es una gran respuesta, +1.
casi un principiante
por que -100pxy 100px??
oldboy
61
Esto funciona para mí con propiedades CSS simples:
.container {-ms-overflow-style: none;// Internet Explorer 10+
scrollbar-width: none;// Firefox}.container::-webkit-scrollbar {
display: none;// Safari and Chrome}
Para versiones anteriores de Firefox, use: overflow: -moz-scrollbars-none;
Desafortunadamente, esto no funciona en FireFox 48.0.2 en macOS Sierra. Si lo hace, overflow: -moz-scrollbars-none;entonces elimina con éxito la barra de desplazamiento, pero también elimina la capacidad de desplazamiento. Es lo mismo que establecer overflow: hiddenel .container.
He actualizado mi respuesta con el último soporte para Firefox :)
Hristo Eftimov
56
Aquí está mi solución, que teóricamente cubre todos los navegadores modernos:
html {
scrollbar-width: none;/* For Firefox */-ms-overflow-style: none;/* For Internet Explorer and Edge */}
html::-webkit-scrollbar {
width:0px;/* For Chrome, Safari, and Opera */}
html se puede reemplazar con cualquier elemento del que desee ocultar la barra de desplazamiento.
Nota : He leído las otras 19 respuestas para ver si el código que estoy publicando ya ha sido cubierto, y parece que no hay una respuesta única que resuma la situación en 2019, aunque muchas de ellas entran en detalles excelentes. Disculpas si alguien más lo ha dicho y me lo perdí.
Funciona para mí en Chrome y Firefox, no he probado IE ni ningún otro navegador. jsfiddle.net/8xtfk729
Ben Davis
1
En Chrome (v54 al menos), esto desactiva el desplazamiento a través de la rueda de desplazamiento por alguna razón. Desplácese a través de las teclas de flecha, inicio / fin / pg abajo / pg arriba, toque la película y el mouse 3 haga clic y arrastre todavía funciona.
Casa3272
Esta respuesta es legítima, en realidad funciona y parece funcionar en todos los navegadores.
Sam
Eso oculta todo el div de mi lado
Jonny
16
Si está buscando una solución para ocultar una barra de desplazamiento para dispositivos móviles, ¡siga la respuesta de Peter !
Aquí hay un jsfiddle , que usa la solución a continuación para ocultar una barra de desplazamiento horizontal.
Fue probado en una tableta Samsung con Android 4.0.4 (Ice Cream Sandwich, tanto en el navegador nativo como en Chrome) y en un iPad con iOS 6 (tanto en Safari como en Chrome).
Esta es la respuesta correcta y debe ser la primera. Todo lo anterior no responde a la pregunta en cuestión. OP no solicita el desplazamiento deshabilitado, quiere ocultar la barra de desplazamiento.
/* Make parent invisible */#parent {
visibility: hidden;
overflow: scroll;}/* Safari and Chrome specific style. Don't need to make parent invisible, because we can style WebKit scrollbars */#parent:not(*:root) {
visibility: visible;}/* Make Safari and Chrome scrollbar invisible */#parent::-webkit-scrollbar {
visibility: hidden;}/* Make the child visible */#child {
visibility: visible;}
se agradecería una explicación de cómo funciona esto: jugar con la visibilidad de padres / hijos para ocultar la barra de desplazamiento es horrible
JackyJohnson el
1
@believesInSanta Agregué comentarios y codepen para explicar mejor. No estoy de acuerdo con su evaluación de que jugar con la visibilidad es una forma horrible de ocultar la barra de desplazamiento. Entiendo que es un truco, pero la forma correcta de lograr este efecto sería si todos los navegadores admitieran una forma de diseñar la barra de desplazamiento por separado, como lo permiten Chrome y Safari.
Blake Plumb
2
Me enamoré de tu solución. Funciona perfectamente (se utiliza en aplicaciones que están diseñadas para ser utilizadas por los navegadores modernos). Muchas gracias!
Maxime Lafarie
7
Si desea que el desplazamiento funcione, antes de ocultar las barras de desplazamiento, considere diseñarlas. Las versiones modernas de OS X y OS móviles tienen barras de desplazamiento que, aunque no son prácticas para agarrar con un mouse, son bastante hermosas y neutrales.
Para ocultar las barras de desplazamiento, una técnica de John Kurlak funciona bien, excepto para dejar a los usuarios de Firefox que no tienen paneles táctiles sin forma de desplazamiento a menos que tengan un mouse con una rueda, lo cual probablemente sí, pero incluso así, generalmente solo pueden desplazarse verticalmente .
La técnica de John utiliza tres elementos:
Un elemento externo para enmascarar las barras de desplazamiento.
Un elemento central para tener las barras de desplazamiento.
Y un elemento de contenido para establecer el tamaño del elemento central y hacer que tenga barras de desplazamiento.
Debe ser posible establecer el tamaño de los elementos externos y de contenido de la misma forma, lo que elimina el uso de porcentajes, pero no puedo pensar en otra cosa que no funcione con los ajustes correctos.
Mi mayor preocupación es si todas las versiones de los navegadores establecen barras de desplazamiento para hacer visible el contenido desbordado visible. He probado en los navegadores actuales, pero no en los anteriores.
%size {// set width and height}.outer {// mask scrollbars of child
overflow: hidden;// set mask size@extend%size;// has absolutely positioned child
position: relative;}.middle {// always have scrollbars.// don't use auto, it leaves vertical scrollbar showing
overflow: scroll;// without absolute, the vertical scrollbar shows
position: absolute;}// prevent text selection from revealing scrollbar, which it only does on// some webkit based browsers..middle::-webkit-scrollbar {
display: none;}.content {// push scrollbars behind mask@extend%size;}
Pruebas
OS X es 10.6.8. Windows es Windows 7.
Firefox 32.0 Barras de desplazamiento ocultas. Las teclas de flecha no se desplazan, incluso después de hacer clic para enfocar, pero la rueda del mouse y dos dedos en el panel táctil sí. OS X y Windows.
Chrome 37.0 Barras de desplazamiento ocultas. Las teclas de flecha funcionan después de hacer clic para enfocar. La rueda del mouse y el trackpad funcionan. OS X y Windows.
Internet Explorer 11 Barras de desplazamiento ocultas. Las teclas de flecha funcionan después de hacer clic para enfocar. La rueda del mouse funciona. Windows
Safari 5.1.10 Barras de desplazamiento ocultas. Las teclas de flecha funcionan después de hacer clic para enfocar. La rueda del mouse y el trackpad funcionan. OS X.
Android 4.4.4 y 4.1.2. Barras de desplazamiento ocultas. El desplazamiento táctil funciona. Probado en Chrome 37.0, Firefox 32.0 y HTMLViewer en 4.4.4 (sea lo que sea). En HTMLViewer, la página tiene el tamaño del contenido enmascarado y también puede desplazarse. El desplazamiento interactúa de manera aceptable con el zoom de la página.
Nota no relacionada (en lo que respecta a la pregunta). En este caso, debería usar @extend versus @include. Entonces, en lugar de @mixin{}hacerlo, %size{}entonces, en los selectores css, llame @extend %size;. Los mixins se usan típicamente cuando se introducen variables para devolver un resultado. Los marcadores de posición (también conocidos como @extend) están destinados a un código simple y repetido como este, donde no se necesita "función".
Mike Barwick
1
Edité para usar @extend. El resultado es probablemente menos comprensible para las personas que no conocen SCSS, pero lo suficientemente bueno.
Seth W. Klein
6
Solo pensé en señalarle a cualquiera que lea esta pregunta que la configuración overflow: hidden(o overflow-y) en el bodyelemento no ocultó las barras de desplazamiento para mí.
No recuerdo exactamente desde hace un par de meses, pero creo que configurar el desbordamiento del cuerpo funcionaba en Chrome, pero no en Firefox (o viceversa). Sin embargo, usar la etiqueta HTML funcionó en ambos.
Brad Azevedo
De memoria esto puede ser una diferencia de modo peculiaridades.
thomasrutter
5
Escribí una versión de WebKit con algunas opciones como ocultar automáticamente , versión pequeña , desplazarse solo-y , o solo-x :
El desplazamiento de desplazamiento funciona, pero casi siempre es una experiencia de usuario deficiente.
Brandon Anzaldi
1
Si bien esto es posible, con un buen ejemplo, existen grandes problemas para los usuarios de tecnología de asistencia cuando deshabilita el desplazamiento y usa JavaScript para manejar el desplazamiento. Si no establece también el foco en un elemento cada vez que se desplaza hacia el usuario, entonces su usuario AT se perderá por completo. Además, cada usuario ahora ha perdido todo el control ajustado sobre lo que ve. Muy mala experiencia de usuario para hacerse cargo del desplazamiento para su usuario. Además de la rueda del mouse, también debe manejar las teclas arriba / abajo, los rotores del lector de pantalla, los clics del mouse y los controles del panel táctil. Esto se vuelve difícil de manejar para el desarrollador y terrible para el usuario.
ShiningLight
2
Creo que puede manipularlo con el overflowatributo CSS, pero tienen una compatibilidad limitada con el navegador. Una fuente dijo que era Internet Explorer 5 (y posterior), Firefox 1.5 (y posterior) y Safari 3 (y posterior), tal vez lo suficiente para sus propósitos.
Buen enlace Es bueno saber cómo el resultado en múltiples navegadores. Desafortunadamente, la cifra de una captura de pantalla de los resultados finales está rota
Chetabahana
-1
Lo intenté todo y lo que funcionó mejor para mi solución fue tener siempre la barra de desplazamiento vertical y luego agregar un margen negativo para ocultarlo.
Respuestas:
Establecer
overflow: hidden;
en la etiqueta del cuerpo de esta manera:El código anterior oculta tanto la barra de desplazamiento horizontal como la vertical.
Si desea ocultar solo la barra de desplazamiento vertical , use
overflow-y
:Y si desea ocultar solo la barra de desplazamiento horizontal , use
overflow-x
:Nota: También deshabilitará la función de desplazamiento. Consulte las respuestas a continuación si solo desea ocultar la barra de desplazamiento, pero no la función de desplazamiento.
fuente
hidden
desplazamiento, funcionará con una rueda de desplazamiento del mouse. En Firefox, el desplazamiento no funcionará con una rueda de desplazamiento del mouse, me tomó un tiempo resolver esto.overflow: hidden
deshabilita el desplazamiento. Si alguien quiere ocultar la barra de desplazamiento, entonces presumiblemente consideran innecesario el control porque no hay contenido para desplazarse en primer lugar . O tal vez simplemente no quieren permitir el desplazamiento por completo .WebKit admite pseudo elementos de barra de desplazamiento que pueden ocultarse con reglas CSS estándar:
Si desea que todas las barras de desplazamiento estén ocultas, use
No estoy seguro acerca de la restauración, esto funcionó, pero podría haber una forma correcta de hacerlo:
Por supuesto, siempre puede usar
width: 0
, que luego se puede restaurar fácilmentewidth: auto
, pero no soy fanático de abusarwidth
de los ajustes de visibilidad.Firefox 64 ahora admite la propiedad experimental de ancho de barra de desplazamiento de forma predeterminada (63 requiere que se establezca un indicador de configuración). Para ocultar la barra de desplazamiento en Firefox 64:
Para ver si su navegador actual admite el pseudo elemento o
scrollbar-width
, intente este fragmento:Mostrar fragmento de código
(Tenga en cuenta que esta no es realmente una respuesta correcta a la pregunta, porque también oculta las barras horizontales, pero eso es lo que estaba buscando cuando Google me señaló aquí, así que pensé que lo publicaría de todos modos).
fuente
Sí, más o menos ...
Cuando hace la pregunta, "¿Se pueden eliminar las barras de desplazamiento de un navegador de alguna manera, en lugar de simplemente ocultas o camufladas", todos dirán "No es posible" porque no es posible eliminar las barras de desplazamiento de todos los navegadores en un de manera compatible y compatible, y luego está todo el argumento de la usabilidad.
Sin embargo, es posible evitar que el navegador tenga la necesidad de generar y mostrar barras de desplazamiento si no permite que su página web se desborde.
Esto solo significa que tenemos que sustituir proactivamente el mismo comportamiento que el navegador normalmente haría por nosotros y decirle al navegador gracias pero no gracias amigo. En lugar de tratar de eliminar las barras de desplazamiento (que todos sabemos que no es posible) podemos evitar el desplazamiento (perfectamente factible) y desplazarnos dentro de los elementos que creamos y tener más control sobre ellos.
Crea un div con desbordamiento oculto. Detecta cuándo el usuario intenta desplazarse, pero no puede hacerlo porque hemos deshabilitado la capacidad de los navegadores para desplazarse con desbordamiento: oculto ... y, en su lugar, mueve el contenido hacia arriba usando JavaScript cuando esto ocurre. De este modo, creamos nuestro propio desplazamiento sin el desplazamiento predeterminado del navegador o utilizamos un complemento como iScroll .
---
Por el bien de ser minucioso; todas las formas específicas del proveedor de manipular barras de desplazamiento:
Internet Explorer 5.5+
* Estas propiedades nunca fueron parte de la especificación CSS, ni fueron aprobadas ni prefijadas por el proveedor, pero funcionan en Internet Explorer y Konqueror. También se pueden configurar localmente en la hoja de estilo del usuario para cada aplicación. En Internet Explorer lo encuentra en la pestaña "Accesibilidad", en Konqueror en la pestaña "Hojas de estilo".
A partir de Internet Explorer 8, estas propiedades tenían el prefijo de proveedor de Microsoft, pero W3C nunca las aprobó .
Más detalles sobre Internet Explorer
Internet Explorer pone a
scroll
disposición lo que establece si deshabilitar o no las barras de desplazamiento; También se puede utilizar para obtener el valor de la posición de las barras de desplazamiento.Con Microsoft Internet Explorer 6 y versiones posteriores, cuando usa la
!DOCTYPE
declaración para especificar el modo compatible con los estándares, este atributo se aplica al elemento HTML. Cuando no se especifica el modo compatible con los estándares, como en las versiones anteriores de Internet Explorer, este atributo se aplica alBODY
elemento, NO alHTML
elemento.También vale la pena señalar que cuando se trabaja con .NET, la clase ScrollBar
System.Windows.Controls.Primitives
en el marco de presentación es responsable de representar las barras de desplazamiento.http://msdn.microsoft.com/en-us/library/ie/ms534393(v=vs.85).aspx
WebKit
Las extensiones de WebKit relacionadas con la personalización de la barra de desplazamiento son:
Estos se pueden combinar con pseudo-selectores adicionales:
:horizontal
- La pseudo-clase horizontal se aplica a cualquier pieza de la barra de desplazamiento que tenga una orientación horizontal.:vertical
- La pseudo-clase vertical se aplica a cualquier pieza de la barra de desplazamiento que tenga una orientación vertical.:decrement
- La pseudoclase de disminución se aplica a botones y piezas de seguimiento. Indica si el botón o la pieza de la pista disminuirá la posición de la vista cuando se use (por ejemplo, arriba en una barra de desplazamiento vertical, izquierda en una barra de desplazamiento horizontal).:increment
- La pseudoclase de incremento se aplica a botones y piezas de seguimiento. Indica si un botón o pieza de pista incrementará la posición de la vista cuando se use (por ejemplo, hacia abajo en una barra de desplazamiento vertical, hacia la derecha en una barra de desplazamiento horizontal).:start
- La pseudoclase de inicio se aplica a botones y piezas de seguimiento. Indica si el objeto se coloca antes del pulgar.:end
- La pseudo-clase final se aplica a botones y piezas de seguimiento. Indica si el objeto se coloca después del pulgar.:double-button
- La pseudoclase de doble botón se aplica a botones y piezas de seguimiento. Se utiliza para detectar si un botón es parte de un par de botones que están juntos en el mismo extremo de una barra de desplazamiento. Para las piezas de la pista indica si la pieza de la pista tiene un par de botones.:single-button
- La pseudoclase de un solo botón se aplica a botones y piezas de seguimiento. Se utiliza para detectar si un botón está solo al final de una barra de desplazamiento. Para las piezas de pista, indica si la pieza de pista tiene un botón singleton.:no-button
- Se aplica a las piezas de la pista e indica si la pieza de la pista corre o no hasta el borde de la barra de desplazamiento, es decir, no hay ningún botón en ese extremo de la pista.:corner-present
- Se aplica a todas las piezas de la barra de desplazamiento e indica si existe o no una esquina de la barra de desplazamiento.:window-inactive
- Se aplica a todas las piezas de la barra de desplazamiento e indica si la ventana que contiene la barra de desplazamiento está activa o no. (En noches recientes, esta pseudo-clase ahora también se aplica a :: selection. Planeamos extenderla para que funcione con cualquier contenido y proponerla como una nueva pseudo-clase estándar).Ejemplos de estas combinaciones.
Más detalles sobre Chrome
Mozilla
Mozilla tiene algunas extensiones para manipular las barras de desplazamiento, pero se recomienda no usarlas.
-moz-scrollbars-none
Recomiendan usar overflow: oculto en lugar de esto.-moz-scrollbars-horizontal
Similar a overflow-x-moz-scrollbars-vertical
Similar a overflow-y-moz-hidden-unscrollable
Solo funciona internamente dentro de la configuración de un perfil de usuario. Deshabilita el desplazamiento de elementos raíz XML y deshabilita el uso de teclas de flecha y la rueda del mouse para desplazarse por las páginas web.Documentos de desarrollador de Mozilla sobre 'Desbordamiento'
Más detalles sobre Mozilla
Por lo que sé, esto no es realmente útil, pero vale la pena señalar que el atributo que controla si las barras de desplazamiento se muestran o no en Firefox es ( enlace de referencia ):
Por último, pero no menos importante, el relleno es como magia.
Como se ha mencionado anteriormente en algunas otras respuestas, aquí hay una ilustración que se explica por sí misma suficientemente.
Leccion de historia
Solo porque tengo curiosidad, quería aprender sobre el origen de las barras de desplazamiento, y estas son las mejores referencias que encontré.
Diverso
En un borrador de especificación HTML5, el
seamless
atributo se definió para evitar que aparezcan barras de desplazamiento en iFrames para que puedan mezclarse con el contenido circundante en una página . Aunque este elemento no aparece en la última revisión.El
scrollbar
objeto BarProp es un elemento secundario delwindow
objeto y representa el elemento de la interfaz de usuario que contiene un mecanismo de desplazamiento o algún concepto de interfaz similar.window.scrollbars.visible
volverátrue
si las barras de desplazamiento son visibles.La API de historial también incluye características para la restauración de desplazamiento en la navegación de la página para mantener la posición de desplazamiento en la carga de la página.
window.history.scrollRestoration
se puede usar para verificar el estado de la restauración de desplazamiento o cambiar su estado (anexar="auto"/"manual"
. Automático es el valor predeterminado. Cambiarlo a manual significa que usted, como desarrollador, tomará posesión de los cambios de desplazamiento que puedan ser necesarios cuando un usuario recorre el historial de la aplicación Si lo necesita, puede realizar un seguimiento de la posición de desplazamiento mientras empuja las entradas del historial con history.pushState ().---
Otras lecturas:
Ejemplos
fuente
Puede lograr esto con un contenedor
div
que tiene su desbordamiento oculto y eldiv
conjunto interno configurado comoauto
.Para eliminar la
div
barra de desplazamiento del interior , puede sacarlo de ladiv
ventana del exterior aplicando un margen negativo al interiordiv
. Luego aplique el mismo relleno al div interno para que el contenido permanezca a la vista.JSFiddle
HTML
CSS
fuente
height: inherited
en el.viewport
CSS.100%
Es más versátil y hace el trabajo.-100px
y100px
??Esto funciona para mí con propiedades CSS simples:
Para versiones anteriores de Firefox, use:
overflow: -moz-scrollbars-none;
fuente
overflow: -moz-scrollbars-none;
entonces elimina con éxito la barra de desplazamiento, pero también elimina la capacidad de desplazamiento. Es lo mismo que estableceroverflow: hidden
el.container
.-moz-scrollbars-none
: "Esta es una API obsoleta y ya no se garantiza que funcione".Aquí está mi solución, que teóricamente cubre todos los navegadores modernos:
html
se puede reemplazar con cualquier elemento del que desee ocultar la barra de desplazamiento.Nota : He leído las otras 19 respuestas para ver si el código que estoy publicando ya ha sido cubierto, y parece que no hay una respuesta única que resuma la situación en 2019, aunque muchas de ellas entran en detalles excelentes. Disculpas si alguien más lo ha dicho y me lo perdí.
fuente
Creo que encontré una solución para ustedes si aún están interesados. Esta es mi primera semana, pero funcionó para mí ...
fuente
Si está buscando una solución para ocultar una barra de desplazamiento para dispositivos móviles, ¡siga la respuesta de Peter !
Aquí hay un jsfiddle , que usa la solución a continuación para ocultar una barra de desplazamiento horizontal.
Fue probado en una tableta Samsung con Android 4.0.4 (Ice Cream Sandwich, tanto en el navegador nativo como en Chrome) y en un iPad con iOS 6 (tanto en Safari como en Chrome).
fuente
Use
la:overflow
propiedad CSSAquí hay algunos ejemplos más:
fuente
Como las otras personas ya dijeron, usa CSS
overflow
.Pero si aún desea que el usuario pueda desplazar ese contenido (sin que la barra de desplazamiento esté visible), debe usar JavaScript.
Vea mi respuesta aquí para una solución: Ocultar la barra de desplazamiento mientras aún puedo desplazarme con el mouse / teclado
fuente
Además de la respuesta de Peter:
Esto funcionará igual para Internet Explorer 10:
fuente
Enfoque cruzado del navegador para ocultar la barra de desplazamiento.
Fue probado en Edge, Chrome, Firefox y Safari
¡Oculta la barra de desplazamiento mientras aún puedes desplazarte con la rueda del mouse!
Codepen
fuente
Si desea que el desplazamiento funcione, antes de ocultar las barras de desplazamiento, considere diseñarlas. Las versiones modernas de OS X y OS móviles tienen barras de desplazamiento que, aunque no son prácticas para agarrar con un mouse, son bastante hermosas y neutrales.
Para ocultar las barras de desplazamiento, una técnica de John Kurlak funciona bien, excepto para dejar a los usuarios de Firefox que no tienen paneles táctiles sin forma de desplazamiento a menos que tengan un mouse con una rueda, lo cual probablemente sí, pero incluso así, generalmente solo pueden desplazarse verticalmente .
La técnica de John utiliza tres elementos:
Debe ser posible establecer el tamaño de los elementos externos y de contenido de la misma forma, lo que elimina el uso de porcentajes, pero no puedo pensar en otra cosa que no funcione con los ajustes correctos.
Mi mayor preocupación es si todas las versiones de los navegadores establecen barras de desplazamiento para hacer visible el contenido desbordado visible. He probado en los navegadores actuales, pero no en los anteriores.
Perdón mi SASS ; P
Pruebas
OS X es 10.6.8. Windows es Windows 7.
fuente
@mixin{}
hacerlo,%size{}
entonces, en los selectores css, llame@extend %size;
. Los mixins se usan típicamente cuando se introducen variables para devolver un resultado. Los marcadores de posición (también conocidos como @extend) están destinados a un código simple y repetido como este, donde no se necesita "función".Solo pensé en señalarle a cualquiera que lea esta pregunta que la configuración
overflow: hidden
(o overflow-y) en elbody
elemento no ocultó las barras de desplazamiento para mí.Tuve que usar el
html
elemento.fuente
Escribí una versión de WebKit con algunas opciones como ocultar automáticamente , versión pequeña , desplazarse solo-y , o solo-x :
http://codepen.io/hicTech/pen/KmKrjb
fuente
Copie este código CSS al código del cliente para ocultar la barra de desplazamiento:
fuente
Mi HTML es así:
Agregue esto a su lugar
div
donde desea ocultar la barra de desplazamiento:Y agregue esto al contenedor
fuente
Para deshabilitar la barra de desplazamiento vertical, simplemente agregue
overflow-y:hidden;
.Encuentre más sobre esto: desbordamiento .
fuente
Mi respuesta se desplazará incluso cuando
overflow:hidden;
, usando jQuery:Por ejemplo, desplácese horizontalmente con la rueda del mouse:
fuente
Creo que puede manipularlo con el
overflow
atributo CSS, pero tienen una compatibilidad limitada con el navegador. Una fuente dijo que era Internet Explorer 5 (y posterior), Firefox 1.5 (y posterior) y Safari 3 (y posterior), tal vez lo suficiente para sus propósitos.Desplazamiento, desplazamiento, desplazamiento tiene una buena discusión.
fuente
Lo intenté todo y lo que funcionó mejor para mi solución fue tener siempre la barra de desplazamiento vertical y luego agregar un margen negativo para ocultarlo.
fuente