Ionic4—案例(二)

本文介绍如何使用Ionic框架实现九宫格布局和页面内嵌表格,包括响应式设计、固定标题行和自定义样式。通过具体代码示例,展示了布局组件的结构、样式设置及数据绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、九宫格布局

二、页面内嵌入表格   


一、九宫格布局

<ion-content>
    <div class="img">
        业&nbsp;&nbsp;务&nbsp;&nbsp;审&nbsp;&nbsp;批
    </div>
    <ion-grid>
        <ion-row>
            <ion-col size="4" *ngFor="let item of menuList" (click)="goChild(item.router)">
                <div class="wrap">
                    <ion-badge color="danger" class="badge" *ngIf="totalList[item.id] > 0">
                        {{totalList[item.id]}}
                    </ion-badge>
                    <ion-img [src]="item.pic"></ion-img>
                    <p>{{item.title}}</p>
                </div>
            </ion-col>
        </ion-row>
    </ion-grid>
</ion-content>
ion-content {
    .img {
        height: 18.8rem;
        line-height: 16.5rem;
        background: url(/https/llljpf.blog.csdn.net/assets/north_img/bg_sp.png) no-repeat center center/101% 100%;
        background-position-y: -.2rem;
        text-align: center;
        color: #F1F1F2;
        font-size: 2.5rem;
    }
    ion-grid {
        position: absolute;
        bottom: 0;
        top: 14.8rem;
        right: 0;
        left: 0;
        ion-row {
            ion-col {
                padding-top: 0;
                padding-bottom: 0;
                text-align: center;
                .wrap {
                    position: relative;
                    margin: 0 auto;
                    p {
                        text-align: center;
                        position: relative;
                        top: -1rem;
                        left: -.3rem;
                        font-size: 1.3rem;
                        // font-family: var(--ion-font-bold);
                        font-weight: bold;
                        color: rgba(51, 51, 51, 1);
                    }
                }
            }
        }
    }
}

@media all and (min-width: 300px) and (max-width: 340px) {
    .badge {
        position: absolute;
        top: 10%;
        right: 4%;
    }
    p {
        font-size: 1.1rem !important;
    }
}

@media all and (min-width: 340px) and (max-width: 400px) {
    .badge {
        position: absolute;
        top: 14%;
        right: 8%;
    }
}

@media all and (min-width: 400px) and (max-width: 450px) {
    .badge {
        position: absolute;
        top: 15%;
        right: 12%;
    }
}

@media all and (min-width: 470px) and (max-width: 550px) {
    .badge {
        position: absolute;
        top: 16%;
        right: 15%;
    }
    p {
        font-size: 1.5rem !important;
    }
}

@media all and (min-width: 600px) and (max-width: 900px) {
    .badge {
        position: absolute;
        top: 20%;
        right: 20%;
    }
    p {
        font-size: 2rem !important;
    }
}

@media all and (min-width: 950px) {
    .badge {
        position: absolute;
        top: 22%;
        right: 22%;
    }
    p {
        font-size: 2rem !important;
    }
}
// 待办数量
public totalList = {
    menu0: 0,
    menu1: 0,
    menu2: 0,
    menu3: 0,
    menu4: 0,
    menu5: 0,
    menu6: 0,
    menu7: 0,
    menu8: 0
};
// 九宫格数据
public menuList: any[] = [
    { id: 'menu0',  router: '', pic: '/assets/north_img/nine_1.png', title: 'xxxx'},
    { id: 'menu1',  router: '', pic: '/assets/north_img/nine_2.png', title: 'xxxx'},
    { id: 'menu2',  router: '', pic: '/assets/north_img/nine_3.png', title: 'xxxx'},
    { id: 'menu3',  router: '', pic: '/assets/north_img/nine_4.png', title: 'xxxx'},
    { id: 'menu4',  router: '', pic: '/assets/north_img/nine_5.png', title: 'xxxx'},
    { id: 'menu5',  router: '', pic: '/assets/north_img/nine_6.png', title: 'xxxx'},
    { id: 'menu6',  router: '', pic: '/assets/north_img/nine_7.png', title: 'xxxx'},
    { id: 'menu7',  router: '', pic: '/assets/north_img/nine_8.png', title: 'xxxx'},
    { id: 'menu8',  router: '', pic: '/assets/north_img/nine_9.png', title: 'xxxx'}
];

                                                   

二、页面内嵌入表格   

页面内嵌入表格,点击表格内部上下滑动时,标题行固定,左右滑动时,标题行跟随移动。

第一步:html模板

<ion-content>
    <div class="div-grid">
        <ul class="ul-title">
            <li class="col0">序号</li>
            <li class="col1">xxx</li>
            <li class="col2">xxxx</li>
            <li class="col3">xx</li>
            <li class="col4">xxxx</li>
        </ul>
        <div class="wrap-cont-div">
            <ul class="ul-content" *ngFor="let item of list; let i = index">
                <li class="col0">{{ i + 1}}</li>
                <li class="col1">{{item.cols1}}</li>
                <li class="col2">{{item.cols2}}</li>
                <li class="col3">{{item.cols3}}</li>
                <li class="col4">{{item.cols4}}</li>
            </ul>
        </div>
    </div>
</ion-content>

第二步:SASS样式

样式分为两类,第一类为公共的固定样式,不用修改。第二类为可自定义样式,主要用于不同场景调整表格高度、单元格最小高度和列宽。

第一类

.div-grid {
    overflow-x: auto;
    border-bottom: solid 1px #DCDCDC;
    margin-left: -1px;
    font-size: 14px;
    // 表头和内容公共样式
    ul {
        list-style: none;
        padding: 0;
        margin: 0;
        white-space: nowrap !important; // 使表头不换行
        li {
            white-space: normal !important; // 使li内文字换行
            border-left: solid 1px #DCDCDC;
            border-top: solid 1px #DCDCDC;
        }
    }
    // 第一部分:表头
    .ul-title {
        margin-bottom: -1px;
        li {
            border-bottom: solid 1px #DCDCDC;
            height: 40px; // 修改表头高度
            line-height: 40px;
            text-align: center;
            display: inline-block;
            background-color: #E6F3FC;
            color: #3D96FA;
        }
    }
    // 第二部分:内容
    .wrap-cont-div {
        overflow-y: auto;
        overflow-x: hidden;
        width: fit-content;
        max-height: calc(100vh - 40px); // 内容区域总高度减去表头高度
        .ul-content {
            display: flex;
            li {
                display: flex !important;
                padding: 5px;
                min-height: 40px; // 内容行默认高度
            }
        }
    }
    // 序号列
    .col0 {
        width: 60px;
        justify-content: center;
        align-items: center;
    }
}

第二类

// 自定义

// .wrap-cont-div {
//     max-height: calc(100vh - 40px) !important; // 内容区域总高度减去表头高度
//     li {
//         min-height: 40px !important; // 内容行高度
//     }
// }

.col1,
.col2,
.col3,
.col4 {
    width: 200px;
}

第三步:TS文件

public list = [
    {cols1: '的发货单号发士大夫活动结束访华的发货单号', cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4},
    {cols1: 1, cols2: 2, cols3: 3, cols4: 4}
];

第四步:效果图

                                               

 

IONIC 功能全演示 ===================== - 使用Ionic提供的UI 组件。Ionic本身是致力于建立统一的移动混合app构建平台,核心基础是Angular+Cordova。 - 通过Angular指令封装,以及预定义的CSS,提供了开箱即用的HTML5 Mobile组件。 - 构建与开发支持,能够直接运行www目录下的index.html进行开发调试。同时也支持发布人员利用gulp构建输出到dist目录 - 利用gulp,同样演示了单元测试以及场景测试。 - [在线演示,内有地址维码,可手机浏览](http://1.thm1118.sinaapp.com/static/ionic/www/index.html) ## 预览 ![信息卡片](screenshot/card.png) ![下拉刷新](screenshot/pullrefress.png) ![表单元素](screenshot/form.png) ![菜单](screenshot/menu.png) ![列表左滑按钮](screenshot/option.png) ![弹出层](screenshot/pop.png) ![tab](screenshot/tab.png) ![幻灯](screenshot/slide.png) ![图片水平滚动](screenshot/hscroll.png) ![毛玻璃效果](screenshot/blure.png) ![2000条数据搜索](screenshot/search.png) ![输入自动完成](screenshot/autocomplete.png) ![列表自动分组](screenshot/autogroup.png) ![媒体相册](screenshot/galaxy.png) ![chartjs统计图](screenshot/chartjs.png) ![百度统计图](screenshot/echat.png) ![图片延时加载](screenshot/imageload.png) ## 基础环境 纯webapp运行或演示,只需要一个 web server部署即可。 ## 目录结构说明 - www 目录:源码目录 - dist目录:构建输出目录 ## 利于开发,测试和打包部署的nodejs环境 简单开发可以不依赖nodejs环境。但是有了基于nodejs的javascript完整开发周期环境,会极大提升开发效率,保障质量。 - nodejs 最新版。 - 有些node包的安装需要c++编译,x86版本只需要 x86的C++编译器,windows上的x64 c++编译器需要特别设置。 - npm 会很慢,要么使用代理,要么使用国内镜像,比如 [淘宝镜像](http://npm.taobao.org/) , 使用淘宝镜像后,npm命令需要替换成cnpm命令。 - `npm install -g gulp` - `npm install -g ionic` - 如需编译sass的话,安装 [ruby](https://www.ruby-lang.org/zh_cn/),再执行 `gem install sass`(如遇到ssl错误,修改为http源:gem source -a http://rubygems.org/) - `npm install -g node-gyp` - 有的node包依赖python编译,安装 [python2.7](https://www.python.org/) - c++编译环境[MSVStudio 免费版](https://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop).。注意根据studio不同版本指定 --msvs_version=2013 选项 - 安装项目开发依赖包,在项目根目录下运行 `npm install` ### “所见即所得”式开发 - 在项目根目录下运行 `ionic serve`,即可在www目录下开展“所见即所得”的方式开发 - 另外一种方式,在webstorm里对index.html 按debug运行,同样是“所见即所得”的方式开发 ### CROS支持 - 生产环境的 CROS支持要么使用jsonp技术,要么在服务端设置代理。 - 而开发环境下要么 基于不安全做法,服务端api 设置头`Access-Control-Allow-Origin:*" `,要么按如下便捷设置: 基于`ionic serve`, 可以在开发时使用本地代理。ionic.project 内设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值