DISABILITARE lo scorrimento orizzontale [chiuso]


180

Ok per qualche motivo la mia pagina web scorre da sinistra a destra e mostra molto brutto spazio.

Ho cercato i risultati ma hanno appena creato la barra di scorrimento NASCOSTA

Questo è quello che voglio, voglio DISATTIVARE fisicamente la funzione di scorrimento orizzontale. Non voglio che l'utente sia in grado di scorrere da sinistra a destra sulla mia pagina solo su e giù!

Ho provato: overflow-x:hiddenin CSS sul mio htmltag, ma ha solo nascosto la barra di scorrimento e non ha disabilitato lo scorrimento.

Mi aiuti per favore!

Ecco un link alla pagina: http://www.green-panda.com/usd309bands/ (link non funzionante)

Questo potrebbe darti un'idea migliore di cosa sto parlando:

Questo è quando vengono caricate le prime pagine:

inserisci qui la descrizione dell'immagine

E questo dopo che scorro verso destra:

inserisci qui la descrizione dell'immagine


1
Come si fa a scorrere in orizzontale se non esiste una barra di scorrimento orizzontale?
— Roddy of the Frozen Peas

9
Due dita del mouse che vanno da sinistra a destra su un laptop.
— user2371301

1
Per curiosità, cosa sulla tua pagina crea una barra di scorrimento predefinita?
— Trojan,

4
Come scorrere senza una barra di scorrimento? Trascinamento con il tasto centrale del mouse su Windows.
— Nayuki,

ci deve essere un blocco che avrà un'imbottitura extra, cioè estendere la larghezza del 100% rimuovendo che sarebbe una buona pratica
— eruzione cutanea

Risposte:


494

Prova ad aggiungere questo al tuo CSS

html, body {
    max-width: 100%;
    overflow-x: hidden;
}

5
Funzionava alla grande. Sono contento di aver trovato qualcuno che ha capito cosa stavo dicendo! Accetterò appena posso.
— user2371301

44
In Chrome 34 ciò non impedisce realmente lo scorrimento. Nasconde la barra di scorrimento, ma con lo scorrimento del pulsante centrale posso ancora vedere gli elementi nascosti a sinistra.
— gphilip,

2
Questo non funziona quando si minimizza la finestra del browser alla sua capacità
— minima

4
: - / Causato tocco / momentum scrolling per smettere di funzionare su iPhone
— MarkWPiper

2
ti amo ragazzo!!
— rochasdv,

13

questo è il figlio cattivo del tuo codice :)

.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {
width: 1170px;
}

sostituirlo con

.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {
width: 100%;
}

13

Quindi, per risolvere questo problema, ho fatto quello che hanno fatto gli altri qui e ho usato CSS per nascondere la barra degli strumenti orizzontale:

.name {
  max-width: 100%;
  overflow-x: hidden;
}

Quindi in js, ho creato un listener di eventi per cercare lo scorrimento e ho contrastato il tentativo di scorrimento orizzontale degli utenti.

var scrollEventHandler = function()
{
  window.scroll(0, window.pageYOffset)
}

window.addEventListener("scroll", scrollEventHandler, false);

Ho visto qualcuno fare qualcosa di simile, ma a quanto pare non ha funzionato. Questo comunque funziona perfettamente per me.


Questo funziona per me; tuttavia c'è un jitter sul cellulare durante lo scorrimento; mentre il movimento rallenta.
— HardlyNoticeable il

"propriamente" Non del tutto, ma comunque una risposta buona e creativa.
— Feathercrown

9

So che è troppo tardi , ma c'è un approccio in javascript che può aiutarti a rilevare l'elemento html della strega sta causando l'overflow orizzontale -> barra di scorrimento per apparire

Ecco un link al post su Trucchi CSS

var docWidth = document.documentElement.offsetWidth;
[].forEach.call(
  document.querySelectorAll('*'),
  function(el) {
    if (el.offsetWidth > docWidth) {
      console.log(el);
    }
  }
);

Potrebbe restituire qualcosa del genere:

<div class="div-with-extra-width">...</div>

quindi rimuovi semplicemente la larghezza aggiuntiva da divo impostalamax-width:100%

Spero che questo ti aiuti!

Mi ha risolto il problema:]


Come nota del sito, boundingClientRect è più preciso di offsetWidth: - developer.mozilla.org/en-US/docs/Web/API/Element/… - stackoverflow.com/questions/43537559/…
— The Fool

assoluto salvavita!
— Code

8

Prova questo per disabilitare lo scorrimento della larghezza solo per body, tutto il documento è body body{overflow-x: hidden;}


5

koala_dev ha risposto che funzionerà:

html, body {
   max-width: 100%;
   overflow-x: hidden;
}

E MarkWPiper commenta che ": - / Causato tocco / momentum scrolling per smettere di funzionare su iPhone"

La soluzione per mantenere il tocco / slancio su iPhone è aggiungere questa linea all'interno del blocco css per html, body:

    height:auto!important;

dove metterlo? sotto il tag body o una query multimediale per schermi di piccole dimensioni?
— Umair,

1
@Umair ringraziamenti - commento modificato per chiarire che l'altezza: linea automatica va in html, blocco css del corpo.
— ffffff,

Grazie mille per l'altezza: soluzione automatica!
— Torben,

2

La risposta di Koala_dev funzionerà, ma nel caso ti stia chiedendo questo è il motivo per cui funziona:

.
q.html, body {              <--applying this css block to everything in the
                             html code.

q.max-width: 100%;          <--all items created must not exceed 100% of the 
                             users screen size. (no items can be off the page 
                             requiring scroll)

q.overflow-x: hidden;       <--anything that occurs off the X axis of the 
                             page is hidden, so that you wont see it going 
                             off the page.     

.


Grazie, ho adorato l'educazione.
— Pimp Trizkit,

2

Se si desidera disabilitare lo scorrimento orizzontale su tutta la larghezza dello schermo, utilizzare questo codice.

element {
  max-width: 100vw;
  overflow-x: hidden;
}

Funziona meglio del "100%" perché ignora la larghezza principale e utilizza invece la finestra.


2

Puoi provare tutto questo metodo nella nostra pagina html.

1a via

body { overflow-x:hidden; }

Secondo modo È possibile utilizzare quanto segue nel tag body CSS:

overflow-y: scroll; overflow-x: hidden;

Ciò rimuoverà la barra di scorrimento.

3a via

body { min-width: 1167px; }

5a via

html, body { max-width: 100%; overflow-x: hidden; }

6 ° modo

element { max-width: 100vw; overflow-x: hidden; }

4 ° modo ..

var docWidth = document.documentElement.offsetWidth; [].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );

Ora sto cercando di più .. !!!!


1

Ho dovuto occuparmene da solo. Dopo tutto ho trovato questo metodo molto semplice e utile. Basta aggiungere

overflow-x: hidden;

Al tuo genitore esterno. Nel mio caso si presenta così:

<body style="overflow-x: hidden;">

Devi usare overflow-xperché se usi semplicemente usi overflowdisabiliti anche lo scorrimento verticale, vale a direoverflow-y

Se lo scorrimento verticale è ancora disabilitato è possibile abilitarlo esplicitamente con:

overflow-y: scroll;

So che in qualche modo non è un modo corretto perché se tutto fosse impostato bene non si dovrebbe usare questo metodo rapido e sporco.


1
.name 
  { 
      max-width: 100%; 
       overflow-x: hidden; 
   }

Si applica lo stile sopra o è possibile creare una funzione in javaScript per risolvere quel problema


0

È possibile ignorare l'evento di scorrimento del corpo con JavaScript e reimpostare lo scorrimento orizzontale su 0.

function bindEvent(e, eventName, callback) {
    if(e.addEventListener) // new browsers
        e.addEventListener(eventName, callback, false);
    else if(e.attachEvent) // IE
        e.attachEvent('on'+ eventName, callback);
};

bindEvent(document.body, 'scroll', function(e) {
    document.body.scrollLeft = 0;
});

Non consiglio di farlo perché limita la funzionalità per gli utenti con schermi di piccole dimensioni.


2
Ho intenzione di provarlo, la correzione CSS non funziona sul mio progetto, anche se non funziona :(
— Leon Gaban,

questo non funziona per me
— Souhail Ben Slimene,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.