首页 > 代码库 > Ionic 新闻类别菜单
Ionic 新闻类别菜单
1.效果图
2.controller .js
1 .controller("ProductCtrl", function ($scope,$ionicModal,$ionicScrollDelegate,$ionicSlideBoxDelegate,Storage, $state,$ionicLoading) { 2 3 $scope.ProductListData=http://www.mamicode.com/[ 4 {id:0,title:‘推荐‘}, 5 {id:1,title:‘热点‘}, 6 {id:2,title:‘视频‘}, 7 {id:3,title:‘体育‘}, 8 {id:4,title:‘社会‘}, 9 {id:5,title:‘娱乐‘},10 {id:6,title:‘图片‘},11 {id:7,title:‘军事‘},12 ];13 14 $scope.categoryListOtherData=http://www.mamicode.com/ [15 {id:1,title:‘行尸走肉‘},16 {id:2,title:‘金蝉脱壳‘},17 {id:3,title:‘百里挑一‘},18 {id:4,title:‘天上人间‘},19 {id:5,title:‘不吐不快‘}20 ];21 $scope.categoryListMyData=http://www.mamicode.com/[22 {id:6,title:‘金玉满堂‘},23 {id:7,title:‘背水一战‘},24 {id:8,title:‘霸王别姬‘},25 {id:9,title:‘海阔天空‘},26 {id:10,title:‘情非得已‘}27 ];28 $ionicModal.fromTemplateUrl(‘templates/category.html‘, {29 scope: $scope30 }).then(function(modal) {31 $scope.categoryModal = modal;32 });33 34 $scope.openCategoryModal = function() {35 36 $scope.categoryModal.show();37 };38 $scope.closeCategoryModal = function() {39 $scope.categoryModal.hide();40 };41 42 $scope.is_close=false;43 var w=window.innerWidth //获取屏幕的宽度44 || document.documentElement.clientWidth45 || document.body.clientWidth;46 47 $scope.subTitle="";48 $scope.changeTab=function(id){50 angular.forEach($scope.ProductListData, function (data ,index,arry) {52 }53 );54 angular.forEach($scope.ProductListData, function (data ,index,arry) {55 if(data.id==id){56 $scope.subTitle=data.title;57 document.getElementById("but_"+id).className="button button-clear activebutton";58 }else{59 document.getElementById("but_"+data.id).className="button button-clear";60 }61 })62 }63 64 $scope.deltab=function(id){65 delorAdditem($scope.categoryListMyData,id,$scope.categoryListOtherData)66 }67 $scope.addtab=function(id){68 delorAdditem($scope.categoryListOtherData,id,$scope.categoryListMyData)69 }70 var all_cate_width=8; //定义默认的导航数量71 all_cate_width=$scope.categoryListMyData.length;72 $scope.all_cate_width=all_cate_width*30+‘%‘;73 74 var delorAdditem =function(objarry ,id,targetarry){75 angular.forEach(objarry, function (data,index,arry) {76 if(data.id==id){77 targetarry.push(data);78 objarry.splice(index,1);79 }80 })81 }82 });
3.html
<ion-view title="新闻资讯"> <ion-nav-buttons side="left"> <button menu-toggle="left" class="button button-icon icon ion-navicon"></button> </ion-nav-buttons> <div class="bar bar-subheader"> <ion-scroll direction="x" scrollbar-x="false" delegate-handle="s_header" style="width: 100%;margin-right: 5px;"> <div class="button-bar sub_header_catgorylist" id="sub_header_list" style="width:{{all_cate_width}}; "> <a ng-repeat="r in ProductListData" ng-click="changeTab(r.id)" id="but_{{r.id}}" class="button button-clear">{{r.title}}</a> </div> </ion-scroll> <div class="ion-plus subheader_r_icon" ng-click="openCategoryModal($event);"></div></div> <ion-content class="has-subheader"> <div> <h1>{{subTitle}}</h1> </div> </ion-content></ion-view>
<div class="modal"> <ion-header-bar class="bar-positive"> <h1 class="title">我的频道</h1> <div class="buttons"> <i class="icon ion-ios-close-empty" ng-click="closeCategoryModal()"
style="width: 36px; height: 36px; line-height: 36px; text-align: center; font-size: 34px;" /> </div> </ion-header-bar> <ion-content class="category-content"> <div class="category_title"> 我的频道 <span ng-if="!is_close">(点击删除频道)</span> </div> <div class="category_list"> <ion-list ng-class="{‘ion_list_no_rorder‘:!is_close}" > <div ng-if="!is_close"> <ion-item ng-repeat="(key,cate) in categoryListMyData" on-tap="cateChangeTab(cate.id,key)" > {{cate.title}} <div class="float_icon" ng-click="deltab(cate.id)"></div> <ion-delete-button class="ion-minus-circled" ></ion-delete-button> <ion-reorder-button class="ion-navicon" on-reorder="move_item(item,$fromIndex,$toIndex)"></ion-reorder-button> </ion-item> </div> </ion-list> </div> <div ng-if="!is_close" class="category_title"> 点击添加到我的频道 </div> <div ng-if="!is_close" class="category_list"> <ul> <li ng-repeat="(key,cate) in categoryListOtherData" on-tap="addtab(cate.id)"> <a href="javascript:void(0);">{{cate.title}}</a> </li> </ul> </div> </ion-content></div>
4.css
body, .ionic-body{font-family: 微软雅黑, Arial, Helvetica, sans-serif;}.bar .sub_header_list .button.button-clear{ border-bottom: 1px solid #eee;}.sub_header_list .button{ width: 50%; color:#666;}.bar .sub_header_list .button.sub_button_select{ border-bottom:2px solid #387ef5; position:relative;}.bar-subheader{ border-bottom: none;}.red{ color:red;}.comm button{height:32px !important;width:100%;font-size:12px !important;color:#1DACE3 !important;}.subheader_r_icon{ position: absolute; right: 0px; width: 26px; height: 36px; line-height: 38px; top: 0px; text-align: center; background: #fff; color:#666;}.sub_header_catgorylist .button{ width: 25%; color:#8f8f8f;}.sub_header_catgorylist .activebutton{ color:#ff3b30; padding:0 16px;}/********************************类别样式***************************************************/.category-content .category_title{ padding-top: 8px; padding-bottom: 8px; color: #666; padding-left: 3.4%; padding-right: 3.4%; background: #eee;}.category-content .category_title .button{ min-height: 20px; line-height: 20px;}.category-content .category_list ul li{ height: 36px; line-height: 36px; border-color: #b2b2b2; background-color: #f8f8f8; color: #444; display: inline-block; border-width: 1px; border-style: solid; border-radius: 6px; vertical-align: top; text-align: center; text-overflow: ellipsis; font-size: 14px; cursor: pointer; width: 20%; margin-top: 10px; margin-bottom: 10px; margin-left: 3.4%; position: relative;}.category-content .category_list ul li a{ text-decoration:none; color: #444;}.category-content .category_list ul li .close{ position: absolute; left: -5px; top: -5px; width: 12px; height: 12px; line-height: 12px; border-radius: 12px; color: #fff; background: #222222; font-size: 12px;}.category-content .category_list .ion_list_no_rorder ion-item{ height: 36px; line-height: 36px; border-color: #b2b2b2; background-color: #f8f8f8; color: #444; display: inline-block; border-width: 1px; border-style: solid; border-radius: 6px; vertical-align: top; text-align: center; text-overflow: ellipsis; font-size: 14px; cursor: pointer; width: 20%; margin-top: 10px; margin-bottom: 10px; margin-left: 3.4%; position: relative;}.category-content .category_list .ion_list_no_rorder ion-item a{ text-decoration:none; color: #444;}.category-content .category_list .ion_list_no_rorder ion-item .close{ position: absolute; left: -5px; top: -5px; width: 12px; height: 12px; line-height: 12px; border-radius: 12px; color: #fff; background: #222222; font-size: 12px;}.ion_list_no_rorder .item-complex .item-content,.ion_list_no_rorder .item-radio .item-content{ padding: 0px;}.float_icon{ position:absolute; width:16px; height: 16px; border: 0px solid #6b46e5; float:right; z-index:100; right:0;/* 定位到右上 */ top:0; background-image: url(‘../img/sc.png‘);}/********************************类别样式***************************************************/
5.如果无法用手指滚动,需要配置app config 配置:
$ionicConfigProvider.scrolling.jsScrolling(true); 1.2++之后都向原生方向发展,所有没有滚动了
Ionic 新闻类别菜单
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。