91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用CSS Snap優化滾動容器

發布時間:2021-08-07 21:46:56 來源:億速云 閱讀:165 作者:chen 欄目:web開發

這篇文章主要介紹“如何使用CSS Snap優化滾動容器”,在日常操作中,相信很多人在如何使用CSS Snap優化滾動容器問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用CSS Snap優化滾動容器”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

你是否經常希望有一個CSS特性可以輕松創建一個可滾動的容器? CSS scroll snap 可以做到這一點。在早期的前端開發中,我依靠 JS  插件來創建滑塊組件。有時,我們需要一種簡單的方法來快速將元素制作成可滾動的容器。現在,多虧了 CSSS scroll snap  ,我們可以簡單做到這一點。

為什么要使用 CSS Scroll Snap

隨著移動設備和平板設備的興起,我們需要設計和構建可以輕觸的組件。以圖庫組件為例。用戶可以輕松地向左或向右滑動以查看更多圖像,而不是分層結構。

如何使用CSS Snap優化滾動容器

根據CSS規范,為開發者提供良好控制的滾動體驗是引入 CSS scroll snap的主要原因之一。它增強了用戶體驗,并使其更容易實現滾動體驗。

滾動容器的基礎知識

要創建一個滾動容器,以下是我們需要做的基本內容

  • 使用 overflow

  • 一種將項目彼此相鄰顯示(內聯)的方法

舉個例子:

  1. <div class="section"> 

  2.   <div class="section__item">Item 1</div> 

  3.   <div class="section__item">Item 2</div> 

  4.   <div class="section__item">Item 3</div> 

  5.   <div class="section__item">Item 4</div> 

  6.   <div class="section__item">Item 5</div> 

  7. </div> 


.section {   white-space: nowrap;   overflow-x: auto; }

多年來,使用white-space: nowrap是一種流行的CSS解決方案,用于強制元素保持內聯。不過,現在我們基本都使用 Flexbox :

.section {   display: flex;   overflow-x: auto; }

如何使用CSS Snap優化滾動容器

這是創建滾動容器的基本方法。然而,這還不夠,這不是一個可用的滾動容器。

滾動容器有什么問題

問題是,與滑動相比,它們并不能提供良好的體驗。在觸摸屏上滑動手勢的主要好處是,我們可以用一根手指水平或垂直滾動。

如何使用CSS Snap優化滾動容器

實際上需要將每個項目移動到它自己的位置。這并不是滑動,這是一種非常糟糕的體驗,通過使用CSS scroll snap,我們可以通過簡單地定義snap  points來解決這個問題,它將使用戶更容易地水平或垂直滾動。

接著,我們來看看如何使用CSS scroll snap。

CSS Scroll Snap 簡介

要在容器上使用scroll snap,它的子項目應該內聯顯示,這可以用我上面解釋的方法之一來實現。我選擇CSS flexbox:

<div class="section">   <div class="section__item">Item 1</div>   <div class="section__item">Item 2</div>   <div class="section__item">Item 3</div>   <div class="section__item">Item 4</div>   <div class="section__item">Item 5</div> </div>
.section {   display: flex;   overflow-x: auto; }

看了這個,我們需要添加另外兩個屬性來讓scroll snap工作。我們應該在哪里添加它們?

首先,我們需要將scroll-snap-type添加到滾動容器中。在我們的示例中,是.section元素。然后,我們需要向子項(即.section__item)添加scrolln-snap-align。

.section {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory; }  .section__item {   scroll-snap-align: start; }

這里你可能想知道x mandatory和start是干嘛用的。不用擔心,這是本文的核心,下面會對其進行深入的講解。

如何使用CSS Snap優化滾動容器

這一刻,我對CSS scroll snap非常興奮,它使滾動更加自然。現在,讓我們深入研究scroll snap 屬性。

Scroll Snap Type

根據CSS規范,**scroll-snap-type ** 屬性定義在滾動容器中的一個臨時點(snap point)如何被嚴格的執行。

滾動容器的軸線

滾動容器的軸表示滾動方向,它可以是水平或垂直的,x值表示水平滾動,而y表示垂直滾動。

/* 水平*/ .section {   display: flex;   overflow-x: auto;   scroll-snap-type: x; }  /* 垂直*/ .section {   height: 250px;   overflow-y: auto;   scroll-snap-type: y; }

如何使用CSS Snap優化滾動容器

Scroll Snap 容器的嚴格性

我們不僅可以定義Scroll Snap的方向,還可以定義它的嚴格程度。這可以通過使用scroll-snap-type值的andatory |  proximity來實現。

  • mandatory:如果它當前沒有被滾動,這個滾動容器的可視視圖將靜止在臨時點上。意思是當滾動動作結束,如果可能,它會臨時在那個點上。如果內容被添加、移動、刪除或者重置大小,滾動偏移將被調整為保持靜止在臨時點上。

mandatory關鍵字意味著瀏覽器必須捕捉到每個滾動點。假設roll-snap-align屬性有一個start值。這意味著,滾動必須對齊到滾動容器的開始處。

在下圖中,每次用戶向右滾動時,瀏覽器都會將項目捕捉到容器的開頭。

如何使用CSS Snap優化滾動容器
.section {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory; }  .section__item {   scroll-snap-align: start; }

 如何使用CSS Snap優化滾動容器

試著在下面的演示中向右滾動。如果你使用的是手機或平板電腦,可以向右移動滾動條或使用觸摸。應該能感受到每個項目是如何從其容器的開始抓取的。

演示地址:https://codepen.io/shadeed/pen/RwGaXKB

但是,如果該值是proximity,則瀏覽器將完成這項工作,它可能會吸附到定義的點(在我們的例子中start)。注意,proximity  是默認值,但是為了清晰起見,我們這里還是聲明一下它。

如何使用CSS Snap優化滾動容器
.section {   display: flex;   overflow-x: auto;   /* proximity is the default value, I added it for clarity reasons */   scroll-snap-type: x proximity; }

如何使用CSS Snap優化滾動容器

Scroll Snapping Alignment

滾動容器的子項目需要一個對齊點,它們可以對齊到這個點。我們可以用start, center或end。

為了更容易理解,下面是它的工作原理。

如何使用CSS Snap優化滾動容器

假設我們在滾動容器上有一塊磁鐵,這將有助于我們控制捕捉點。如果scroll-snap-type是垂直的,則對齊對齊將是垂直的。參見下圖:

如何使用CSS Snap優化滾動容器

滾動容器的 start

子項目將吸附到其水平滾動容器的開始處。

如何使用CSS Snap優化滾動容器

滾動容器的 center

子項目將吸附到其滾動容器的中心。

如何使用CSS Snap優化滾動容器

滾動容器的 end

子項將對齊到其滾動容器的末尾。

如何使用CSS Snap優化滾動容器

使用 Scroll-Snap-Stop

有時,我們可能需要一種方法來防止用戶在滾動時意外跳過一些重要的項。如果用戶滾動太快,就有可能跳過某些項。

.section__item {   scroll-snap-align: start;   scroll-snap-stop: normal; }

無法動太快可能會跳過三個或四個項目,如下所示:

如何使用CSS Snap優化滾動容器

scroll-snap-stop的默認值是normal,要強制滾動捕捉到每個可能的點,應使用always。

.section__item {   scroll-snap-align: start;   scroll-snap-stop: always; }

這樣,用戶可以一次滾動到一個捕捉點,這種方式有助于避免跳過重要內容。想象每個停止點都有一個停止標志,參見下面的動畫:

演示地址:https://codepen.io/shadeed/pen/JjRbXza

Scroll Snap Padding

scroll-padding設置所有側面的滾動邊距,類似于padding屬性的工作方式。在下圖中,滾動容器的左側有50px的內邊距。結果,子元素將從左側邊緣捕捉到50px

如何使用CSS Snap優化滾動容器

直滾動也是如此。參見下面的示例:

.section {   overflow-y: auto;   scroll-snap-type: y mandatory;   scroll-padding: 50px 0 0 0; }

如何使用CSS Snap優化滾動容器

Scroll Snap Margin

scroll-margin設置滾動容器的子項之間的間距。在向元素添加邊距時,滾動將根據邊距對齊。參見下圖:

如何使用CSS Snap優化滾動容器

.item-2具有scroll-margin-left:  20px。結果,滾動容器將在該項目之前對齊到20px。請注意,當用戶再次向右滾動時,.item-3會捕捉到滾動容器的開頭,這意味著僅具有邊距的元素將受到影響。

CSS Scroll Snap 用例

圖片列表

scroll snap 的一個很好的用例是圖像列表,使用 scroll snap 提供更好的滾動體驗。

如何使用CSS Snap優化滾動容器
.images-list {   display: flex;   overflow-x: auto;   scroll-snap-type: x;   gap: 1rem;   -webkit-overflow-scrolling: touch; /* Important for iOS devices */ }  .images-list img {   scroll-snap-align: start; }

注意,我使用x作為scroll-snap-type的值。

事例地址:https://codepen.io/shadeed/pen/jOMrxYO

好友清單

滾動捕捉的另一個很好的用例是朋友列表。下面的示例摘自Facebook(一個真實的示例)。

如何使用CSS Snap優化滾動容器
.list {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory;   gap: 1rem;   scroll-padding: 48px;   padding-bottom: 32px;   -webkit-overflow-scrolling: touch; }  .list-item {   scroll-snap-align: start; }

請注意,滾動容器的padding-bottom:32px。這樣做的目的是提供額外的空間,以便box-shadow可以按預期顯示。

如何使用CSS Snap優化滾動容器

頭像列表

對于此用例,我感興趣的是將center作為scroll-snap-align的值。

如何使用CSS Snap優化滾動容器
.list {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory;   -webkit-overflow-scrolling: touch; }  .list-item {   scroll-snap-align: center; }

這在一個角色列表中是很有用的,角色在滾動容器的中間是很重要的

如何使用CSS Snap優化滾動容器

演示地址:https://codepen.io/shadeed/pen/KKgMJWa

全屏展示

使用scroll snap也可以用于垂直滾動,全屏展示就是一個很好的例子。

如何使用CSS Snap優化滾動容器
  1. <main> 

  2.   <section class="section section-1"></section> 

  3.   <section class="section section-2"></section> 

  4.   <section class="section section-3"></section> 

  5.   <section class="section section-4"></section> 

  6.   <section class="section section-5"></section> 

  7. </main> 


main {   height: 100vh;   overflow-y: auto;   scroll-snap-type: y mandatory;   -webkit-overflow-scrolling: touch; }  .section {   height: 100vh;   scroll-snap-align: start; }

如何使用CSS Snap優化滾動容器

塊和內聯

值得一提的是,對于scroll-snap-type,可以使用inline和block邏輯值。參見下面的示例

main {   scroll-snap-type: inline mandatory; }

可讀性

使用 CSS scroll snap時,請確保可訪問性。這是滾動對齊的一種不好用法,它阻止用戶自由滾動內容以讀取內容。

.wrapper {   scroll-snap-type: y mandatory; }  h3 {   scroll-snap-align: start; }

如何使用CSS Snap優化滾動容器

如何使用CSS Snap優化滾動容器

到此,關于“如何使用CSS Snap優化滾動容器”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

css
AI

华亭县| 镇平县| 海安县| 小金县| 大宁县| 黄山市| 民丰县| 忻城县| 衢州市| 景宁| 吉隆县| 平昌县| 华宁县| 伊宁市| 赤壁市| 石泉县| 武安市| 郴州市| 莎车县| 卢湾区| 都昌县| 安丘市| 汾西县| 河津市| 根河市| 奉节县| 垫江县| 宜君县| 曲阳县| 河东区| 大方县| 沾益县| 揭东县| 铜鼓县| 蛟河市| 图木舒克市| 龙海市| 高尔夫| 禄丰县| 崇义县| 元谋县|