suavizar enlaces desplazamiento animado anclas ancla javascript html ajax xhtml

javascript - enlaces - ¿Cómo deshabilitar el desplazamiento del cuerpo del documento?



desplazamiento animado en anclas de enlaces (6)

El siguiente JavaScript podría funcionar:

var page = $doc.getElementsByTagName(''body'')[0];

Para deshabilitar el uso de desplazamiento:

page.classList.add(''noscroll'');

Para habilitar el uso de desplazamiento:

page.classList.remove(''noscroll'');

En el archivo CSS, agregue:

.noscroll { position: fixed!important }

Tengo un HTML que tiene mucho contenido y una barra de desplazamiento vertical aparece tan pronto como se carga el HTML. Ahora desde este HTML se carga un IFRAME de pantalla completa. El problema es cuando el IFRAME está cargado, la barra de desplazamiento principal aún persiste, quiero deshabilitar la barra de desplazamiento cuando se carga el Iframe.

Lo intenté:

  • document.body.scroll = "no" , no funcionó con FF y chrome.
  • document.style.overflow = "hidden"; después de esto todavía podía desplazarme, y todo el iframe se desplazaría hacia arriba revelando el HTML principal.

Mi requisito es que, cuando se cargue el IFRAME, nunca podremos desplazar todo el IFRAME si el HTML principal tiene una barra de desplazamiento.

¿Algunas ideas?


Respuesta: document.body.scroll = ''no'';


Sé que esta es una pregunta antigua, pero solo pensé que pesaría.

Estoy usando disableScroll . Simple y funciona como en un sueño.

He tenido algunos problemas para desactivar el desplazamiento en el cuerpo, pero lo he permitido en elementos secundarios (como un modal o una barra lateral). Parece que se puede hacer algo usando disableScroll.on([element], [options]); , pero todavía no he conseguido que funcione.

La razón por la que se prefiere esto en comparación con el overflow: hidden; en el cuerpo es que el desbordamiento oculto puede ser desagradable, ya que algunas cosas pueden agregar overflow: hidden; Me gusta esto:

... Esto es bueno para los precargadores y demás, ya que se procesa antes de que el CSS termine de cargarse.

Pero da problemas, cuando una navegación abierta debe agregar una clase al body -tag (como <body class="body__nav-open"> ). Y luego se convierte en una gran batalla con overflow: hidden; !important overflow: hidden; !important y todo tipo de basura.


Si desea utilizar la barra de desplazamiento del iframe y no los padres, use esto:

document.body.style.overflow = ''hidden'';

Si desea utilizar la barra de desplazamiento de los padres y no el marco, debe utilizar:

document.getElementById(''your_iframes_id'').scrolling = ''no'';

o establezca el atributo scrolling="no" en la etiqueta de su iframe: <iframe src="some_url" scrolling="no"> .


agrega este css

body.disable-scroll { overflow: hidden; }

y cuando deshabilitar ejecutar este código

$("body").addClass("disable-scroll");

y cuando habilitar ejecutar este código

$("body").removeClass("disable-scroll")


con css

body,html{ overflow:hidden }