1. 程式人生 > >粘性定位position:sticky用法,手機移動裝置:flex佈局

粘性定位position:sticky用法,手機移動裝置:flex佈局

使用者的螢幕越來越大,而頁面太寬的話會不宜閱讀,所以絕大部分網站的主體寬度和之前相比沒有太大的變化,於是瀏覽器中就有越來越多的空白區域,所以你可能注意到很多網站開始在滾動的時候讓一部分內容保持可見,比如,側邊欄的部分割槽域。position:sticky為此而生。

position:sticky用法

position:sticky是一個新的css3屬性,它的表現類似position:relative和position:fixed的合體,在目標區域在螢幕中可見時,它的行為就像position:relative; 而當頁面滾動超出目標區域時,它的表現就像position:fixed,它會固定在目標位置。

使用起來也非常簡單:

.sticky {
  position: -webkit-sticky;
  position:sticky;
  top: 15px;}

目前來說還需要用私有字首~~

瀏覽器相容性:

由於這是一個全新的屬性,以至於到現在都沒有一個規範,W3C也剛剛開始討論它,而現在只有webkit nightly版本和chrome 開發版(Chrome 23.0.1247.0+ Canary)才開始支援它。

另外需要注意的是,如果同時定義了left和right值,那麼left生效,right會無效,同樣,同時定義了top和bottom,top贏~~

fall back

雖然其它瀏覽器尚不支援,但是實現起來其實不難,我們可以用js簡單實現:

HTML

<div class="header"></div>

CSS

.sticky {
  position: fixed;
  top: 0;}.header {
  width: 100%;
  background: #F6D565;
  padding: 25px 0;}

JS

var header = document.querySelector('.header');var origOffsetY = header.offsetTop; function onScroll(e) {
  window.scrollY >= origOffsetY ? header.classList
.add('sticky') : header.classList.remove('sticky');}  document.addEventListener('scroll', onScroll);

demo

嗯,對於前端來說,新技術用於提升使用者體驗才能體現其價值~~

原文地址:http://www.qianduan.net/position-sticky-introduction.html

當然也可以用Jquery外掛實現:http://www.jq22.com/jquery-info518

flex: http://www.daqianduan.com/6281.html

<!DOCTYPE html><html><head><metacharset="utf-8"><metacontent="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"name="viewport"><metacontent="yes"name="apple-mobile-web-app-capable"><metacontent="black"name="apple-mobile-web-app-status-bar-style"><metacontent="telephone=no"name="format-detection"><metacontent="email=no"name="format-detection"><styletype="text/css">/* ============================================================
flex:定義佈局為盒模型
flex-v:盒模型垂直佈局
flex-1:子元素佔據剩餘的空間
flex-align-center:子元素垂直居中
flex-pack-center:子元素水平居中
flex-pack-justify:子元素兩端對齊
相容性:ios 4+、android 2.3+、winphone8+
============================================================ */.flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flex-v{-webkit-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.flex-1{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;}.flex-align-center{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;}.flex-pack-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.flex-pack-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style></head><body><divclass="flex flex-pack-justify"><div>模組一</div><div>模組二</div><div>模組三</div><div>模組四</div></div></body></html>