【轉】mip-semi-fixed 走走又停停

寫在前面

MIP 中懸浮元素的特殊情況

其實組件上線已經有一段時間了,最開始看到這個需求是站長提交了一個這中功能的組件過來,不過看過代碼立刻就想到了 MIP 頁面的特殊性:從結果頁打開的 MIP 頁面,是嵌套在一個 iframe 之中的。

在這種特殊的情況下,單純的通過 position: fixed 去實現 DOM 元素的懸浮存在一系列的問題。比如,在 ios 的 safari 瀏覽器中,當用戶滑動頁面的時候,頁面中的懸浮元素會隨著頁面的滑動而閃爍。

因此,MIP 提供了 mip-fixed 懸浮布局組件來解決這些問題。

滑動懸浮的使用場景

顧名思義就是一個 DOM 節點在滑動的一定位置的時候,變為懸浮狀態。滑動懸浮的使用場景還是很多的,比如一些頁面中的導航,當導航滑動到頁面頂部的時候則懸浮在頁面頂部,以方便用戶操作。如:



業界技術實現與存在的問題

業界技術實現

目前業內針對這種滾動頁面定位的情況一般使用兩種邏輯來寫:

(1)將懸浮前后的兩個狀態分成兩個 dom 節點(暫時叫做 staticDOM 和 fixedDOM),并通過 JavaScript 控制兩個 dom 節點的顯示和隱藏。在頁面到達懸浮狀態之前:staticDOM 節點顯示,fixedDOM 節點隱藏;到達懸浮狀態之后:staticDOM 節點隱藏,fixedDOM 節點顯示。

  • 優點:JavaScript 邏輯簡單
  • 缺點:html 代碼冗余

(2)只需要一個 dom 節點(暫時叫做 stickyDOM),所有的邏輯都通過 JavaScript 控制,也就是說,頁面到達懸浮狀態的時候,將 stickyDOM 的 CSS 樣式中的 position 屬性的值設置為 fixed, 非懸浮狀態的時候,將 stickyDOM 的 CSS 樣式中的 position 屬性設置為 static。

  • 優點:html 代碼清晰
  • 缺點:由于每個頁面之間的特性,比較難達到通用性

(3)通過 CSS3 的 position: sticky 實現。這是 CSS3 的新特性,不過目前還不能達到很好的兼容狀態,特別是我們這種在 iframe 內的特殊情況。關于 sticky 可以參考文檔 position:sticky實現iOS6+下的粘性布局

仍然存在的問題

在 ios 下的 uc、百度和手百瀏覽器中,無論采用哪種方法,由于瀏覽器原因,頁面滑動的時候,所有的 JavaScript 都無法實時計算并執行。因此,只有當頁面滑動停止后,JavaScript 才能去計算頁面的位置,然后處理懸浮元素的狀態,這樣就會看到懸浮元素狀態的變化有卡頓的情況,對此,目前并沒有十分好的解決辦法,如果大家有更好的辦法,可以反饋我們。

簡介

mip-semi-fixed 是滑動懸浮組件,也可以叫做半懸浮組件,命名為 semi-fixed 的靈感來源于半導體(介于導體(conductor)與絕緣體(insulator)之間)。

代碼設計融合了業界兩種實現方案,非 SF 下 MIP 頁面中通過 JavaScript 更換 CSS 實現,iframe下的 MIP 頁面由于要特殊處理 fixed 元素,所以會克隆一個 dom 節點,具體代碼參考 mip-semi-fixed 開源代碼。

屬性及節點

  • threshold 屬性(非必選項)

    元素 fixed 狀態時距離頁面頂部的距離,默認是 0。

  • fixedClassNames 屬性(非必選項)

    元素 fixed 狀態時需要添加的類,如果沒有這個屬性,則 組件只會懸浮不會改變樣式。

  • div[mip-semi-fixed-container] 子節點(必選項)

    需要滑動后懸浮的 html 代碼的容器,組件科隆的也是這個節點。

MIP 官網文檔 mip-semi-fixed 滑動懸浮組件 中對組件各個參數的說明、使用以及默認值等進行了詳細的說明。

使用

  • 常規使用

    • 代碼:傳送門
    • 示例:傳送門
  • 加關閉按鈕

    • 代碼:傳送門
    • 示例:傳送門

寫在后面

有任何問題可以到 github issues 提問。

文章作者:Pearl
轉發自segmentfault

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

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

相關文章

Mac使用Homebrew安裝Kafka

1、使用brew install命令安裝Kafka $ brew install kafka安裝過程將依賴安裝 zookeeper軟件位置 /usr/local/Cellar/zookeeper /usr/local/Cellar/kafka配置文件位置 /usr/local/etc/kafka/zookeeper.properties /usr/local/etc/kafka/server.properties 備注:后…

廣州站長沙龍 MIP 問題及答案

1. mip提交幾個月時間了,生效量比較少,是什么原因? 答:提交 MIP 頁面后,經過收錄、校驗、和生效三個步驟,才能在結果頁看到閃電標。 1)提交 URL 后,spider 會去抓取收錄&#xff1…

日常問題——初始化Hive倉庫報錯com.google.common.base.Preconditions.checkArgument

問題描述: 初始化Hive倉庫報錯Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V 解決方案(過程): com.google.commo…

【轉】百度站長平臺MIP引入工具使用心得

MIP引入主動推送流程 對于 MIP 站點改造好了,我們如何提交數據,并且 MIP 提交后,我們能得到哪些數據的反饋,在這里簡單的寫一篇文章,說一下。 改造 MIP,我們一般是添加了一個二級域名站點進行改造&#x…

Hadoop之HDFS應用

1、通過http://127.0.0.1:8088/即可查看集群所有節點狀態: 2、訪問http://localhost:9870/即可查看文件管理頁面(在3.0.0中在之前的版本中文件管理的端口是50070,替換為了9870端口): ————進入文件系統 ————…

MIP ACCESS細節剖析

什么是 MIP ACCESS MIP ACCESS 由百度 MIP 團隊開發的一種頁面訪問權限控制機制,能夠允許網頁發布者在頁面元素中定義內容標記,并結合用戶訪問情況進行綜合評價,從而展現或隱藏頁面中內容,直至用戶登錄、訂閱或付費后才能夠查看隱…

HDFS常用Shell命令

1、-ls: 顯示目錄信息 hadoop fs -ls /2、-mkdir:在HDFS上創建目錄 hadoop fs -mkdir -p /demo/test3、-moveFromLocal:從本地剪切粘貼到HDFS hadoop fs -moveFromLocal a.txt /demo/test/a.txt4、-appendToFile:追加一個文件到已經存在…

Linux環境下Flume的安裝

1、在官網http://flume.apache.org/download.html下載flume的壓縮包 2、解壓到指定位置并重命名 tar -zxvf apache-flume-1.9.0-bin.tar.gz3、配置環境并生效 #vi ~/.bashrc export FLUME_HOME/usr/local/APP/flume export PATH$PATH:$FLUME_HOME/bin #使變量設置生效 #sour…

MIPCache 域名升級

一、MIPCache URL 是什么 舉個例子,MIP 官網的 URL 為: https://www.mipengine.org 對應的 MIPCache 的 URL 為: https://mipcache.bdstatic.com/c/s/www.mipengine.org 所謂 MIPCache URL 是經過 MIP-Cache CDN 緩存后的 MIP 頁面地址&…

Flume監聽端口,輸出端口數據案例

1、在flume目錄下新建/myconf目錄,并在目錄下新建socket-console.conf 文件! mkdir myconf cd myconf touch socket-console.conf2、編輯文件vim socket-console.conf,添加以下內容: # 定義這個agent中各組件的名字 a1.sources r1 a1.sink…

MIP 移動網頁加速器視頻教程全新發布

MIP (Mobile Instant Pages - 移動網頁加速器) 是百度推出的開源項目,用于移動端頁面加速。MIP 技術通過優化瀏覽器資源加載,前端代碼執行及 CDN 緩存加速來加速頁面,打造秒開的頁面瀏覽體驗。目前,有 5000 多家站點的 MIP 頁已經…

日常問題——flume連接hive時報錯Caused by: java.lang.NoSuchMethodError

問題描述: 今天新安裝的flume,使用flume來做kafka與hive對接時出現了以下兩個的錯誤: Caused by: org.apache.hive.hcatalog.streaming.ConnectionError: HiveEndPoint{metaStoreUrithrift://localhost:9083, databasedb, tablestudent, pa…

MIP 技術進展月報:儲存功能全新上線,MIP-Cache域名升級,校驗更嚴謹

集 * 瞬時觸達用戶、高轉化率、炫酷閃電標、優質展現形式 * 等諸多特性為一體的 MIP 頁面吸引了眾多站點進行改造。為了更好地服務于廣大站長,更快地傾聽站長們的聲音,MIP 技術團隊特推出《MIP 技術進展月報》,歡迎大家對 MIP 技術提建議&…

通過Flume簡單實現Kafka與Hive對接(Json格式)

將以下存儲在kafka的topic中的JSON格式字符串,對接存儲到Hive的表中 {"id":1,"name":"小李"} {"id":2,"name":"小張"} {"id":3,"name":"小劉"} {"id":4,&qu…

改造MIP獲得搜索青睞,輕松完成SEO

搜索引擎目標及頁面排序方法 搜索引擎作為互聯網流量的入口,承擔著流量分發的職責。但排序成千上萬的網頁,決定哪些網頁在第一頁,是由網頁本身的用戶體驗決定的。權重算法會從內容優質性,廣告多少,加載速度等多個角度…

日常問題———Attempting to operate on hdfs namenode as root

寫在最前注意: 1、master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四個文件 2、如果你的Hadoop是另外啟用其它用戶來啟動,記得將root改為對應用戶 HDFS格式化后啟動dfs出現以…

WebP 在減少圖片體積和流量上的效果如何?MIP技術實踐分享

作者 | Jackson 編輯 | 尾尾 不論是 PC 還是移動端,圖片一直占據著頁面流量的大頭,在圖片的大小和質量之間如何權衡,成為了長期困擾開發者們的問題。而 WebP 技術的出現,為解決該問題提供了好的方案。本文將為大家詳細介紹 WebP …

日常問題——pdsh localhost Connection refused

問題描述: 本地安裝hadoop單機模式的時候需要啟動namenode時報錯 pdshxxx: localhost: connect: Connection refused解決方案(過程): 原因是pdsh默認采用的是rsh登錄,修改成ssh登錄即可,在環境變量/etc/…

MIP技術進展月報第2期: 數據綁定,異步腳本加速

一、 功能更新 1. mip-bind 上線,實現復雜交互 MIP bind 雙向綁定機制和組件上線,提供雙向綁定的特性;能夠允許頁面實現數據驅動功能,開發者可以在任意場景修改數據,并驅動頁面元素變動。 MIP 小姐姐畫外音&#xf…

Hadoop的安裝與配置——設置單節點群集

本篇博客將主要介紹如何設置和配置單節點Hadoop安裝,以便我們可以使用Hadoop 的MapReduce與HDFS快速執行簡單的操作。 零、先決條件 1、本系列以Ubuntu Linux作為開發和生產平臺 2、Linux所需的軟件包括: JAVA:必須安裝Java,配置…