滾動視差?CSS 不在話下

何為滾動視差

視差滾動(Parallax Scrolling)是指讓多層背景以不同的速度移動,形成立體的運動效果,帶來非常出色的視覺體驗。 作為網頁設計的熱點趨勢,越來越多的網站應用了這項技術。

parallax

通常而言,滾動視差在前端需要輔助 Javascript 才能實現。當然,其實 CSS 在實現滾動視差效果方面,也有著不俗的能力。下面就讓我們來見識一二:

?

認識?
background-attachment

background-attachment
?算是一個比較生僻的屬性,基本上平時寫業務樣式都用不到這個屬性。但是它本身很有意思。

background-attachment
:如果指定了?
background-image
?,那么?
background-attachment
?決定背景是在視口中固定的還是隨著包含它的區塊滾動的。

單單從定義上有點難以理解,隨下面幾個 Demo 了解下?

background-attachment
?到底是什么意思:

background-attachment: scroll

scroll?此關鍵字表示背景相對于元素本身固定, 而不是隨著它的內容滾動。

background-attachment: local

local?此關鍵字表示背景相對于元素的內容固定。如果一個元素擁有滾動機制,背景將會隨著元素的內容滾動, 并且背景的繪制區域和定位區域是相對于可滾動的區域而不是包含他們的邊框。

background-attachment: fixed

fixed?此關鍵字表示背景相對于視口固定。即使一個元素擁有滾動機制,背景也不會隨著元素的內容滾動。

注意一下 scroll 與 fixed,一個是相對元素本身固定,一個是相對視口固定,有點類似?

position
?定位的?
absolute
?和?
fixed

可以感受下 3 種不同取值的不同效果:

title="bg-attachment Demo" src="https://codepen.io/Chokcoco/embed/xJJorg/?height=265&theme-id=0&default-tab=html,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">

CodePen Demo -- bg-attachment Demo

?

使用?
background-attachment: fixed
?實現滾動視差

首先,我們使用?

background-attachment: fixed
?來實現滾動視差。fixed?此關鍵字表示背景相對于視口固定。即使一個元素擁有滾動機制,背景也不會隨著元素的內容滾動。

這里的關鍵在于,即使一個元素擁有滾動機制,背景也不會隨著元素的內容滾動。也就是說,背景圖從一開始就已經被固定死在初始所在的位置。

我們使用,圖文混合排布的方式,實現滾動視差,HTML 結構如下,

.g-word
?表示內容結構,
.g-img
?表示背景圖片結構:

<section class="g-word">Header</section>
<section class="g-img">IMG1</section>
<section class="g-word">Content1</section>
<section class="g-img">IMG2</section>
<section class="g-word">Content2</section>
<section class="g-img">IMG3</section>
<section class="g-word">Footer</section>

關鍵 CSS:

section {
height: 100vh;
}
.g-img {
background-image: url(...);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}

效果如下:

parallax background-attachment: fixed

title="bg-attachment:fixed parallax" src="https://codepen.io/Chokcoco/embed/JBaQoY/?height=265&theme-id=0&default-tab=css,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">

CodePen Demo -- https://codepen.io/Chokcoco/pen/JBaQoY

嗯?有點神奇,為什么會是這樣呢?可能很多人會和我一樣,第一次接觸這個屬性對這樣的效果感到懵逼。

我們把上面?

background-attachment: fixed
?注釋掉,或者改為?
background-attachment: local
,再看看效果:

parallax background-attachment: fixed 2

title="bg-attachment:local " src="https://codepen.io/Chokcoco/embed/ZjMdJz/?height=265&theme-id=0&default-tab=css,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">

CodePen Demo -- bg-attachment:local

這次,圖片正常跟隨滾動條滾動了,按常理,這種效果才符合我們大腦的思維。

而滾動視差效果,正是不按常理出牌的一個效果,重點來了:

當頁面滾動到圖片應該出現的位置,被設置了?

background-attachment: fixed
?的圖片并不會繼續跟隨頁面的滾動而跟隨上下移動,而是相對于視口固定死了。

好,我們再來試一下,如果把所有?

.g-word
?內容區塊都去掉,只剩下全部設置了?
background-attachment: fixed
?的背景圖區塊,會是怎么樣呢?

HTML 代碼如下:

<section class="g-img">IMG1</section>
<section class="g-img">IMG2</section>
<section class="g-img">IMG3</section>
section {
height: 100vh;
}
.g-img {
background-image: url(...);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}

效果如下:

parallax background-attachment: fixed 3

CodePen Demo

結合這張 GIF,相信能對?

background-attachment: fixed
?有個更深刻的認識,移動的只有視口,而背景圖是一直固定死的。

綜上,就是 CSS 使用?

background-attachment: fixed
?實現滾動視差的一種方式,也是相對而言比較容易的一種。當然,
background-attachment: fixed
?本身的效果并不僅只是能有用來實現滾動視差效果,合理運用,還可以實現其他很多有趣的效果,這里簡單再列一個:

?

background-attachment: fixed
?實現圖片點擊水紋效果

利用圖片相對視口固定,可以有很多有趣的效果,譬如下面這個,來源于這篇文章CSS Water Wave (水波效果):

background-attachment: fixed Wave

title="bg-attachment:fixed Wave" src="https://codepen.io/Chokcoco/embed/wxYZWO/?height=265&theme-id=0&default-tab=css,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">

CodePen Demo -- bg-attachment:fixed Wave

利用圖片相對視口固定的特性實現點擊的水紋效果。

上面這個效果有點瑕疵,圖片在放大容器變大的過程中發生了明顯的抖動。當然,效果還是可以的,

background-attachment
?還有很多有意思的效果可以挖掘。

?

使用?
transform: translate3d
?實現滾動視差

言歸正傳,下面介紹另外一種使用 CSS 實現的滾動視差效果,利用的是 CSS 3D。

原理就是:

  1. 我們給容器設置上?

    transform-style: preserve-3d
    ?和?
    perspective: xpx
    ,那么處于這個容器的子元素就將位于3D空間中,

  2. 再給子元素設置不同的?

    transform: translateZ()
    ,這個時候,不同元素在 3D Z軸方向距離屏幕(我們的眼睛)的距離也就不一樣

  3. 滾動滾動條,由于子元素設置了不同的?

    transform: translateZ()
    ,那么他們滾動的上下距離?
    translateY
    ?相對屏幕(我們的眼睛),也是不一樣的,這就達到了滾動視差的效果。

關于?

transform-style: preserve-3d
?以及?
perspective
?本文不做過多篇幅展開,默認讀者都有所了解,還不是特別清楚的,可以先了解下 CSS 3D。

核心代碼表示就是:

<div class="g-container">
<div class="section-one">translateZ(-1)</div>
<div class="section-two">translateZ(-2)</div>
<div class="section-three">translateZ(-3)</div>
</div>
html {
height: 100%;
overflow: hidden;
}
body {
perspective: 1px;
transform-style: preserve-3d;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
}
.g-container {
height: 150%;
.section-one {
transform: translateZ(-1px);
}
.section-two {
transform: translateZ(-2px);
}
.section-three {
transform: translateZ(-3px);
}
}

總結就是父元素設置?

transform-style: preserve-3d
?和?
perspective: 1px
,子元素設置不同的?
transform: translateZ
,滾動滾動條,效果如下:

css3dparallax

CodePen Demo -- CSS 3D parallax

很明顯,當滾動滾動條時,不同子元素的位移程度從視覺上看是不一樣的,也就達到了所謂的滾動視差效果。

滾動視差文字陰影/虛影效果

那么,運用 translate3d 的視差效果,又能有一些什么好玩的效果呢?下面這個滾動視差文字陰影/虛影效果很有意思:

csstparallax

title="CSS translate3d Parallax" src="https://codepen.io/Chokcoco/embed/XBgBBp/?height=265&theme-id=0&default-tab=css,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">

CodePen Demo -- CSS translate3d Parallax

當然,通過調整參數(

perspective: ?px
?以及?
transform: translateZ(-?px);
),還能有其他很有意思的效果出現:

csstparallax2

title="PBXwdX" src="https://codepen.io/Chokcoco/embed/PBXwdX/?height=265&theme-id=0&default-tab=css,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">

CodePen Demo -- CSS translate3d Parallax 2

是不是很有電影開片的廠商 LOGO 的特效的感覺?joy?。

師父領進門,修行在個人,怎么制作更好更有意思的效果還是需要花時間鉆研和琢磨,這里我僅僅是拋磚引玉,希望能見到更多 Nice 的效果。

?

最后

感謝耐心讀完。更多精彩 CSS 技術文章匯總在我的?Github -- iCSS?,持續更新,歡迎點個 star 訂閱收藏。

好了,本文到此結束,希望對你有幫助 :)

如果還有什么疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

?

?

本文轉載于:猿2048?https://www.mk2048.com/blog/blog.php?id=iakj2ab&title=滾動視差?CSS 不在話下

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機圖形學試題a卷,計算機圖形學復習題及答案

一、選擇題1.計算機繪圖設備一般使用( )顏色模型。A. RGBB. CMYC. HSVD. HLS2.在透視投影中&#xff0c;主滅點的最多個數是( )A1B2C3D43.多邊形填充時&#xff0c;下述論述錯誤的是( )A 多邊形被兩條掃描線分割成許多梯形&#xff0c;梯形的底邊在掃描線上&#xff0c;腰在多邊…

番石榴的弦類

在“ 檢查Java中的空&#xff0c;空或僅空白字符串”一文中 &#xff0c;我演示了Java生態系統&#xff08;標準Java&#xff0c; Guava &#xff0c; Apache Commons Lang和Groovy &#xff09;中用于檢查字符串是否為空&#xff0c;空或空白的常見方法。僅類似于C&#xff03…

用python做數據分析流程圖_使用Pyecharts進行高級數據可視化

歡迎使用Markdown編輯器經管之家&#xff1a;Do the best economic and management education&#xff01;你好&#xff01; 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章&#xff0c;了解一下Markdown的基本語…

Hadoop集群的配置(二)

轉自&#xff1a;http://www.cnblogs.com/baiboy/p/4640640.html 摘要: hadoop集群配置系列文檔&#xff0c;是筆者在實驗室真機環境實驗后整理而得。以便隨后工作所需&#xff0c;做以知識整理&#xff0c;另則與博客園朋友分享實驗成果&#xff0c;因為筆者在學習初期&#x…

允許使用抽象類類型 isearchboxinfo 的對象_Java學習5-設計模式+抽象類/方法

1.設計模式設計模式&#xff1a;一套被反復使用、多數人知曉的&#xff0c;經過分類編目的、代碼設計經驗的總結&#xff0c;是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。項目中合理的運用設計模式可以完美的解決很多問題&#xff1b; 每種模式在現實中都有相應的…

初始Windows程序

1.屬性 窗體標題 Name 窗體的圖標 Icon 背景圖片 BackgroundImage 背景顏色 BackColor 最大化按鈕 MaxIMonBox 最小化按鈕 Minimun 窗體邊框樣式 FormBorderStyle 窗體初始位置 StartPosition 窗體狀態 WindowsState 背景圖片拉伸 BackgroundImageLayout 窗體標題 Te…

計算機病毒是以獨立的文件形式存在的對嗎,計算機病毒以什么形式存在?

自從2113世紀出現第一種病毒以來&#xff0c;對于世界上共有5261種病毒的疾病數量有不同的看法. 無論有1,653種&#xff0c;病毒的數量仍在增加. 根據國外統計&#xff0c;計算機病毒以每周10種的速度增長. 根據我國部的統計&#xff0c;中國計算機病毒以每月4種的速度增長. 有…

HTML基礎實例

本節列舉了一些簡單的HTML例子&#xff0c;幫助大家更感性地認識HTML標簽。是不是對一些標簽還不熟悉&#xff1f;別擔心&#xff0c;后面幾個章節會有詳細說明&#xff0c;先跑幾個例子看看效果吧。 HTML文檔相關標簽所有HTML文檔必須以<!DOCTYPE html>聲明開頭。 HTM…

簽署Java代碼

在上一篇文章中&#xff0c;我們討論了如何保護移動代碼 。 提到的措施之一是簽名代碼。 這篇文章探討了Java程序如何工作。 數字簽名 數字簽名的基礎是密碼學 &#xff0c;特別是公鑰密碼學 。 我們使用一組加密密鑰&#xff1a;私有密鑰和公共密鑰。 私鑰用于簽名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引導,不能佛系優化

又是一個不眠的夜晚&#xff0c;工作對生活節奏不斷地敲打&#xff0c;我們新一代的年輕小伙不得不進步&#xff0c;滿懷熱情來挑戰我們對于工作的激情&#xff0c;雖然每一天工作都是重復地進行&#xff0c;但是每一天都有我們留下的痕跡&#xff0c;為世界的美好增添一道絢麗…

SQL數據庫排序規則修改

修改SQL數據庫排序規則: 1.修改為單用戶模式 2.然后關閉所有的查詢窗口&#xff0c;修改Options的Collocation屬性&#xff0c;如&#xff1a;Chinese_PRC_90_CI_AS 3.再修改為多用戶模式 例如&#xff1a; ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

屬于計算機病毒主要特征的是,[單選] 不屬于計算機病毒的主要特征的是()

[單選] 不屬于計算機病毒的主要特征的是()更多相關問題已知兩直線l1&#xff1a;mx&#xff0b;y&#xff0d;20和l2&#xff1a;(m&#xff0b;2)x&#xff0b;y&#xff0b;40與兩坐標軸圍成的四邊形有外接圓&#xff0c;則實數m的值為()A&#xff0e;1B&#xff0e;&#xf…

小程序滴滴車主板塊的銀行卡管理左滑刪除編輯

最近在類似于滴滴軟件的一款小程序&#xff0c;工程確實有點大&#xff0c;很多東西都是第一次做。這次記錄一下關于左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果&#xff0c;主流的都是控制邊距margin來達到左滑的效果。…

華菱重卡儀表指示說明_儀表裝置11種常見故障的解決方法

1. 轉速表工作不正常或停止工作首先檢查轉速表背面的黑色3孔插頭與插座接觸是否良好及電壓正常與否。3個端子的連接情況&#xff1a;端子a是電源負極&#xff0c;與儀表盤14孔白色插座上的棕色導線連接后搭鐵(儀表盤上所有搭鐵點均由棕色導線匯集在一起&#xff0c;并通過膠布包…

WADL中的JSON模式

在其他工作之間&#xff0c;我最近一直在審查WADL規范&#xff0c;以解決一些文檔問題&#xff0c;以生成更新版本。 因為顯而易見的一件事是缺少對XML以外的語言的語法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但這對于JSON純粹主義者而言…

怎么用python自制計算公式_如何使用Python和Numpy計算r平方?

我最初發布下面的基準是為了推薦numpy.corrcoef&#xff0c;愚蠢地沒有意識到原來的問題已經使用了corrcoef&#xff0c;實際上是在詢問高階多項式擬合。我已經使用statsmodels為多項式r-squared問題添加了一個實際的解決方案&#xff0c;并且我已經離開了原始的基準測試&#…

ASP .NET SVN emmet 插件

學習 ASP .NET 時間的第三周&#xff1a; 來講講如何在 visual studio 2013...上搭載 SVN吧: 廢話不多說&#xff1a; One Step&#xff1a; 電腦上已安裝 visual studio 2013 等版本&#xff08;未安裝時 紅色區域是不存在的&#xff09; Two Step&#xff1a; 從官網上下載對…

Python之路3【知識點】白話Python編碼和文件操作(截載)

無意發現這篇文章講的比較好&#xff0c;存下來供參考&#xff1a; http://www.cnblogs.com/luotianshuai/p/5735051.html轉載于:https://www.cnblogs.com/shikaihong/p/7778880.html

Http協議入門

[在此處輸入文章標題] 1 web web入門 1&#xff09;web服務軟件作用: 把本地資源共享給外部訪問 2&#xff09;tomcat服務器基本操作 &#xff1a; 啟動: %tomcat%/bin/startup.bat 關閉&#xff1a; %tomcat%/bin/shutdown.bat 訪問tomcat主頁&#xff1a; http://loca…

計算機硬件系統都是看得見的,計算機組成硬件系統).doc

計算機組成硬件系統)各位計算機協會的成員大家好&#xff0c;很高興大家能陪我們走過這段難忘的時光。為了讓大家更好的學到東西&#xff0c;我們特地將計算機方面的東西整理成技術文檔&#xff0c;共大家使用&#xff0c;祝大家學得愉快&#xff01;湘信院計算機協會一&#x…