側邊欄導航(移動端商品--評論--詳情)隨樓層滑動高亮顯示
接觸前端一年時間,開始還能感覺到自己的進步,隨著時間的推移,開始不知道方向。因為各種前端的框架和外掛在網上都能夠找到現成的,直接下載下來用就好了。
從來不考慮其中的實現原理什麼的,即便是去看了其中的原始碼,也是知其然而不知其所以然。舉一個簡單的例子:去年聖誕公司要求頁面上要有雪花飄落的效果,當時的第一想法,就是canvas繪圖製作這個動畫(必定培訓的時候學的飛機大戰有類似的效果),後來發現很難實現,於是就在網上找了一個jquery.snow.js的外掛,發現原理很簡單,
(一個div中加入html的雪花----設定初始的css----執行從上到下的飄落動畫同時雪花在過程中透明----動畫完成移除該div),克隆多個div執行前邊的過程,看著是不是很簡單。
我當時也這麼認為,於是我就自己仿著做了一個(當時自己認為),其實就是照個抄了一遍,加了一點自己需要的功能(例如:隨機雪花的顏色),然後我就認為這是自己的,在jquery的外掛網站去釋出,結果被拒絕了,我當時很失望但是沒有找自己的原因(因為那是抄的),後來也寫了一些輪播,導航點選頁面滑動等(自己認為的外掛),後來發現可複用性的很差,沒有起到外掛的作用。通過看別人的,學習了一段時間,才決定再次寫一個,檢驗一下。
# 1.extend擴充套件方法
- iquery的extend方法,這是jquery外掛常用的擴充套件方法方法,將外掛的預設引數和使用者自定義引數合併為一個新引數的物件。
var defaults = { floorClass : '.scroll-floor', navClass : '.scroll-nav', activeClass : 'active', activeTop : 100, scrollTop : 100, delayTime : 200 }; var newOptions = $.extend({}, defaults, options);
# 2.建立'獲取每個樓層的jquery物件,以及該樓層滑動到視窗某位置導航高亮的TOP值,點選導航頁面對應樓層滑動到視窗的某位置的TOP值'的函式
function getItem(_list,newOptions){ _list.each(function() { var item = {}; item.$obj = $body.find(this); item.$activeTop = $body.find(this).offset().top - newOptions.activeTop; item.$scrollTop = $body.find(this).offset().top + newOptions.scrollTop; data.push(item); }); }
# 3.建立'滾動監聽函式,同時啟用側邊欄導航高亮顯示'的函式
function scrollActive(_list,newOptions){
var nowScrollTop = $(window).scrollTop();
$.each(data,function(i,item){
if(nowScrollTop > item.$activeTop){
_list.removeClass(newOptions.activeClass).eq(i).addClass(newOptions.activeClass);
}
});
}
# 4.建立'點選啟用側邊欄導航高亮顯示'的函式
function clickActive(_index,newOptions){
$('html,body').animate({'scrollTop' : data[_index].$scrollTop},newOptions.delayTime);
}
# 5.外掛介面的製作
var scroll_floor = window.scrollFloor = function(options){
var newOptions = $.extend({}, defaults, options);
var floorList = $body.find(newOptions.floorClass),navList = $body.find(newOptions.navClass);
getItem(floorList,newOptions);
scrollActive(navList,newOptions);
$(window).bind('scroll',function(){scrollActive(navList,newOptions);});
navList.bind('click',function(){
var _index = $body.find(this).index();
clickActive(_index,newOptions);
});
}
# 6.完整外掛的程式碼
(function(window){
var defaults = {
floorClass : '.scroll-floor',
navClass : '.scroll-nav',
activeClass : 'active',
activeTop : 100,
scrollTop : 100,
delayTime : 200
};
var $body = $('body'),data = [];
function getItem(_list,newOptions){
_list.each(function() {
var item = {};
item.$obj = $body.find(this);
item.$activeTop = $body.find(this).offset().top - newOptions.activeTop;
item.$scrollTop = $body.find(this).offset().top + newOptions.scrollTop;
data.push(item);
});
}
function scrollActive(_list,newOptions){
var nowScrollTop = $(window).scrollTop();
$.each(data,function(i,item){
if(nowScrollTop > item.$activeTop){
_list.removeClass(newOptions.activeClass).eq(i).addClass(newOptions.activeClass);
}
});
}
function clickActive(_index,newOptions){
$('html,body').animate({'scrollTop' : data[_index].$scrollTop},newOptions.delayTime);
}
var scroll_floor = window.scrollFloor = function(options){
var newOptions = $.extend({}, defaults, options);
var floorList = $body.find(newOptions.floorClass),navList = $body.find(newOptions.navClass);
getItem(floorList,newOptions);
scrollActive(navList,newOptions);
$(window).bind('scroll',function(){scrollActive(navList,newOptions);});
navList.bind('click',function(){
var _index = $body.find(this).index();
clickActive(_index,newOptions);
});
}
})(window);
# 7.總結
該外掛參考了會找人web端首頁動畫的js,就是先將所有樓層查找出來,然後將其需要的各個引數放入一個物件,滾動的監聽的時候對該陣列迴圈比對的思路。
思路對一個外掛的製作很重要,就像我開始第一次製作這個外掛的時候,就是將所有樓層的引數放到一個數組,然後對各個區間判斷,這樣就會使問題複雜話,同時還不好控制。
程式設計師的思路很重要,最開始可以很死板的按照步驟來,但是當我們慢慢的進化,就需要不斷的對程式碼優化,每次優化都是一次學習,慢慢的不知不覺就會發現原來你會的雪萊越多。
例如:
if(nowScrollTop > item.$activeTop){
_list.removeClass(newOptions.activeClass).eq(i).addClass(newOptions.activeClass);
}
替換為:
nowScrollTop > item.$activeTop&&_list.removeClass(newOptions.activeClass).eq(i).addClass(newOptions.activeClass);
開始都一樣,但是它培養了我們寫程式碼的習慣,越寫越簡單。不對的地方敬請指正!!!
類似京東(商品----詳情----評論)頁面
wap效果圖:
下載wap的demo:
類似京東首頁樓層
web效果圖:
下載web的demo:
其他
[我的部落格,歡迎交流!](http://rattenking.gitee.io/stone/index.html)
[我的CSDN部落格,歡迎交流!](https://blog.csdn.net/m0_38082783)
[微信小程式專欄](https://blog.csdn.net/column/details/18335.html)
[前端筆記專欄](https://blog.csdn.net/column/details/18321.html)
[微信小程式實現部分高德地圖功能的DEMO下載](http://download.csdn.net/download/m0_38082783/10244082)
[微信小程式實現MUI的部分效果的DEMO下載](http://download.csdn.net/download/m0_38082783/10196944)
[微信小程式實現MUI的GIT專案地址](https://github.com/Rattenking/WXTUI-DEMO)
[微信小程式例項列表](http://blog.csdn.net/m0_38082783/article/details/78853722)
[前端筆記列表](http://blog.csdn.net/m0_38082783/article/details/79208205)
[遊戲列表](http://blog.csdn.net/m0_38082783/article/details/79035621)
相關推薦
側邊欄導航(移動端商品--評論--詳情)隨樓層滑動高亮顯示
接觸前端一年時間,開始還能感覺到自己的進步,隨著時間的推移,開始不知道方向。因為各種前端的框架和外掛在網上都能夠找到現成的,直接下載下來用就好了。 從來不考慮其中的實現原理什麼的,即便是去看了其中的原始碼,也是知其然而不知其所以然。舉一個簡單的例子:去年聖誕公司要求頁面
Bootstrap 側邊欄 導航欄
div post hang gpo 側邊欄 article png inf class http://blog.csdn.net/shangmingchao/article/details/49763351 實測效果圖: Bootstrap 側邊欄 導航欄
vue側邊欄導航,右側顯示對應內容
最終效果 點選下一個導航,上一個導航自動收回 實現程式碼 1.下載vue-router npm install vue-router --save-dev 2.在main.js中引入 import Vue from 'vue' import Router from 'vue
ecshop文章側邊欄導航,自動呼叫文章多級子欄目分類並且當前欄目及父欄目高亮顯示
效果圖 介紹: 一,比如訪問ecshop的國內新聞(上圖沒顯示),及子分類,如山東新聞,臨沂新聞,上海新聞等,都會自動顯示上圖所示的側導航條. 二,另外,如果我訪問子導航,比如居民小區,則平涼新聞的兄弟欄目,父欄目,子欄目,都可以自由設定高亮顯示.而山東新聞及其子欄
【CSS】簡易的頁面側邊欄導航
演示地址:點我 測試程式碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="
封裝Activity基類+側邊欄+導航欄+輪播圖+Async網路請求+Gson解析+多個ViewPage與Fragment=首頁面
1.導包+依賴+Xlistview外掛 compile 'com.google.code.gson:gson:2.2.4' <uses-permission android:name="android.permission.WRITE_EXTERNAL_
基於slideout.js實現的移動端側邊欄滑動特效
HTML5現在本領太大了,PC端已經無法滿足它的胃口了,它將強勢攻入移動端,所以移動端中各種特效也得基於HTML5實現,看看我們將要介紹的slideout.js,能幫我們實現怎麼樣的側邊欄滑動特效呢~~ 先看下執行效果: 一、準備資料 只需要準備s
ecshop 前臺個人中心修改側邊欄 和 側邊欄顯示不全 或 導航現實不全
page alt keyword list() com ade 模板 pla uid 怎麽給個人中心側邊欄加項或者減項 在模板文件default/user_menu.lbi 文件裏添加或者修改,一般看到頁面都會知道怎麽加,怎麽刪,這裏就不啰嗦了 添加一個欄目以
使用autoc js生成文章目錄(側邊)導航欄
獨立 gpo blog sele 支持 ati log type fix 介紹: autocjs 是一個專門用來生成文章目錄(Table of Contents)導航的工具。autocjs 會查找文章指定區域中的所有 h1~h6 的標簽,並自動分析文章的層次結構,生成文
原創文章:使用Jquery+Bootstrap完成導航欄,側邊欄,以及內容頁的切換的功能
用jquery,Bootstrap完成導航欄,側邊欄,以及內容頁的切換的功能,大家必須有html,css,js的基礎,不然案例中的程式碼可能看起來比較吃力,站長先讓大家看效果: html部分程式碼如下: <!DOCTYPE html>
Android系統定製的導航側邊欄
Android手機的導航欄一般都放在底部,導航按鍵包括返回鍵、home鍵、最近任務鍵。而有些Android裝置希望把導航欄放在左右兩邊,也就是改成側邊欄,這時候就需要二次定製開發。首先,把原生的底部導航欄遮蔽掉。然後,通過WindowManager新增懸浮的側邊欄,組合按鍵除
Android學習筆記(四)之碎片化Fragment實現仿人人客戶端的側邊欄
其實一種好的UI佈局,可以使使用者感到更加的親切與方便。最近非常流行的莫過於側邊欄了,其實我也做過很多側邊欄的應用,但是那些側邊欄的使用我都不是很滿意,現在重新整理,重新寫了一個相對來說我比較滿意的側邊欄,其中運用的就是android3.0版本之後新加的Fragme
jquery實現側邊欄手風琴三級導航選單demo
jquery實現側邊欄手風琴三級導航選單 效果圖: 引入檔案,font-awesome為字型庫檔案: <link rel="stylesheet" type="text/css" href="Font-Awesome-3.2.1/css/font-aweso
手機端側邊欄
這幾天雯雯木研究了手機端的側邊欄,和大家分享下,廢話不多說了,上程式碼。 1,頭部引入: <link rel="stylesheet" href="css/drawer.min.css"> <script src="js/jquery.min.js"&g
ionic側邊欄字母導航
$scope.show = function (c) { var y = 0; for (var i = 0; i < $scope.items.length; i++) {
js 分享到側邊欄
htm func line target 判斷 rip mouse get pad <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
WordPress主題開發實例:利用側邊欄工具顯示聯系方式
des dynamic class cat ons eba 廈門市 wordpress .com 利用側邊欄顯示聯系方式是很方便的 一、先開啟側邊欄工具,在functions.php加上 $args = array( ‘name‘ =
自定義video控制欄,移動端可行
ima http請求 ret 需要 max -m etc ssi pau <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>預覽頁
WordPress窗體化側邊欄
什麽 拖拉 bar deb 整理 教程 不用 wid pre 窗體化側邊欄是一個支持 Widget 的側邊欄或者說是窗體化(widgetized)的側邊欄幾乎是 WordPress 主題的標準。 首先,什麽是窗體化(widgetizing)呢?簡單的說,窗體化就是能夠通過拖
側邊欄改成圖標樣式
arrow color 菜單 cnblogs 需求 綁定 :hover display alt 需求如下: 將左側的菜單樣式改成右側的樣式,頁面左下角有一個箭頭,可以來回切換。 首先,先找到代碼,將箭頭添加上,樣式也要相應的加上,接下來就是綁定點擊事件。 我的思路是:寫上