亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 網頁設計 > 正文

詳解移動端實現內滾動的四種解決方案

2024-08-30 08:33:27
字體:
來源:轉載
供稿:網友

發現需求

如果在一個區域內只允許部分區域產生滾動的效果,而其余部分不能移動,你會采用什么方法呢?

首先我們可以把這個需求分解為兩個小的問題來解決。

  • 部分區域固定
  • 其余區域滾動

部分區域固定

  1. 為頁面的body部分設置height: 100%以及overflow: hidden,即禁用頁面原生的滾動,保證只會顯示一屏的內容。
  2. 固定區域采用絕對定位。

其余區域滾動

核心屬性overflow-y

mdn對于overflow-y的定義

The overflow-y property specifies whether to clip content, render a scroll bar, or display overflow content of a block-level element, when it overflows at the top and bottom edges.
overflow-y屬性指定或是裁剪內容并且渲染一個滾動條,或是當塊級元素在其頂部或底部溢出時顯示溢出的內容。

簡單來說,overflow-y屬性在垂直方向上存在溢出的時候,通過設置不同的值會產生不同的表現。為了實現滾動功能我們需要將該屬性設置為scroll,之后,無論塊級元素的內容是否溢出,瀏覽器都會生成一個滾動條并且隱藏容器中內容溢出的部分,只有在滾動之后才會顯示。

舉個例子:

.test{  width: 200px;  /* 關鍵樣式 */  height: 200px;  overflow-y: scroll;  /* 以下無關樣式 */  background: #f14c5c;  color: #fff;}<div class="test">  這里面只是一段測試的內容這里面只是一段測試的內容這里面只是一段測試的內容  這里面只是一段測試的內容這里面只是一段測試的內容這里面只是一段測試的內容  這里面只是一段測試的內容這里面只是一段測試的內容這里面只是一段測試的內容  這里面只是一段測試的內容這里面只是一段測試的內容這里面只是一段測試的內容</div>

效果圖如下:

通過剛才的例子我們可以得出結論,只要限制塊級元素的高度,自然就可以實現只有該元素的內容可滾動而不影響其它內容。但是在實現過程中遇到了新的問題,如何實現對設計圖的精確還原?

設計圖如下:

整個彈出框高度是隨頁面高度自適應的,標題部分和底部按鈕部分位置是固定的,中間列表需要占滿剩余高度,并且內容可滾動。整個彈窗被最外層div包裹,底部按鈕相對于它進行定位。經過思考后,嘗試了四種方案,分享給大家。

方案說明

我們需要確定的核心問題就是中間內容的高度,也即是height在不同尺寸屏幕下的精確高度。

vh

相對于視口的高度,視口被均分為100單位,即1vh等于視口高度的1%。

但是vh單位對低版本安卓和ios支持不夠好,微信瀏覽器X5內核不支持,雖然已經升級到blink內核,但是為了確保萬無一失,放棄采用這種方案。另外也無法精確控制和底部按鈕邊距。

height百分比

和vh類似,無法精確控制和底部按鈕的邊距,自適應效果不好。

calc

對于以上兩種方案的存在的問題,calc計算屬性可以很好的解決,只需要設置height:calc(100% - 60px),就可以精準的占滿中間部分,并且保持和底部按鈕的邊距。

可惜的是對于低版本的安卓瀏覽器、ios瀏覽器包括微信瀏覽器在內的主流瀏覽器支持都不好,依然只能棄用。
如果兼容性再好一點的話,calc方案應該是最好用且最優雅的一種實現方式。

js

單純的使用css無法實現,就只能借助js來動態計算內容所需要的高度來進行設置。同時這種方法也幾乎不會遇到兼容性的問題,是對優雅降級的一種實踐。

題外話

隱藏難看的滾動條。

如果直接設置overflow-y:scroll在ios下始終會出現很丑的滾動條,我們可以對該元素設置以下屬性:

margin-right: -20px;padding-right: 20px;

對滾動條進行一個小小的hack,它就再也不會出現了,用戶交互時會有和原生滾動一樣的感覺,體驗更佳。

@prototype 經大大提醒,設置webkit瀏覽器的私有屬性::-webkit-scrollbar能更靈活的控制滾動條,在此感謝。如果只需要隱藏,如下代碼即可:

::-webkit-scrollbar{  display: none}

雖然移動端的瀏覽器webkit內核居多,不過還是要在真機測試后再得出結論,如果有些瀏覽器不支持這個屬性的話,依然可以使用上面的小hack。

-webkit-overflow-scrolling: touch

在ios設備中,利用overflow來模擬滾動會出現卡頓的情況,可以通過設置-webkit-overflow-scrolling: touch來解決,原因是設置后ios會為其創建一個UIScrollView,利用硬件來加速渲染。

這個問題本身并不復雜,甚至需求更改后,實現變的非常簡單。但是希望能通過這個小例子能讓每一個前端人在思考需求時都能夠盡可能的去想更多樣的方法來解決問題,即使因為兼容性或其它原因暫時無法實現,在這個過程中獲得的成長也是非常有益的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区久久精品| 国产午夜精品久久久| 亚洲品质视频自拍网| 亚洲free性xxxx护士白浆| 国产精品亚洲一区二区三区| 久久精品国产亚洲| 91国内免费在线视频| 成人久久一区二区| 国产午夜精品美女视频明星a级| 国产精品免费一区| 日韩精品亚洲元码| 久久午夜a级毛片| 亚洲精品福利在线观看| 久久视频在线播放| 国产69精品久久久久9| 亚洲精选中文字幕| 亚洲国产精品成人精品| 日韩电影在线观看中文字幕| 奇米4444一区二区三区| 国产精品亚洲美女av网站| 久久久成人av| 亚洲男人第一网站| 国产不卡一区二区在线播放| 久久久久久久久久久av| 538国产精品一区二区免费视频| 欧美老女人性视频| 欧美成人免费大片| 欧美最猛性xxxx| 亚洲成人激情视频| 久久久久久伊人| 国产精品午夜一区二区欲梦| 成人av在线亚洲| 亚洲欧美日本精品| 亚洲精品国产综合区久久久久久久| 日韩精品一二三四区| 亚洲成人久久久| 热99精品里视频精品| 91av网站在线播放| 在线成人免费网站| 中文字幕日韩视频| 亚洲成人xxx| 亚洲精品99久久久久| 美女久久久久久久| 国模极品一区二区三区| 国产mv免费观看入口亚洲| 精品亚洲国产视频| 日本19禁啪啪免费观看www| 国产精品视频免费在线观看| 国产91色在线| 中文一区二区视频| 亚洲国产精品悠悠久久琪琪| 海角国产乱辈乱精品视频| 亚洲 日韩 国产第一| 亚洲精品av在线| 国产日韩精品在线| 国产啪精品视频网站| 欧美精品videos另类日本| 亚洲精品二三区| 欧美视频在线免费看| 欧美一级视频免费在线观看| 亚洲国产精品久久久久秋霞不卡| 久久免费精品日本久久中文字幕| 欧美性高潮在线| 欧洲亚洲在线视频| 久久久久免费精品国产| 欧美精品久久久久久久| 国产一区玩具在线观看| 北条麻妃99精品青青久久| 在线播放国产一区中文字幕剧情欧美| 国产精品久久久久久久久久免费| 欧美性生交大片免费| 国产日韩在线免费| 亚洲精品国产欧美| 色婷婷久久一区二区| 国产a级全部精品| 日韩av免费看网站| 亚洲аv电影天堂网| 欧洲美女7788成人免费视频| 中文字幕日韩在线视频| 久久免费在线观看| 92国产精品久久久久首页| www日韩中文字幕在线看| 亚洲成人黄色在线| 国产精品高清免费在线观看| 91影视免费在线观看| 91精品视频观看| 一夜七次郎国产精品亚洲| 国产精品h在线观看| 中文字幕日韩欧美| 日韩中文在线观看| 国产福利成人在线| 狠狠躁夜夜躁人人爽超碰91| 91成人免费观看网站| 亚洲乱码一区av黑人高潮| 欧美专区在线播放| 国产精品高潮呻吟久久av野狼| xvideos亚洲| 久热爱精品视频线路一| 久久精品一本久久99精品| 国产日韩一区在线| 国产亚洲欧美aaaa| 狠狠躁夜夜躁人人躁婷婷91| 精品国产电影一区| 国内偷自视频区视频综合| 2019av中文字幕| 97久久精品人搡人人玩| 日韩电影视频免费| 国外色69视频在线观看| 亚洲网站在线播放| 91色精品视频在线| 亚洲九九九在线观看| 国产主播精品在线| 欧美理论电影在线播放| 久久久久久久久久久亚洲| 亚洲人在线视频| 国产激情综合五月久久| 日韩欧美国产黄色| 91精品一区二区| 日本高清久久天堂| 91中文在线视频| 国产丝袜视频一区| www.久久撸.com| 久久伊人精品一区二区三区| 51久久精品夜色国产麻豆| 亚洲国产精品专区久久| 国产精品专区一| 国产精品偷伦免费视频观看的| 精品视频—区二区三区免费| 亚洲一区二区福利| 欧美高清激情视频| 亚洲色图17p| 中文字幕亚洲专区| 国产精品视频专区| 亚洲精品久久久一区二区三区| 日韩一中文字幕| 日韩精品中文字幕在线播放| 在线视频日本亚洲性| 中文字幕国产亚洲2019| 国产精品香蕉在线观看| 久久精品国产亚洲精品2020| 日韩中文字幕免费| 欧美一级片在线播放| 午夜精品在线视频| 色偷偷噜噜噜亚洲男人的天堂| 91免费欧美精品| 日韩欧美一区二区三区| 国产在线精品成人一区二区三区| 97国产精品视频| 狠狠躁夜夜躁人人爽超碰91| 国产精品久久久久7777婷婷| 96精品久久久久中文字幕| 最近2019中文字幕大全第二页| 亚洲国产成人精品女人久久久| 欧美中文字幕第一页| 在线亚洲欧美视频| 国产欧美亚洲精品| 日韩欧美在线一区| 日韩影视在线观看| 一区二区三区视频免费| 成人免费视频xnxx.com| 欧美日韩一区二区三区在线免费观看| 亚洲精品成a人在线观看| 久久国产精品久久国产精品| 亚洲精品电影网在线观看|