Solo una prueba que funciona bien.
#parent{
width: 100%;
height: 100%;
overflow: hidden;
}
#child{
width: 100%;
height: 100%;
overflow-y: scroll;
padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */
box-sizing: content-box; /* So the width will be 100% + 17px */
}
Violín de trabajo
JavaScript:
Dado que el ancho de la barra de desplazamiento difiere en diferentes navegadores, es mejor manejarlo con JavaScript. Si lo hace Element.offsetWidth - Element.clientWidth
, se mostrará el ancho exacto de la barra de desplazamiento.
Fiddle de trabajo de JavaScript
O
Utilizando Position: absolute
,
#parent{
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
}
#child{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: -17px; /* Increase/Decrease this value for cross-browser compatibility */
overflow-y: scroll;
}
Violín de trabajo
Fiddle de trabajo de JavaScript
Información:
Basado en esta respuesta, creé un simple complemento de desplazamiento .
!important
así que los eliminébox-sizing: border-box; width: calc(100% + 50px);
el mismo valor para el relleno. No hay ningún navegador tiene 50px barra de desplazamiento anchura / altura, por lo que sólo debe cubrir a todos ...Es fácil en WebKit, con un estilo opcional:
fuente
cordova
aplicación, funcionó bien. tuvo que aplicaroverflow:scroll
al elemento.-webkit-overflow-scrolling: touch
Esto funciona para mí con propiedades CSS simples:
Para versiones anteriores de Firefox, use:
overflow: -moz-scrollbars-none;
fuente
overflow: -moz-scrollbars-none
oculta las barras de desplazamiento en Firebox pero también deshabilita el desplazamiento. ¿Puede proporcionar una demostración donde esto funcione para usted?-moz-scrollbars-none
propiedad se elimina para las versiones más recientes de Firefox: developer.mozilla.org/en-US/docs/Web/CSS/overflow-webkit-overflow-scrolling: touch
-moz-scrollbars-none
puedes usar@-moz-document url-prefix() { .container { overflow: hidden; } }
. Ver stackoverflow.com/questions/952861/… .ACTUALIZAR:
Firefox ahora admite ocultar barras de desplazamiento con CSS, por lo que todos los principales navegadores están cubiertos (Chrome, Firefox, Internet Explorer, Safari, etc.).
Simplemente aplique el siguiente CSS al elemento del que desea eliminar las barras de desplazamiento:
Esta es la solución de navegador cruzado menos hacky que conozco actualmente. Mira la demo.
RESPUESTA ORIGINAL:
Aquí hay otra forma que aún no se ha mencionado. Es realmente simple y solo involucra dos divs y CSS. No se necesita JavaScript ni CSS patentado, y funciona en todos los navegadores. Tampoco requiere establecer explícitamente el ancho del contenedor, lo que lo hace fluido.
Este método usa un margen negativo para mover la barra de desplazamiento fuera del padre y luego la misma cantidad de relleno para empujar el contenido a su posición original. La técnica funciona para desplazamiento vertical, horizontal y bidireccional.
Población:
Código de ejemplo para la versión vertical:
HTML:
CSS:
fuente
Utilizar:
Este es un truco para superponer algo la barra de desplazamiento con un div superpuesto que no tiene barras de desplazamiento:
Esto es solo para los navegadores WebKit ... O puede usar contenido CSS específico del navegador (si hay alguno en el futuro). Cada navegador podría tener una propiedad diferente y específica para sus respectivas barras.
Para uso de Microsoft Edge:
-ms-overflow-style: -ms-autohiding-scrollbar;
o-ms-overflow-style: none;
según MSDN .No hay equivalente para Firefox. Aunque hay un complemento jQuery para lograr esto, http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html
fuente
::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; }
// jQuery Mobile onMobileInit ()$.mobile.touchOverflowEnabled = true;
Esta respuesta no incluye el código, así que aquí está la solución de la página :
De acuerdo con la página, este enfoque no necesita conocer el ancho de la barra de desplazamiento antes de tiempo para funcionar y la solución también funciona para todos los navegadores, y se puede ver aquí .
Lo bueno es que no está obligado a usar relleno o diferencias de ancho para ocultar la barra de desplazamiento.
Esto también es seguro para el zoom. Las soluciones de relleno / ancho muestran la barra de desplazamiento cuando se amplía al mínimo.
Corrección de Firefox: http://jsbin.com/mugiqoveko/1/edit?output
fuente
::-webkit-scrollbar {}
padding-right: 150px;
arregla. Probado en FF, Chrome, Safari y Edge. Funciona también en niveles bajos de zoom debido al gran relleno derecho.html { -ms-overflow-style: none;}
. En estos navegadores no es necesario usar padding-hack.overflow-y: scroll
obtener un comportamiento de desplazamiento pero oculto (al igual que Chrome) para que funcione en Edge23.Simplemente use las siguientes tres líneas y su problema se resolverá:
Donde liaddshapes es el nombre del div donde viene el pergamino.
fuente
Esto funciona para mí cross-browser. Sin embargo, esto no oculta las barras de desplazamiento nativas en los navegadores móviles.
En SCSS
En CSS
fuente
{}
)? ¿Cómo se debe interpretar? Y el&
? Quizás elaborado en su respuesta?&::-webkit-scrollbar
convierte.hide-native-scrollbar::-webkit-scrollbar { }
en CSS{ width: 0; height: 0;}
para :: - webkit-scrollbar en lugar dedisplay: none
para iOS.Lo siguiente me funcionó en Microsoft, Chrome y Mozilla para un elemento div específico:
fuente
scrollbar-width
(solo FF) se marca como "experimental"HTML:
CSS:
Aplicar CSS en consecuencia.
Compruébelo aquí (probado en Internet Explorer y Firefox).
fuente
A partir del 11 de diciembre de 2018 (Firefox 64 y superior), la respuesta a esta pregunta es muy simple, ya que Firefox 64+ ahora implementa la especificación CSS Stylingbar Styling .
Solo usa el siguiente CSS:
Enlace de la nota de lanzamiento de Firefox 64 aquí .
fuente
Utilizar:
CSS
HTML
fuente
Utilizar
Llame a estas funciones para cualquier punto que desee cargar, descargar o volver a cargar las barras de desplazamiento. Todavía se puede desplazar en Chrome como lo probé en Chrome, pero no estoy seguro de los otros navegadores.
fuente
Esto funciona para mi:
fuente
En los navegadores modernos puede usar
wheel event
:fuente
overflow: hidden
y este código, para quemat-card-content
(en angular 5, por supuesto) sea desplazable y esto resolvió mi problema. Nota: Utilicée.deltaY
como mistep
y funcionó como un desplazamiento normal, por lo que creo que para el desplazamiento normal pero con la barra de desplazamiento oculta, esta es la mejor coincidencia.Mi problema: no quiero ningún estilo en mi contenido HTML. Quiero que mi cuerpo se pueda desplazar directamente sin ninguna barra de desplazamiento, y solo un desplazamiento vertical, que funcione con cuadrículas CSS para cualquier tamaño de pantalla.
El valor del tamaño de la caja impacta las soluciones de margen o margen, funcionan con el tamaño de la caja: content-box .
Todavía necesito la directiva "-moz-scrollbars-none", y al igual que gdoron y Mr_Green, tuve que ocultar la barra de desplazamiento. Lo intenté
-moz-transform
y-moz-padding-start
, para afectar solo a Firefox, pero hubo efectos secundarios receptivos que necesitaron demasiado trabajo.Esta solución funciona para el contenido del cuerpo HTML con el estilo "display: grid", y responde.
fuente
Agregar relleno a un interior
div
, como en la respuesta actualmente aceptada, no funcionará si por alguna razón quieres usarlobox-model: border-box
.Lo que sí funciona en ambos casos es aumentar el ancho del interior
div
al 100% más el ancho de la barra de desplazamiento (suponiendooverflow: hidden
en el div externo).Por ejemplo, en CSS:
En JavaScript, navegador cruzado:
fuente
Así es como lo hago para el desplazamiento horizontal; solo CSS y funciona bien con marcos como Bootstrap / col- *. Solo necesita dos
div
s adicionales y el padre con unwidth
omax-width
conjunto:Puede seleccionar el texto para que se desplace o desplazarse con los dedos si tiene una pantalla táctil.
Versión corta para gente perezosa:
fuente
margin-bottom
para serpadding-bottom
pero con el mismo valor. Esto no comerá debajo del espacio para el elemento en la parte inferior. Previene la superposición.margin-bottom
es negativo, creo que no se puede cambiar a apadding-bottom
, que no puede manejar valores negativosEl siguiente estilo SASS debería hacer que su barra de desplazamiento sea transparente en la mayoría de los navegadores (Firefox no es compatible):
fuente
Intenté probar las soluciones anteriores en mi proyecto y, por alguna razón, no pude ocultar la barra de desplazamiento debido al posicionamiento div. Por lo tanto, decidí ocultar la barra de desplazamiento introduciendo un div que lo cubriera superficialmente. El siguiente ejemplo es para una barra de desplazamiento horizontal:
El CSS correspondiente es el siguiente:
fuente
Esto será en el cuerpo:
Y este es el CSS:
fuente
Esta es una solución divitis-esque que no obstante debería funcionar para todos los navegadores ...
El marcado es el siguiente y debe estar dentro de algo con un posicionamiento relativo (y su ancho debe establecerse, por ejemplo, 400 píxeles):
El CSS:
fuente
El
perfect-scrollbar
complemento parece ser el camino a seguir, consulte: https://github.com/noraesae/perfect-scrollbarEs una solución bien documentada y completa basada en JavaScript para el problema de las barras de desplazamiento.
Página de demostración: http://noraesae.github.io/perfect-scrollbar/
fuente
Puede usar el siguiente código para ocultar la barra de desplazamiento, pero aún así puede desplazarse:
fuente
Para ocultar barras de desplazamiento para elementos con contenido desbordante, use.
fuente
Otro tipo de enfoque hacky es hacer
overflow-y: hidden
y luego desplazar manualmente el elemento con algo como esto:Hay un gran artículo sobre cómo detectar y tratar
onmousewheel
eventos en el blog de deepmikoto . Esto podría funcionar para usted, pero definitivamente no es una solución elegante.fuente
Solo quería compartir un fragmento combinado para ocultar la barra de desplazamiento que uso cuando desarrollo. Es una colección de varios fragmentos encontrados en Internet que funciona para mí:
fuente
Otro violín de trabajo simple :
Desbordamiento oculto en el contenedor primario y desbordamiento automático en el contenedor secundario. Simple.
fuente
Esta solución difícil funciona incluso en el antiguo navegador web IE
Es una solución alternativa a la [ barra de desplazamiento vertical ]
Solo pruébalo: jsfiddle
fuente
Simplemente configure el ancho del ancho del niño al 100%, el relleno a 15 píxeles,
overflow-x
para desplazarse yoverflow:hidden
para el padre y el ancho que desee.Funciona perfectamente en todos los principales navegadores, incluidos Internet Explorer y Edge, con la excepción de Internet Explorer 8 y versiones anteriores.
fuente