Inhaltsverzeichnis
Beginnen Sie mit einer einfachen Lösung
Was tun auf dem Handy?
Wir müssen also JavaScript verwenden
Verbesserte feste Körpermethode
Heim Web-Frontend CSS-Tutorial Verhindern Sie das Scrollen von Seiten, wenn ein Modal geöffnet ist

Verhindern Sie das Scrollen von Seiten, wenn ein Modal geöffnet ist

Apr 20, 2025 am 10:38 AM

Verhindern

Sind Sie jemals auf diese Situation gestoßen: Öffnen Sie eine Modalbox, scrollen Sie darin, schließen Sie sie und die Seite springt zu einem anderen Ort?

Dies liegt daran, dass das Modal -Feld nur ein Element auf der Seite ist, es kann an Ort und Stelle bleiben, aber der Rest der Seite funktioniert immer noch ordnungsgemäß.

Manchmal spielt dies keine Rolle, z. B. wenn die Bildschirmhöhe genau der Ansichtsfensterhöhe entspricht. In anderen Fällen tritt jedoch ein Bildlaufproblem auf. Die gute Nachricht ist, dass wir dies mit einigen CSS- (und JavaScript) -Tricks verhindern können.

Beginnen Sie mit einer einfachen Lösung

Wir können das Problem des Seitenscrollens erheblich reduzieren, wenn das Modalbox geöffnet wird, indem die Höhe des gesamten Körpers auf die vollständige Ansichtsfensterhöhe und den vertikalen Überlauf eingestellt wird, wenn das Modalbox geöffnet wird:

 <code>body.modal-open { height: 100vh; overflow-y: hidden; }</code>

Dies ist gut, aber wenn wir vor dem Öffnen der Modalbox durch die Seitenelemente gescrollt haben, wird es eine leichte horizontale Umlagerung geben. Die Ansichtsfensterbreite nimmt um etwa 15 Pixel zu, was genau die Breite der Scrollbar ist. Passen wir die rechte Körpersfüllung ein wenig an, um dies zu vermeiden.

 <code>body { height: 100vh; overflow-y: hidden; padding-right: 15px; /* 避免宽度重排*/ }</code>

Beachten Sie, dass die Höhe des Modalbox weniger als die Ansichtsfensterhöhe für diese Methode sein muss. Andernfalls ist die Bildlaufleiste am Körper erforderlich.

Was tun auf dem Handy?

Diese Lösung funktioniert sowohl auf Desktop als auch auf Android Mobile gut. IOS Safari benötigt jedoch mehr Verarbeitung, da der Körper beim Klicken und Bewegen auf dem Touchscreen immer noch scrollt, wenn sich das Modalfeld öffnet.

Wir können den Körper als Lösung auf die feste Positionierung einstellen:

 <code>body { position: fixed; }</code>

Es ist jetzt in Ordnung! Bei der Berührung des Bildschirms reagiert der Körper nicht. Hier gibt es jedoch immer noch ein "kleines" Problem. Unter der Annahme, dass der Auslöser des Modal -Box am Ende der Seite steht, klicken wir, um ihn zu öffnen. sehr gut! Aber jetzt scrollen wir automatisch nach oben auf dem Bildschirm, was genauso verwirrend ist wie das Scrolling -Verhalten, das wir lösen wollen.

Hoppla!

Wir müssen also JavaScript verwenden

Wir können JavaScript verwenden, um die Blase von Touch -Ereignissen zu vermeiden. Wir alle wissen, dass es eine Hintergrundschicht geben sollte, wenn die Modalbox geöffnet wird. Leider ist StopPropagation in iOS etwas umständlich, um mit Touch -Events zu arbeiten. Aber PreventDefault funktioniert sehr gut. Dies bedeutet, dass wir Ereignishörern zu jedem im Modal -Box enthaltenen DOM -Knoten hinzufügen müssen - nicht nur auf der Hintergrund- oder Modal -Box -Ebene. Die gute Nachricht ist, dass viele JavaScript -Bibliotheken dies tun können, einschließlich der bewährten JQuery.

Noch etwas: Was ist, wenn wir in die Modalbox scrollen müssen? Wir müssen immer noch die Reaktion auf das Touch -Ereignis auslösen, aber wir müssen das Blasen immer noch stoppen, wenn es die obere oder untere Unterseite der Modalbox erreicht. Dies scheint sehr kompliziert zu sein, deshalb haben wir das Problem nicht vollständig gelöst.

Verbesserte feste Körpermethode

Was wir verwenden, ist:

 <code>body { position: fixed; }</code>

Wenn wir die oberste Scrollenposition kennen und zu unserem CSS hinzufügen, scrollt der Körper nicht zurück zum Oberteil des Bildschirms, sodass das Problem gelöst wird. Wir können JavaScript verwenden, um das Scroll -Top zu berechnen und diesen Wert zum Körperstil hinzuzufügen:

 // Wenn das Modalbox angezeigt wird, benötigen wir einen festen Körper
document.body.style.position = 'behoben';
document.body.style.top = `-$ {window.scrolly} px`;

// Wenn die Modalbox versteckt ist, müssen wir sie oben im Scroll -Positionsdokument.
document.body.style.top = '';

Dies funktioniert, aber es gibt immer noch ein wenig Leck, nachdem die Modalbox geschlossen wurde. Insbesondere wenn das Modalbox geöffnet ist und der Körper auf fest gesetzt ist, scheint die Seite seine Bildlaufposition verloren zu haben. Also müssen wir den Ort abrufen. Ändern wir unser JavaScript, um dieses Problem zu lösen.

 // Wenn die Modalbox versteckt ist ...
const Scrolly = document.body.style.top;
document.body.style.position = '';
document.body.style.top = '';
window.scrollto (0, parseInt (scrolly || '0') * -1);

geschafft! Der Körper scrollt nicht mehr, wenn die Modalbox geöffnet ist und bleibt in der Bildlaufposition, wenn die Modalbox geöffnet und geschlossen ist. Es lebe!

Verhindern Sie das Scrollen von Seiten, wenn ein Modal geöffnet ist

Das obige ist der detaillierte Inhalt vonVerhindern Sie das Scrollen von Seiten, wenn ein Modal geöffnet ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie eine gepunktete Grenze in CSS So erstellen Sie eine gepunktete Grenze in CSS Aug 15, 2025 am 04:56 AM

Verwenden Sie CSS, um gepunktete Grenzen zu erstellen, und stellen Sie einfach das Grenzattribut auf gepunktete fest. Zum Beispiel kann "Border: 3PXDotted#000" dem Element einen 3-Pixel-schwarzen Punktrand hinzufügen. Durch die Einstellung der Randbreite kann die Größe des Punktes geändert werden. Die breiteren Grenzen erzeugen größere Punkte. Sie können gepunktete Grenzen für eine bestimmte Seite festlegen, z. B. "Border-Top: 2PXDottedRed". Gepunktete Grenzen eignen sich für Elemente auf Blockebene wie Div und Eingabe. Sie werden häufig in Fokuszuständen oder bearbeitbaren Bereichen verwendet, um die Zugänglichkeit zu verbessern. Achten Sie auf Farbkontrast. Gleichzeitig präsentiert Dotted eine kreisförmige Punktform. Diese Funktion wird in allen Mainstream -Browsern häufig verwendet.

So ändern Sie den Listenstil in CSS So ändern Sie den Listenstil in CSS Aug 17, 2025 am 10:04 AM

Um den CSS-Listenstil zu ändern, verwenden Sie zunächst den Typ Listenstil, um die Kugel- oder Nummerierungsstil zu ändern. 1. Verwenden Sie den Typ Listenstil, um die Kugel von UL auf Scheibe, Kreis oder Quadrat einzustellen, und die Anzahl der OL ist dezimal, unter-alpha, obere Alpha, untere Röme oder Oberroman. 2. Entfernen Sie das Tag vollständig mit Listenstil: Keine. 3. Verwenden Sie das Listen-Stil: URL ('bullet.png'), um es durch ein benutzerdefiniertes Bild zu ersetzen. 4. Verwenden Sie Listen-Stil-Positionen: in

Wie man einen GlaSmorphismus -Effekt mit CSS erzeugt Wie man einen GlaSmorphismus -Effekt mit CSS erzeugt Aug 22, 2025 am 07:54 AM

Um einen Gla-Mimikry-Effekt von CSS zu erzeugen, müssen Sie Backdrop-Filter verwenden, um Hintergrundunschärfe zu erzielen, einen durchscheinenden Hintergrund wie RGBA (255,255,255,0.1) festzulegen, subtile Grenzen und Schatten hinzuzufügen, um das Gefühl der Hierarchie zu verbessern, und sicherzustellen, dass der visuelle Inhalt hinter den Elementen genügend visuelle Inhalt gibt. 1. Verwenden Sie Backdrop-Filter: Blur (10px), um den Hintergrundinhalt zu verwischen; 2. Verwenden Sie RGBA oder HSLA, um den transparenten Hintergrund zu definieren, um den Grad der Transparenz zu steuern. 3. Fügen Sie 1pxsolidrgba (255.255.255,0,3) Grenzen und Box-Shadow hinzu, um die dreidimensionale zu verbessern. V. 5. Es ist mit alten Browsern kompatibel

So erstellen Sie eine vertikale Linie mit CSS So erstellen Sie eine vertikale Linie mit CSS Aug 11, 2025 pm 12:49 PM

Verwenden Sie einen DIV mit Rand, um schnell vertikale Linien zu erstellen und Stile und Höhen zu definieren, indem Sie randlinks und Höhe einstellen. 2. Verwendung :: vor oder :: Nach Pseudoelementen, um vertikale Linien ohne zusätzliche HTML-Tags hinzuzufügen, die für die dekorative Trennung geeignet sind; 3. In Flexbox -Layout können adaptive vertikale Trennwände zwischen elastischen Behältern erreicht werden, indem die Breite und die Hintergrundfarbe der Trennklasse festgelegt werden. 4. Fügen Sie in CSSGrid vertikale Linien als unabhängige Spalten (z. B. Autowidth -Spalten) in das Gitterlayout ein, das für reaktionsschnelles Design geeignet ist. Die am besten geeignete Methode sollte gemäß dem spezifischen Layout ausgewählt werden, um sicherzustellen, dass die Struktur einfach und leicht zu warten ist.

So implementieren Sie ein Dark -Modus -Thema mit CSS So implementieren Sie ein Dark -Modus -Thema mit CSS Aug 22, 2025 am 09:55 AM

Es gibt zwei Hauptmöglichkeiten, um den Dunklen Modus zu implementieren: Eine besteht darin, die Medien für die Farbschnee zu verwenden, um die Systemeinstellungen automatisch anzupassen, und das andere besteht darin, eine manuelle Schaltfunktion über JavaScript hinzuzufügen. 1. Verwenden Sie Vorläufe, um dunkle Themen nach dem Benutzersystem automatisch anzuwenden. Es besteht keine Notwendigkeit von JavaScript. Definieren Sie einfach die Stile in der Medienabfrage. 2. Um manuelles Schalten zu erzielen, müssen Sie Leuchtthemen- und Dark-Themecss-Klassen definieren, Schaltflächen hinzufügen und JavaScript verwenden, um den Themenstatus und die Lokalstorage zu verwalten, um Benutzerpräferenzen zu speichern. 3.. Sie können beide kombinieren, um zuerst lokalst zu lesen, wenn die Seite geladen wird.

So verwenden Sie die Filtereigenschaft in CSS So verwenden Sie die Filtereigenschaft in CSS Aug 11, 2025 pm 05:29 PM

ThecssFilterPropertyAllowsvisualeffects-ähnlich, Helligkeit und GryscaletobeAppliedDirecttoHtmlelements.1) Usethesyntaxfilter: Filterfunktion (Wert) toappyeffects.2) Kombination

So verwenden Sie Grid-Template-Areas in CSS So verwenden Sie Grid-Template-Areas in CSS Aug 22, 2025 am 07:56 AM

Thegrid-template-areasPropertyAllowsDevelopStoCreatINTItIPISIVE, readableLayoutsByDefiningNamedGridareas; EverStringRepesentsArowandachwordacolumnCell, mit ggrid-areaMameSonchildelementsMatchingThoseInthetemplate, solches "Headerheaderheaderheaderader"

Wie man den Cursor in CSS ändert Wie man den Cursor in CSS ändert Aug 16, 2025 am 05:00 AM

UseBuilt-Incursortypes LikePointer, Hilfe, Ornot-allowedtoprovideimmediatevisualFeedbackfordFerentIntiveRections.2.ApplyCustomCursorimagesWithTheCursorPropertyuSeusions, optionalSpecifingAtaTandalwayssincludingafallbacklikeAumAntoorPointer.fol

See all articles