portero morgan
Estoy haciendo una aplicación con html y necesito tener una barra de desplazamiento. Pero cada vez que agrego uno, cambia todo para hacer el espacio necesario para la barra de desplazamiento. Esto arruina el diseño de la aplicación.
Así que necesito una forma de hacer que la barra de desplazamiento simplemente se superponga en la parte superior de la página, lo que significa que la página todavía está detrás de ella. Ya sé cómo diseñar la barra de desplazamiento para que la parte posterior sea transparente, solo necesito que la barra de desplazamiento no ocupe espacio.
¡Gracias de antemano!
Sos Sargsián
Actualizar – overlay
era solo webkit y ahora está obsoleto.
Puedes usar el overflow
overlay
propiedad en lugar de scroll
:
html {
overflow-y: overlay;
}
-
overflow: overlay
ha quedado en desuso y no debe utilizarse. Y solo es compatible con navegadores basados en WebKit. Ver developer.mozilla.org/en-US/docs/Web/CSS/overflow– Tomillo
8 de marzo de 2019 a las 16:26
-
Desafortunadamente, mientras funciona, no representará el contenido visiblemente detrás del ancho de la barra de desplazamiento. Es un poco raro.
– contador de invierno
1 de septiembre de 2020 a las 9:26
KyleMit
Actualización 2021 – Uso scrollbar-gutter
los scrollbar-gutter
La propiedad CSS permite a los autores reservar espacio para la barra de desplazamiento, evitando cambios de diseño no deseados a medida que crece el contenido y evitando imágenes innecesarias cuando no es necesario desplazarse.
body {
overflow-y: auto;
scrollbar-gutter: stable;
}
Ejemplo
Demostración en Stack Snippets y jsviolín
body {
padding: 16px;
}
.grid {
display: grid;
grid-template-columns: repeat(2, 273px);
grid-gap: 16px;
}
.card-header {
margin-bottom: 4px;
white-space: pre-line;
font-weight: bold;
}
.card-body {
overflow: auto;
border: 1px solid black;
height: 120px;
}
.scrollbar-stable {
scrollbar-gutter: stable;
}
<h1><code>scrollbar-gutter</code> sample</h1>
<div class="grid">
<div class="card">
<pre class="card-header">
overflow: auto;
scrollbar-gutter: auto;
</pre>
<div class="card-body">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol</div>
</div>
<div class="card">
<pre class="card-header">
overflow: auto;
scrollbar-gutter: stable;
</pre>
<div class="card-body scrollbar-stable">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol</div>
</div>
<div class="card">
<pre class="card-header">
overflow: auto;
scrollbar-gutter: auto;
</pre>
<div class="card-body">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol borking doggo with a long snoot for pats shibe long woofer very hand that feed shibe pats, vvv wow such tempt long woofer heckin fluffer. Long water shoob smol corgo sub woofer</div>
</div>
<div class="card">
<pre class="card-header">
overflow: auto;
scrollbar-gutter: stable;
</pre>
<div class="card-body scrollbar-stable">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol borking doggo with a long snoot for pats shibe long woofer very hand that feed shibe pats, vvv wow such tempt long woofer heckin fluffer. Long water shoob smol corgo sub woofer</div>
</div>
</div>
Otras lecturas
- Documentos
- Artículos
- Especificaciones
- Relacionado
- HTML reserva espacio para la barra de desplazamiento
- Evite que la barra de desplazamiento se sume al ancho de la página en Chrome
- Chrome reserva espacio para la barra de desplazamiento incluso si está oculta
- CSS 100% de ancho pero evita la barra de desplazamiento
- Alternativamentepara que la barra de desplazamiento nunca ocupe espacio, consulte:
- Ocultar la barra de desplazamiento, pero sin dejar de poder desplazarse
-
La pregunta pregunta sobre cómo hacer que no ocupe espacio, esto hace que siempre ocupe espacio.
– Cañón de vidrio
22 de agosto a las 22:28
-
@GlassCannon, la pregunta también se refiere a cómo “prevenir el cambio de diseño” que esto resuelve, pero agregó un enlace a algunas soluciones alternativas para ocupar cero espacio (aunque esto puede presentar desafíos para los usuarios que dependen de la disponibilidad de la barra de desplazamiento)
– KyleMit
♦23 de agosto a las 11:43
No hay manera de hacer que aparezca una barra de desplazamiento en la parte superior de su contenido sin usar trucos sombríos, y de todos modos no es la mejor idea, ya que afectará la usabilidad de su aplicación. Si la barra de desplazamiento está sobre el contenido, es probable que oculte enlaces/texto/etc.
Idealmente, su página debe tener un estilo que se adapte a diferentes anchos de navegador/página sin romperse. Especialmente con solo una pequeña barra de desplazamiento.
De todos modos, aquí hay una solución que puede ayudar:
html {
overflow-y: scroll;
}
Agregar este estilo asegurará que la pista de la barra de desplazamiento esté siempre presente y también ayudará a evitar páginas “con saltos” cuando aparezca/desaparezca una barra de desplazamiento. Una vez más, la solución real es utilizar un diseño flexible.
Como nota al margen, generalmente no se recomienda diseñar la barra de desplazamiento. No funciona entre navegadores y, por lo general, se ignorará por completo.
-
^ Sí, lo que dijo. +1
– Nicolás Hazel
26 de enero de 2014 a las 18:36
-
No necesito preocuparme por los navegadores cruzados, ya que estoy usando tidesdk, que solo usa webkit. Supongo que tendré que encontrar una manera de lidiar con eso. ¡Gracias!
– Portero Morgan
26 de enero de 2014 a las 19:04
-
Ni siquiera lo recomendaría en webkit, de hecho, hubo una actualización reciente que cambió drásticamente la barra de desplazamiento.
–Wesley Murch
26 de enero de 2014 a las 19:16
-
¡estupendo! Lo pruebo y funciona como se esperaba.
– sherwin00103898-276165-15433
9 abr a las 1:45
-
Consulte la respuesta de KyleMit, que funciona muy bien.
– ManojTM
24 de mayo a las 5:01
Puede resolver esto ocultando la barra de desplazamiento. La solución está en el sitio web de ws3Schools, https://www.w3schools.com/howto/howto_css_hide_scrollbars.asp
<!DOCTYPE html>
<html>
<head>
<style>
.example {
background-color: #eee;
width: 200px;
height: 100px;
border: 1px dotted black;
overflow-y: scroll; /* Add the ability to scroll */
}
/* Hide scrollbar for Chrome, Safari and Opera */
.example::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
.example {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
</style>
</head>
<body>
<h2>Hide scrollbar but keep functionality</h2>
<p>Try to scroll inside the div below:</p>
<div class="example">Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. </div>
</body>
</html>
huelga de papel
Si no tiene miedo de tener algo oculto, el código a continuación parece funcionar.
body {
width: 100vw;
overflow-x: hidden;
}
@supports (overflow-x: clip) {
body {
overflow-x: clip;
}
}
La diferencia entre clip
y hidden
es que el clip
palabra clave también prohíbe todos desplazamiento, incluido el desplazamiento programático. Para navegadores no compatibles clip
Reiniciar scrollLeft
a 0
en la devolución de llamada del evento de desplazamiento de document.body
si es necesario.
Ver también, compatibilidad del navegador de overflow
.
tamaño yu sim
Si desea ocultar la barra de desplazamiento todo el tiempo, puede usar este código. *
decir todo
/* Hide scrollbar for Chrome, Safari and Opera */
*::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
*{
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
¿Puede proporcionar su código actual, tal vez con esto?. Mi psíquico Los poderes no están funcionando bien hoy. Además, si el
scrollbar
no ocupa espacio… ¿cómo se desplazaría…? Su mejor apuesta aquí es forzar la barra de desplazamiento para mostrar SIEMPRE. Alternativamente, use relleno en sus elementos para que eso no suceda.– Nicolás Hazel
26 de enero de 2014 a las 18:28
Si publica código en JSFiddle, también debe publicarse aquí para que la pregunta sea independiente. Por supuesto, el código debe publicarse aquí de todos modos, pero publicar solo en JSFiddle o similar no es satisfactorio.
– ajp15243
26 de enero de 2014 a las 18:31
quiero decir que la barra de desplazamiento está ahí, es solo que el contenido del sitio podría estar detrás, como si la barra de desplazamiento no estuviera allí, pero aún puede verlo
– Portero Morgan
26 de enero de 2014 a las 19:12
@NicholasHazel, si el contenido no llega al final de la página, la barra de desplazamiento no aparecerá.
– yaakov
17/07/2016 a las 20:24