效果图:
代码实现 (其中使用了ionic框架。。。)
html 代码: <ion-content class=‘page-location‘> <div class=‘AZLists A‘> <div class=‘AZLists-title‘>A</div> .............. </div> <div class=‘AZLists B‘> <div class=‘AZLists-title‘>B</div> .............. </div> ....... </ion-content> 此部分代码可以用ng-repeat写 <div class=‘a-lists‘> <div ng-repeat=‘n in navItem‘ > <p class=‘{{n}}-nav-item‘>{{n}}</p> </div> </div> <div class=‘pop-AZ‘></div>
css 代码 .a-lists{ position: fixed; width:25px; margin:0 auto; background-color:transparent; padding-top:5px; padding-bottom:5px; right:0;top:100px; z-index:100; } .a-lists p{ margin:0;padding:0; font-size:8px; text-align: center; color:#444; line-height: 14px; } .AZLists-title{ width:100%; height:20px; background-color: #ddd; color:#444; line-height: 20px } .pop-AZ{ width:60px; height:60px; border-radius: 4px; background-color: rgba(0,0,0,.5); color:#FFF; font-size:24px; z-index:101; line-height:60px; text-align: center; position: fixed; margin-left:-30px; left:50%; top:{{popAZTop}}; display: none; }
js 代码
$scope.popAZTop=(window.innerHeight/2-30)+‘px‘; var _items=[]; for(var k=0;k<26;k++){ _items[k]=String.fromCharCode(65+k); } $scope.navItem=_items; setTimeout(function(){ for(var i=0;i<_items.length;i++){ var _azitem=document.querySelector(‘.‘+_items[i]+‘-nav-item‘); _azitem.addEventListener(‘touchstart‘,function(e){ $(‘.a-lists‘).css(‘background-color‘,‘#ddd‘); var _tip=$(this).text(); if($(‘.‘+_tip).offset()!==undefined){ var _scrolltop =$(‘.‘+_tip).offset().top-$(‘.A‘).offset().top; $(‘ion-content‘).animate({ scrollTop: _scrolltop},1 ); } $(‘.pop-AZ‘).css(‘display‘,‘block‘); $(‘.pop-AZ‘).empty().html(_tip); }) _azitem.addEventListener(‘touchmove‘,function(e){ e.preventDefault(); var touch=e.targetTouches[0]; var _item=parseInt((touch.pageY-100)/14) if(_item>=_items.length){ _item=(_items.length-1); }else if(_item<0){ _item=0; } var event = document.createEvent(‘Events‘); event.initEvent(‘touchstart‘, true, true); document.querySelector(‘.‘+_items[_item]+‘-nav-item‘).dispatchEvent(event); $(‘.pop-AZ‘).css(‘display‘,‘block‘); $(‘.pop-AZ‘).empty().append(_items[_item]); }) _azitem.addEventListener(‘touchend‘,function(e){ e.preventDefault(); $(‘.a-lists‘).css(‘background-color‘,‘transparent‘); $(‘.pop-AZ‘).css(‘display‘,‘none‘); }) } },200);
着笔匆忙,仅实现原理,没有封装成插件!代码也显粗糙~
时间: 2024-10-07 12:14:17