CSS3實現(xiàn)整屏切換效果_html/css_WEB-ITnose
Jun 24, 2016 am 11:42 AM
總是能看見很多廣告或者網(wǎng)站都是使用整屏滾動的效果,一直看著都心癢癢,想自己也實現(xiàn)一個。最近剛學(xué)習(xí)到css3的動畫效果,所以嘗試使用css3做了一個整屏切換。
頁面結(jié)構(gòu)
實現(xiàn)思路與大眾方法類似,如圖
每個section就是一頁內(nèi)容,它的大小充滿了屏幕(紅色區(qū)域),一個container由多個section構(gòu)成,我們通過改變container的位置,來達(dá)到頁面切換的效果。container向下走,頁面好像上移了,container向上走,頁面就下移了。
html結(jié)構(gòu)如下:
<!DOCTYPE html><html><head lang="ch"> <meta charset="UTF-8"> <!--適配移動端--> <meta name=”viewport” content="width=device-width, user-scalable=no, initial-scale=1.0"> <title></title> <style> body, html{ padding: 0; margin: 0; } body, html { height: 100%; /**隱藏滾動條**/ overflow: hidden; } #container, .section { height: 100%; } #section0 { background-color: #83af9b; } #section1 { background-color: #764d39; } #section2 { background-color: #ff9000; } #section3 { background-color: #380d31; } </style></head><body><div id="container"> <div class="section" id="section0"></div> <div class="section" id="section1"></div> <div class="section" id="section2"></div> <div class="section" id="section3"></div></div></body></html>
事件監(jiān)聽
此時窗口里只顯示一個頁面,我們給其加上滾動監(jiān)聽,因為firefox和非firefox瀏覽器對滾動監(jiān)聽支持不同,firefox瀏覽器向上滾動是-120,向下滾動是120,而其他瀏覽器向上是5,向下是-5,所以需要作判斷:
<script src="http://code.jquery.com/jquery-latest.js"></script><script> //當(dāng)前頁面索引 var curIndex = 0; var scrollFunc = function (e) { e = e || window.event; var t = 0; if (e.wheelDelta) {//IE/Opera/Chrome t = e.wheelDelta; if (t > 0 && curIndex > 0) { //上滾動 movePrev(); } else if (t < 0 && curIndex < sumCount - 1) { //下滾動 moveNext(); } } else if (e.detail) {//Firefox t = e.detail; if (t < 0 && curIndex > 0) { //上滾動 movePrev(); } else if (t > 0 && curIndex < sumCount - 1) { //下滾動 moveNext(); } } }; function moveNext(){ } function movePrev(){ } function init(){ /*注冊事件*/ if (document.addEventListener) { document.addEventListener('DOMMouseScroll', scrollFunc, false); }//W3C window.onmousewheel = document.onmousewheel = scrollFunc;//IE/Opera/Chrome } init(); </script>
為了防止在第一個頁面用戶上滾,最后一個頁面用戶下滾,所以用curIndex代表當(dāng)前頁面索引在滾動時作了監(jiān)聽,當(dāng)然如果要使頁面循環(huán)滾動,只需修改條件限制即可。
加入動畫
動畫使用到了css3里的transform屬性的translate3D,我們首先需要獲取到屏幕的高度,然后當(dāng)頁面切換的時候?qū)ontainer上移一個屏幕高度或下移一個屏幕高度。
使用translate3D的原因是在手機端會開啟硬件加速,使動畫更流暢,它接收三個參數(shù),分別是x軸、y軸和z軸的位移。如
transform: tanslate3D(10px, 30px, 0);
修改后的js代碼如下:
<script> //當(dāng)前頁面索引 var curIndex = 0; //container元素 var container = $("#container"); //頁面總數(shù) var sumCount = $(".section").length; //窗體元素 var $window = $(window); //動畫時間 var duration = 500; var scrollFunc = function (e) { e = e || window.event; var t = 0; if (e.wheelDelta) {//IE/Opera/Chrome t = e.wheelDelta; if (t > 0 && curIndex > 0) { //上滾動 movePrev(); } else if (t < 0 && curIndex < sumCount - 1) { //下滾動 moveNext(); } } else if (e.detail) {//Firefox t = e.detail; if (t < 0 && curIndex > 0) { //上滾動 movePrev(); } else if (t > 0 && curIndex < sumCount - 1) { //下滾動 moveNext(); } } }; function moveNext(){ container.css("transform", "translate3D(0, -" + (++curIndex) * $window.height() + "px, 0)"); } function movePrev(){ container.css("transform", "translate3D(0, -" + (--curIndex) * $window.height() + "px, 0)"); } function init(){ /*注冊事件*/ if (document.addEventListener) { document.addEventListener('DOMMouseScroll', scrollFunc, false); }//W3C window.onmousewheel = document.onmousewheel = scrollFunc;//IE/Opera/Chrome //設(shè)置動畫 container.css({ "transition": "all 0.5s", "-moz-transition": "all 0.5s", "-webkit-transition": "all 0.5s" }); } </script>
為了防止頁面在滾動的時候用戶繼續(xù)滾動打亂節(jié)奏,可以用時間來強制控制,即在滾動期間不允許調(diào)用moveNext和movePrev函數(shù),最終代碼如下:
<!DOCTYPE html><html><head lang="ch"> <meta charset="UTF-8"> <meta name=”viewport” content="width=device-width, user-scalable=no, initial-scale=1.0"> <title></title> <style> body, html{ padding: 0; margin: 0; } body, html { height: 100%; overflow: hidden; } #container, .section { height: 100%; } .section { background-color: #000; background-size: cover; background-position: 50% 50%; } #section0 { background-color: #83af9b; } #section1 { background-color: #764d39; } #section2 { background-color: #ff9000; } #section3 { background-color: #380d31; } </style></head><body><div id="container"> <div class="section" id="section0"></div> <div class="section" id="section1"></div> <div class="section" id="section2"></div> <div class="section" id="section3"></div></div><script src="http://code.jquery.com/jquery-latest.js"></script><script> var curIndex = 0; var container = $("#container"); var sumCount = $(".section").length; var $window = $(window); var duration = 500; //時間控制 var aniTime = 0; var scrollFunc = function (e) { //如果動畫還沒執(zhí)行完,則return if(new Date().getTime() < aniTime + duration){ return; } e = e || window.event; var t = 0; if (e.wheelDelta) {//IE/Opera/Chrome t = e.wheelDelta; if (t > 0 && curIndex > 0) { //上滾動 movePrev(); } else if (t < 0 && curIndex < sumCount - 1) { //下滾動 moveNext(); } } else if (e.detail) {//Firefox t = e.detail; if (t < 0 && curIndex > 0) { //上滾動 movePrev(); } else if (t > 0 && curIndex < sumCount - 1) { //下滾動 moveNext(); } } }; function moveNext(){ //獲取動畫開始時的時間 aniTime = new Date().getTime(); container.css("transform", "translate3D(0, -" + (++curIndex) * $window.height() + "px, 0)"); } function movePrev(){ //獲取動畫開始時的時間 aniTime = new Date().getTime(); container.css("transform", "translate3D(0, -" + (--curIndex) * $window.height() + "px, 0)"); } function init(){ /*注冊事件*/ if (document.addEventListener) { document.addEventListener('DOMMouseScroll', scrollFunc, false); }//W3C window.onmousewheel = document.onmousewheel = scrollFunc;//IE/Opera/Chrome container.css({ "transition": "all 0.5s", "-moz-transition": "all 0.5s", "-webkit-transition": "all 0.5s" }); } init(); </script></body></html>
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Metadaten in HTMLhead sind entscheidend für das Verhalten von SEO-, Social Sharing und Browser. 1. Setzen Sie den Seitentitel und die Beschreibung, verwenden Sie es und halten Sie es pr?zise und einzigartig. 2. Fügen Sie OpenGraph- und Twitter -Karteninformationen hinzu, um die Auswirkungen auf die soziale Freigabe zu optimieren, auf die Bildgr??e zu achten und Debugging -Tools zum Testen zu verwenden. 3. Definieren Sie die Einstellungen für den Zeichensatz und die Ansichtsfenster, um sicherzustellen, dass die Unterstützung mehrsprachiger Unterstützung an das mobile Terminal angepasst wird. 4. Optionale Tags wie das Urheberrecht des Autors, die Kontrolle der Roboter und die kanonische Verhindern doppelter Inhalte sollten auch vernünftig konfiguriert werden.

Tolearnhtmlin2025, ChooseatutororyThatbalancesHands-On-Practionwithmoderit und IntegrateCsSandjavaScriptbasics.1.PrioritizeHands-OnLearningWithStep-by-Stepprojects-?hnlich

Wie mache ich HTML -Mail -Vorlagen mit guter Kompatibilit?t? Zun?chst müssen Sie eine Struktur mit Tabellen erstellen, um die Verwendung von Div -Flex- oder Netzlayout zu vermeiden. Zweitens müssen alle Stile eingefügt werden und k?nnen sich nicht auf externe CSS verlassen. Dann sollte das Bild mit ALT -Beschreibung hinzugefügt werden und eine ?ffentliche URL verwenden, und die Schaltfl?chen sollten mit einer Tabelle oder TD mit Hintergrundfarbe simuliert werden. Schlie?lich müssen Sie die Details zu mehreren Clients testen und anpassen.

Klasse, ID, Stil, Daten und Titel sind die am h?ufigsten verwendeten globalen Attribute in HTML. Die Klasse wird verwendet, um einen oder mehrere Klassennamen anzugeben, um die Stileinstellung und JavaScript -Vorg?nge zu erleichtern. ID bietet eindeutige Kennungen für Elemente, die für Anker -Sprünge und JavaScript -Kontrolle geeignet sind. Durch den Stil k?nnen Inline-Stile hinzugefügt werden, geeignet für ein vorübergehendes Debuggen, aber nicht für die Verwendung von gro?em Ma?stab empfohlen. Data-Properties werden verwendet, um benutzerdefinierte Daten zu speichern, was für die Interaktion mit Front-End- und Back-End-Interaktion geeignet ist. Der Titel wird verwendet, um Mausover -Eingaben hinzuzufügen, aber sein Stil und sein Verhalten werden durch den Browser begrenzt. Eine angemessene Auswahl dieser Attribute kann die Entwicklungseffizienz und die Benutzererfahrung verbessern.

Wenn es keinen Backend-Server gibt, kann die Einreichung von HTML-Formular weiterhin über Front-End-Technologie oder Drittanbieterdienste verarbeitet werden. Zu den spezifischen Methoden geh?ren: 1. JavaScript verwenden, um die Einreichungen von Formulareingaben abzufangen, um die Eingabeüberprüfung und das Benutzerfeedback zu erhalten. Die Daten werden jedoch nicht bestehen. 2. Verwenden Sie serverlose Formulardienste von Drittanbietern wie F?rse, um Daten zu sammeln und E-Mail-Benachrichtigungs- und Umleitungsfunktionen bereitzustellen. 3.. Verwenden Sie LocalStorage, um tempor?re Clientdaten zu speichern, die zum Speichern von Benutzerpr?ferenzen oder zum Verwalten von Anwendungsstatus einseitig geeignet sind, jedoch nicht für die langfristige Speicherung vertraulicher Informationen geeignet sind.

Native Lazy Loading ist eine integrierte Browserfunktion, die das faule Laden von Bildern durch Hinzufügen von Loading = "Lazy" zum Tag hinzufügen kann. 1. Es erfordert keine Bibliotheken von JavaScript oder Drittanbietern und wird direkt in HTML verwendet. 2. Es ist für Bilder geeignet, die nicht auf dem ersten Bildschirm unterhalb der Seite, die Scrolling-Add-Ons und gro?e Bildressourcen angezeigt werden. 3. Es ist nicht für Bilder mit dem ersten Bildschirm oder Display geeignet: keine; 4. Bei der Verwendung sollte ein geeigneter Platzhalter festgelegt werden, um Layout -Jitter zu vermeiden. 5. Es sollte das Laden von Responsive Bild in Kombination mit SRCSet- und Gr??enattributen optimieren. 6. Kompatibilit?tsprobleme müssen berücksichtigt werden. Einige alte Browser unterstützen es nicht. Sie k?nnen durch Merkmalserkennung verwendet und mit JavaScript -L?sungen kombiniert werden.

Um einer Webseite einen Videohintergrund hinzuzufügen, besteht der Schlüssel darin, HTML -Tags korrekt zu verwenden und relevante Attribute zu optimieren. 1. Verwenden Sie Tags als Hintergrund und verwenden Sie die CSS -Positionierung, um die Seite oder den lokalen Bereich zu füllen. 2. Das Videoformat wird bevorzugt. 3. Fügen Sie ged?mpfte und PlaySInline -Attribute hinzu, um eine automatische Wiedergabe auf der mobilen Seite zu gew?hrleisten. 4. Steuern Sie die Videogr??e, um die Ladegeschwindigkeit zu optimieren, und es wird empfohlen, sie bei zehn MB zu halten. 5. Schleifen hinzufügen, um eine nahtlose Schleifenwiedergabe zu erreichen. 6. Es kann flexibel auf Vollbild- oder Lokalbl?cke angewendet werden, und unterschiedliche Effekte werden durch Anpassen der Beh?ltergr??e und Positionierungsmethode erzielt. Die obigen Schritte k?nnen einen stabilen und sch?nen Videohintergrund erreichen.

Um Iframes reagieren zu lassen, besteht der Kern darin, CSS zu verwenden, um das Seitenverh?ltnis zu steuern und ihn mit dem Verpackungsbeh?lter zu kombinieren, um eine Anpassung zu erreichen. 1. Verwenden Sie Polstertechniken, um Containerboxen mit festen Proportionen zu erstellen. H?ufige Verh?ltnisse wie 16: 9 entsprechen Padding-Top56,25%, 4: 3 entsprechen 75%und 1: 1 entsprechen 100%; 2. Stellen Sie die Iframe-Breite auf 100% ein und verwenden Sie die absolute Positionierung, um den Container zu füllen, oder verwenden Sie das Aspektverh?ltnisattribut, um den Anteil beizubehalten. 3. Steuern Sie bei der Verarbeitung von Drittanbietern eingebetteter Inhalte, steuern Sie das Verh?ltnis über Containerverpackung und stellen Sie sicher, dass das zul?ssige Attribut für das zul?ssige Bildschirm hinzugefügt wird, um die Vollbildwiedergabe in mobilen Terminals zu unterstützen. Beherrschen Sie die Einstellungen für Container und Verh?ltnisse, um die Reaktionsf?higkeit des Iframe zu erkennen
