zoukankan      html  css  js  c++  java
  • Ionic 新闻类别菜单

    1.效果图

     

    2.controller .js

     1 .controller("ProductCtrl", function ($scope,$ionicModal,$ionicScrollDelegate,$ionicSlideBoxDelegate,Storage, $state,$ionicLoading) {
     2 
     3      $scope.ProductListData=[
     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= [
    15       {id:1,title:'行尸走肉'},
    16       {id:2,title:'金蝉脱壳'},
    17       {id:3,title:'百里挑一'},
    18       {id:4,title:'天上人间'},
    19       {id:5,title:'不吐不快'}
    20     ];
    21     $scope.categoryListMyData=[
    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: $scope
    30     }).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.clientWidth
    45       || 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=" 100%;margin-right: 5px;">
          <div class="button-bar sub_header_catgorylist" id="sub_header_list"   style="{{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
    =" 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++之后都向原生方向发展,所有没有滚动了
  • 相关阅读:
    I方法怎么不能获取多选框的数据
    html checkbox多选框语法与结构
    你真的了解new function(){} 和 function(){}()吗?
    适配方案(六)适配的基础知识之页面中那些内容需要适配
    适配方案(五)适配的基础知识之设备像素比 dpr 与 1px 物理像素
    适配方案(四)适配的基础知识之单位、分辨率、viewport
    onreadystatechange和onload区别分析以及如何判断script是否加载状态
    WebFont技术使用之如何在app中使用自定义字体
    服务端相关知识学习(六)Zookeeper client
    服务端相关知识学习(五)之Zookeeper leader选举
  • 原文地址:https://www.cnblogs.com/linsu/p/5839813.html
Copyright © 2011-2022 走看看