最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS仿蘋果滑屏刪除控件

 更新時間:2016年01月18日 10:37:28   投稿:mrr  
前端開發(fā)中,為了對列表項進行快捷操作,有時就添個按鈕來簡單實現(xiàn)。但是,有時會發(fā)現(xiàn)按鈕影響美觀,甚至影響列表行的布局。稍在網上搜索無果,而寫此仿蘋果滑屏刪除控件

AngularJs被用來開發(fā)單頁面應用程序(SPA),利用AJAX調用配合頁面的局部刷新,可以減少頁面跳轉,從而獲得更好的用戶體驗。Angular的ngView及其對應的強大路由機制,是實現(xiàn)SPA應用的核心模塊。本文所說的頁面切換指的就是這個路由機制,即根據不同的url展示不同的視圖。

前端開發(fā)中,為了對列表項進行快捷操作,有時就添個按鈕來簡單實現(xiàn)。但是,有時會發(fā)現(xiàn)按鈕影響美觀,甚至影響列表行的布局。稍在網上搜索無果,而寫此仿蘋果滑屏刪除控件。

依賴項:angularJS、jQuery

測試瀏覽器:Chrome、IE11、手機瀏覽器

原先列表項代碼:

<div class="row-class" ng-repeat="item in list">
這是整行顯示的內容
</div>

開發(fā)目標:

<div class="row-class" ng-repeat="item in list" slide-delete text="刪除" ondelete="ondelete(item)">
這是整行顯示的內容
</div>

首先,要寫個angular指令:

myapp.directive('slideDelete', function() {
return {
restrict: 'AE',
scope: {
text: "@",
ondelete: "&"
},
link: function (scope, element, attrs) {
var w = $(element).outerWidth ();//應顯示的寬度
var h = $(element).outerHeight();//應顯示的高度
//按鈕寬度
var btn_w = 60;
//設計按鈕:
scope.btn = $('<div style="position:absolute;z-index:5998;right:0;top:0;width:'+btn_w+'px;height:'+h+'px;color:#fff;background-color:#900;text-align:center;padding-top:10px">'+(scope.text||'刪除')+'</div>');
//改造行,用一個絕對定位div將內容包裹起來
$(element).contents().wrapAll('<div new_box style="position:absolute;z-index:5999;left:0;top:0;width:'+w+'px;height:'+h+'px;background-color:#fff;"></div>');
//添加按鈕:
$(element).css({overflow:"hidden", position:"relative", "z-index":5999}).append(scope.btn)
//滑屏功能
.slideable({
getLeft: function(self){return self.children(":first-child").position().left;},
setLeft: function(self, x){ self.children(":first-child").css({left: x<-btn_w && -btn_w || x<0 && x || 0});},
onslide: function(self, x){
scope.open = x < -btn_w / 2;
self.css("z-index", scope.open && 6001 || 5999);
//背景,點擊收起
var bk = $.fixedBackground(6000, scope.open);
scope.open && bk.data("self", self).click(function(){
var self = bk.data("self");
$.fixedBackground(6000, false);
self && self.css("z-index", 5999).children(":first-child").animate({left: 0},100);
});
self.children(":first-child").animate({left: scope.open ? -btn_w : 0},100);
}
})
//按鈕事件
scope.btn.click(function(){
scope.ondelete && scope.ondelete();
$.fixedBackground(6000, 1).click();//關閉背景
});
}
};
});

再寫個滑屏事件類,當然要兼容鼠標

(function($){
$.fn.slideable = function(options){
var self = this;
self.options = options;
self.left = 0;
self.down = 0;
self.pressed = false;
self.bindobj = options.bindobj || self;
self.bindobj.bind("mousedown",function(event){ onmousedown(self, event); })
self.bindobj.bind("mousemove",function(event){ onmousemove(self, event); })
self.bindobj.bind("mouseup" ,function(event){ onmouseup (self, event); })
self.bindobj[0].addEventListener('touchstart', function(event) { onmousedown(self, {screenX: event.changedTouches[0].pageX}); })
self.bindobj[0].addEventListener('touchmove' , function(event) { onmousemove(self, {screenX: event.changedTouches[0].pageX}); })
self.bindobj[0].addEventListener('touchend' , function(event) { onmouseup (self, {screenX: event.changedTouches[0].pageX}); })
return this;
}
function onmousedown(self, event){
self.down = event.screenX;
self.options.onmousedown && self.options.onmousedown(self);
self.left = self.options.getLeft && self.options.getLeft(self) || 0;
self.pressed = true;
}
function onmousemove(self, event){
self.pressed && self.options.setLeft && self.options.setLeft(self, self.left + event.screenX - self.down);
}
function onmouseup(self, event){
self.pressed = false;
self.left += event.screenX - self.down;
self.options.onslide && self.options.onslide(self, self.left);
}
//背景功能
$.fixedBackground = function(z_index, b_show){
var bk = $('#fixed-background-'+z_index+'');
if(!b_show)return bk && bk.remove();
if(!(bk && bk.length>0)){
bk = $('<div id="fixed-background-'+z_index+'" style="position:fixed;z-index:'+z_index+';left:0;top:0;right:0;bottom:0;background-color:rgba(0,0,0,0)">');
$("body").append(bk);
}
return bk;
}
})(jQuery);

關于上述代碼給大家介紹的AngularJS仿蘋果滑屏刪除控件的相關代碼,都是小編測試過的,可以放心安全使用。

相關文章

  • 什么是 AngularJS?AngularJS簡介

    什么是 AngularJS?AngularJS簡介

    這篇文章主要介紹了什么是 AngularJS?AngularJS簡介,本文講解了AngularJS方方面面的基礎知識,AngularJS 是一個為動態(tài)WEB應用設計的結構框架。它能讓你使用HTML作為模板語言,通過擴展HTML的語法,讓你能更清楚、簡潔地構建你的應用組件,需要的朋友可以參考下
    2014-12-12
  • Angular 4依賴注入學習教程之FactoryProvider配置依賴對象(五)

    Angular 4依賴注入學習教程之FactoryProvider配置依賴對象(五)

    這篇文章主要給大家介紹了關于Angular 4依賴注入之FactoryProvider配置依賴對象的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Angular2 (RC5) 路由與導航詳解

    Angular2 (RC5) 路由與導航詳解

    這篇文章主要介紹了Angular2 (RC5) 路由與導航的相關資料,需要的朋友可以參考下
    2016-09-09
  • AngularJS輕松實現(xiàn)雙擊排序的功能

    AngularJS輕松實現(xiàn)雙擊排序的功能

    網上已經有AngularJS比較多的相關教程了,那么這篇文章我們一起來看一個AngularJS雙擊排序的例子,對大家日常開發(fā)很有幫助的,有需要的可以參考借鑒。
    2016-08-08
  • Angular開發(fā)者指南之入門介紹

    Angular開發(fā)者指南之入門介紹

    本篇文章主要介紹了Angular開發(fā)者指南的入門知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 淺談Angular文字折疊展開組件的原理分析

    淺談Angular文字折疊展開組件的原理分析

    本篇文章主要介紹了淺談Angular文字折疊展開組件的原理分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • AngularJS常見過濾器用法實例總結

    AngularJS常見過濾器用法實例總結

    這篇文章主要介紹了AngularJS常見過濾器用法,結合實例形式總結分析了AngularJS大小寫過濾器、貨幣過濾器、日期過濾器、limitTo過濾器、orderBy過濾器及自定義過濾器使用方法,需要的朋友可以參考下
    2017-07-07
  • Angularjs Ng_repeat中實現(xiàn)復選框選中并顯示不同的樣式方法

    Angularjs Ng_repeat中實現(xiàn)復選框選中并顯示不同的樣式方法

    今天小編就為大家分享一篇Angularjs Ng_repeat中實現(xiàn)復選框選中并顯示不同的樣式方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • AngularJS中ng-options實現(xiàn)下拉列表的數據綁定方法

    AngularJS中ng-options實現(xiàn)下拉列表的數據綁定方法

    今天小編就為大家分享一篇AngularJS中ng-options實現(xiàn)下拉列表的數據綁定方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • AngularJS表單詳解及示例代碼

    AngularJS表單詳解及示例代碼

    本文主要介紹AngularJS表單的知識,這里整理了表單的基礎知識和簡單的示例代碼,有需要的小伙伴可以參考下
    2016-08-08

最新評論

盱眙县| 安阳市| 六枝特区| 阜康市| 郓城县| 且末县| 开鲁县| 林甸县| 霍山县| 四子王旗| 宜春市| 石首市| 沂南县| 三穗县| 衡山县| 亳州市| 油尖旺区| 商城县| 高邑县| 老河口市| 蚌埠市| 大新县| 朝阳区| 金溪县| 宣威市| 西藏| 洛宁县| 四会市| 仪陇县| 顺义区| 鄯善县| 融水| 喀什市| 区。| 陵川县| 浦城县| 日照市| 长宁区| 离岛区| 屯昌县| 贵溪市|