Schauen wir uns die Fullscreen-API in JavaScript an. Sie ermöglicht eine ziemlich mächtige Funktion: die Vollbildanzeige genau eines bestimmten Elements, das Sie wünschen. Nicht nur das, sondern auch CSS kann mit einem speziellen Selektor helfen.
Jeder wichtige Browser verfügt über eine integrierte Vollbildfunktionalität in Form der Maximierung des Browserfensters selbst. Sie drücken F11 oder ⌃⌘F (WinKey ⬆ unter PC) und der Browser füllt Ihren Monitor, bis hin zur Entfernung von UI-Komponenten (wie den Fenstermanagement-Schaltflächen).
Wenn Sie in den Vollbildmodus wechseln, wird der Platz für die Anzeige einer Webseite maximiert, aber das ist nicht immer genau das, was Sie wollen. Häufiger möchten Sie ein bestimmtes Element der Seite im Vollbildmodus anzeigen, z. B. ein Video oder ein Spiel. Hier ist die Fullscreen-API nützlich.

Die Fullscreen-API hilft bei etwas, das die Vollbildmodi des Browsers nicht können, wie zum Beispiel
- Vollbildanzeige eines bestimmten Elements der Seite und nicht der gesamten Seite.
- Abgleich von Elementen in CSS mit der Pseudoklasse
:fullscreen, die prüft, ob das Vollbildflag eines bestimmten Elements gesetzt ist. - Vollständige Kontrolle darüber, *wann* in den Vollbildmodus gewechselt werden soll.

Legen wir los
Entscheiden Sie zuerst, welches Element im Vollbildmodus angezeigt werden soll. Danach müssen Sie nur noch prüfen, ob dieses Element die Methode requestFullscreen() hat, und diese dann auf dem Element aufrufen.
Beginnen wir mit einem einfachen <div>-Element für die Vollbildanzeige
<div id="fullscreen"></div>
Zuerst wählen wir es aus und prüfen, ob es die Methode hat. Wenn ja, rufen wir die Methode requestFullscreen darauf auf. So einfach ist das.
let fullscreen = document.querySelector("#fullscreen");
if (fullscreen.requestFullscreen) {
fullscreen.requestFullscreen();
}
Wir möchten diesen Code jedoch bedingt ausführen und nicht, sobald jemand auf der Seite landet. Wir erstellen eine Schaltfläche, die den Vollbildmodus umschaltet.
<div id="fullscreen">
<button id="button">Toggle Fullscreen</button>
</div>
let fullscreen = document.querySelector("#fullscreen");
let button = document.querySelector("#button");
button.addEventListener("click", () => {
if (!document.fullscreenElement) {
fullscreen?.requestFullscreen();
} else {
document.exitFullscreen();
}
});
Beachten Sie, wie wir document.fullscreenElement verwenden. Wenn ein Element bereits im Vollbildmodus war, wird es zurückgegeben; wenn nicht, wird null zurückgegeben.
Es ist auch ratsam zu prüfen, ob der Vollbildmodus im Browser des Benutzers überhaupt aktiviert wurde. Dafür können wir document.fullscreenEnabled verwenden. Es gibt einen booleschen Wert zurück, der besagt, ob wir die Fullscreen-API in diesem speziellen Browser verwenden können oder nicht. Der Vollbildmodus könnte vom Benutzer deaktiviert worden sein oder der Browser unterstützt ihn möglicherweise nicht.
Die letzte Methode, die wir behandeln werden, ist document.exitFullscreen(). Ein Benutzer sollte immer die Möglichkeit haben, den Vollbildmodus durch Drücken von ESC auf der Tastatur zu verlassen. Wir könnten eine benutzerdefinierte Methode zum Beenden des Vollbildmodus mit exitFullscreen implementieren. Es spielt keine Rolle, welches Element im Vollbildmodus war; nach dem Aufruf dieser Methode wird zum Fenstermodus zurückgekehrt.
Wie Sie im Code für unser Schaltflächenelement sehen können, prüfen wir zuerst, ob der Vollbildmodus bereits aktiviert wurde. Dann wechseln wir basierend auf dieser Information entweder in den Vollbildmodus oder zurück zum Fenstermodus.
Vollbildgestaltung
Das Coole an der Fullscreen-API ist, dass wir ein Vollbildelement in CSS abgleichen können. Genau dafür ist der Pseudoselektor :fullscreen gedacht!
#fullscreen:fullscreen {
background-color: yellow;
}

Wie Sie sehen können, erhält das #fullscreen div eine gelbe Hintergrundfarbe, wenn das Element im Vollbildmodus ist, und nur im Vollbildmodus. Der Haken ist, dass wir nicht wirklich jedes Element so auswählen können; wir können nur das Wurzelelement auswählen, das sich im Vollbildmodus befindet. Keines der Kindelemente wird übereinstimmen.
Mit anderen Worten, etwas wie #button:fullscreen wählt keinen Button aus, der innerhalb des Vollbildelements enthalten ist – es sei denn, wir möchten, dass der Button im Vollbildmodus statt des Divs angezeigt wird.
Einige Browser erfordern ein Präfix, damit dies funktioniert. Firefox verwendet -moz-full-screen und WebKit-basierte Browser -webkit-full-screen.
#fullscreen:-webkit-full-screen {
background-color: yellow;
}
#fullscreen:-moz-full-screen {
background-color: yellow;
}
Wussten Sie, dass im Vollbildmodus ein Pseudoelement direkt unter Ihrem Vollbildelement gerendert wird? Standardmäßig ist dieses Pseudoelement schwarz. Wenn Sie die Stile dieses Pseudoelements ändern möchten, können Sie dies so tun:
#fullscreen::backdrop {
background-color: skyblue;
}
Hier ist das endgültige Beispiel. Beachten Sie, dass der Vollbildmodus möglicherweise nicht mit eingebetteten Pens funktioniert. Sie müssen ihn daher außerhalb dieses Artikels anzeigen.
gute Arbeit, danke :)
Ich habe mich gefragt: #fullscreen hat Dimensionen, die in CSS angegeben sind (width: 600px; height: 200px;) – machen Sie es 'fullscreen' und zack – nicht mehr 600px Breite – füllt jetzt den Bildschirm komplett – wie kommt das? Was bewirkt, dass es die Dimensionen nach dem 'Fullscreen' ändert (und kann verhindert werden, dass es das tut)?
Hallo Stef, die Spezifikation der Fullscreen-API erzwingt, dass sie gestreckt wird.
|:not(:root):fullscreen {
width:100% !important;
height:100% !important;
}
Dies ist also der Grund, warum es im Vollbildmodus allen Platz einnimmt. Sie können es transparent machen und ein kleineres Element darin platzieren, und ich denke, das wird Ihre Frage beantworten.
ja – danke :)
Warum nutzen Sie nicht die volle Kraft von JavaScript?
Die Beachtung der Operator-Präzedenz ist ein obligatorisches Wissen und wir wissen, dass sowohl die #button- als auch die #fullscreen-Knoten vorhanden sind (keine Notwendigkeit für optionale Prüfungen).
Hallo Octoxalis, da Ihre Version für neue Entwickler etwas verwirrend sein könnte und ich die Idee hatte, dass dieser Artikel für alle Niveaus gleichermaßen geeignet ist. Was die optionale Verkettung angeht, ist es nur eine Gewohnheit der defensiven Programmierung.
Soweit ich mich erinnere, unterstützt iOS die Fullscreen-API nicht vollständig. Ist das immer noch der Fall?
Es wird teilweise unterstützt https://caniuse.com/?search=fullscreen
Die Fullscreen-API funktioniert auf iPadOS gut (allerdings sind WebKit-Präfixe erforderlich) – ich habe sie heute auf einem iPad der 5. Generation getestet. Das größte Problem ist, dass beim Fokussieren eines Eingabefelds der Vollbildmodus verlassen wird. Dies muss erkannt werden, und der Benutzer muss interagieren, um ihn bei Bedarf wieder in den Vollbildmodus zu versetzen.
Auf iPhones immer noch kein Glück – scheint nicht unterstützt zu werden. Eine installierbare Web-App (PWA) funktioniert wahrscheinlich besser, aber das ist nicht dasselbe wie die Fullscreen-API (z. B. kann man nicht einzelne Elemente im Vollbildmodus anzeigen).
Sehr nützlich, eine begrenzte und programmatische Version von F11 zu haben.
Gibt es eine Möglichkeit zu verhindern, dass Chrome unter Windows beim Überfahren des oberen Bildschirmrands die „X“-Schaltfläche einblendet? Das ist störend, wenn die Benutzeroberfläche interaktive Elemente im selben Bereich hat. Firefox macht das nicht. Ich habe andere Browser/Plattformen noch nicht getestet.
Mir gefiel, wie Sie alle Schritte erklärt haben. Ich habe endlich verstanden, wie die Fullscreen-API in JavaScript funktioniert. Danke fürs Teilen.