ionic4.x |
您所在的位置:网站首页 › 咋下载京东购物商城 › ionic4.x |
文章目录
上传码云搭建项目,增加tab4,并修改tab样式android和ios配置统一样式添加全局样式和remsearch模块布局第三方字体图标icon
轮播图猜你喜欢(可滑动的推荐商品列表)商品列表商品分类购物车页面用户中心头部用户信息用户信息列表
ionic项目的真机调试:电脑联手机演示点击search调到search页面(共用的)search的详情页面固定的二级导航修改组件的默认样式:
登录页面注册页面ion-item有默认的样式,需要自己调整一下才能左右对齐
封装接口商品分类接口联调商品分类-第三分类页面商品分类-第三分类页面-排序search页面同样的问题历史记录添加历史记录删除历史记录
商品详情注册页面登录功能账号密码:设置页面添加到购物车功能属性选择数量选择添加到购物车
功能:
首页、分类、购物车、我的
上传码云
git remote add origin https://gitee.com/lkp_ksbk/ionic_jd_shop.git
git push -u origin master
搭建项目,增加tab4,并修改tab样式
ionic start jdshop tabs // 搭建项目
ionic g page tab4 // 第四个tab页面
添加上tab4,然后修改tab的文字和icon。 首页:home、分类:shirt、购物车: cart、 我的:settings 修改tab的颜色: 1.使用自定义主题色的方法,并没有改变tab的选中颜色,所以不行。 2.修改某一类组件的颜色(ion-tab-button)。css properties .ion-color-tabs { --ion-color-base: #69bb7b; --ion-color-base-rgb: 105,187,123; --ion-color-contrast: #ffffff; --ion-color-contrast-rgb: 255,255,255; --ion-color-shade: #5ca56c; --ion-color-tint: #78c288; } // 可以把base和contrast的颜色做一个调换,那么背景是白色的,只是选中和非选中只有一点色差,不是那种选中红,不选中黑的状态。 // 修改底部图标的选中颜色以及默认颜色 ion-tab-button{ --color:#8C8E8C; --color-selected:#F53D3D; } android和ios配置统一样式默认:android和ios是两套不一样的样式。 app.module.ts: IonicModule.forRoot() // forRoot可以配置参数。可以配置很多,自己进去看看,eg:backButtonIcon,animated,menuIcon,menuType等等。 IonicModule.forRoot({ mode:'ios', // 都是ios样式 backButtonText:'返回' // 返回按钮,默认是汉字,不是back了。 }), 添加全局样式和remglobal.scss和variables.scss中都行。 /*自定义的全局css样式*/ body, div, ul, li, ol, h1, h2, h3, h4, h5, h6, input, textarea, select, p, dl, dt, dd, a, img, button, form, table, th, tr, td, tbody, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { margin: 0; padding: 0; } html { font-size: 62.5%; // 浏览器的默认字体大小是16px 16*62.5%=10px } .clearfix { &::after { display: block; content: ""; height: 0px; clear: both; } } ul, ol { list-style-type: none; } search模块布局 第三方字体图标iconeg:iconfont 选中icon下载,然后选择颜色和大小及格式,即可。eg:下载png格式,我们就可以使用iconfont的图标了。 search:扫码和消息icon。 search:i-searchbar 消息提示icon:i-badge。 9 // badge需要定位一下,且container需要给一个padding,那么就能对齐了。 轮播图图片: /** * 轮播图 第一次滑动轮播图的时候,会有一个白色背景的问题,应该是图片不知道h,所以触发的 */ public slidesList = []; getSlidesList() { for (let i = 1; i (ionSlideTouchEnd)="slideTouchEnd()" //手动滑动完成 slideTouchEnd(){ this.slide1.startAutoplay(); } ion-slide{ ion-slides { height: 15rem; ion-slide { width: 100%; height: 100%; overflow: hidden; img{ width: 100%; height: 100%; } } }pager:是否显示分页。 猜你喜欢(可滑动的推荐商品列表) for(var i=1;i网络>高级>TCP/IP>IPv4地址。 电脑联手机演示360手机助手(手机演示) 问题: 1.轮播图没有铺满,所以有问题;(w100%即可) 2.fontsize:62.5%,所以没有设置fz的时候,都是12*62.5=10px;浏览器最小12所以觉得没问题,但是手机上就不行了。 // global.css中设置: body { font-size: 1.4rem; } 点击search调到search页面(共用的)tap事件为什么又不可用了?需要安装hammer.js??我写成click事件了… 安装了hammer也不能使用tap? constructor( public router: Router, public navCtrl: NavController ) {} // 使用Router跳转 // this.router.navigate(['/search']); // 使用NavController跳转 this.navCtrl.navigateForward('/search'); search的详情页面点击返回的时候,返回首页或者分类页面,说明: search详情页面不是一个单独的页面,跟search是同一个页面。 固定的二级导航header中再来一个i-toolbar即可。固定在头部的。 修改组件的默认样式: // 二级导航 ion-toolbar.sub_header{ display: flex; // 没有display的属性,所以不能修改;如果想修改,包一层div background: red; // 不起作用 --background:red; // 正确的修改组件样式 .sub_title{ flex:1; } }i-item默认一行就…显示了,有时候不需要这样式。 登录页面toobar下面的底边线要去掉; toolbar有border-color属性,没有border属性;我们修改border-color颜色即可。 忘记密码和用户注册布局:可以使用flex左右布局,也可以直接使用slot的方法。 忘记密码 用户注册 注册页面功能(三个独立的页面):输入手机号,发送验证码,输入密码。 NavController:back,navigateBack,navigateForward,navigateRoot, input框: 原生input是行内元素; ion-input是块级元素;padding-left:0; ion-input { border: 1px solid #ccc; width: 80%; height: 3.2rem; margin: 2rem auto; // 块级元素 --padding-start: .6rem; // 给一个左padding } ion-item有默认的样式,需要自己调整一下才能左右对齐 --padding-start --padding-end封装接口 接口地址:https://www.itying.com/article-11.html 轮播图:http://jd.itying.com/api/focus 猜你推荐:http://jd.itying.com/api/plist?is_hot=1&pageSize=20&page=1 热门推荐:http://jd.itying.com/api/plist?is_best=1&pageSize=20&page=1 ionic g service services/httpHttpClientModule和HttpClient 调用接口,渲染数据。 商品分类接口联调一级分类(左侧): http://jd.itying.com/api/pcate 二级分类(右侧): http://jd.itying.com/api/pcate?pid=59f1e1ada1da8b15d42234e9 商品分类-第三分类页面第三分类:http://jd.itying.com/api/plist 参数: cid:第二分类的id。 search:模糊搜索的内容。 page:page pageSize:size sort:排序; 综合:all,销量:sales,价格:price 1.价格:sort=price_1 或者 sort=price_-1 2.销量:salecount_1salecount_-1 3.综合:all 功能: 1.上拉加载更多 2.下拉刷新 3.排序 商品分类-第三分类页面-排序问题: 1.切换tab的时候,页面没有滚动到最顶部 2.加入tab1滚动到最底部,已经禁用上拉加载更多了,切换到tab2的时候,需要放开该功能。 3.升序和降序都要做。(功能已经实现,可以加上向上或者向下的箭头,完成页面) // 获取ion-content,让它滚动到顶部 @ViewChild(IonContent) ionContent: IonContent; // 也可以给ion-content用id,用id的方式获取(dom操作:#productListContent) this.ionContent.scrollToTop(0); /*回到顶部*/ @ViewChild('productListScroll') productListScroll: any; this.productListScroll.disabled = false; // 恢复上拉加载更多功能 // 升序和降序:每次点击后,改变sort的值,那么再次点击就已经改变了。 this.navList[id - 1].sort = this.navList[id - 1].sort * -1; // 升序和降序:改变sort的值。注:在做箭头排序的时候,title的样式(颜色)影响了内部icon的颜色,所以一直在做上下判断的时候,不起作用。 .sub_title.active { background: #eee; span { color: #f40; // 只给title加样式;icon自己单独加 } // color: #f40; // 会影响到箭头的颜色 } search页面同样的问题1.清空list 2.重置page 3.滚动到顶部 4.放开infinite-scroll的限制。 历史记录storageService: ionic g service services/storage 添加历史记录 删除历史记录 商品详情 注册页面1.封装了post的请求。 2.发送验证码 3.倒计时 4.验证验证码 5.注册 登录功能1.登录功能 2.订阅 3.生命周期 ngOnInit只有刷新的时候执行了一次,来回切换tab的时候,这个生命周期函数不执行了!!! 为什么??? 如果切换tab每次都执行生命周期函数的话,那么会一直调用接口,不太好,所以有缓存的。 所以,不用angualr的生命周期函数,用ionic的生命周期函数。生命周期函数: // enter:在tab切换或者第一此执行会触发,在login页面返回没有触发: // leave:在login页面返回时触发了 ionViewWillEnter:当进入一个页面时触发(如果它从堆栈返回) ionViewDidEnter:进入后触发 ionViewWillLeave:如果页面将离开触发 ionViewDidLeave:在页面离开后触发 ionViewWillUnload:页面卸载的时候会触发,如果无法触发使用 ngOnDestroy注:tab4切换到login页面的时候,tab4没有卸载掉,只是push了login页面进去,所以返回的时候,没有执行enter的事件。为了运行速度。 EventEmitter npm搜索,发现: eventemitter很少下载量,eventemitter3下载很多,说明现在用eventemitter3的比较多。github:https://github.com/primus/eventemitter3使用: // 安装配置 EventEmitter npm install --save eventemitter3 ionic g service services/event // src/app/services/event.service.ts import { Injectable } from '@angular/core'; import { EventEmitter } from 'eventemitter3'; @Injectable({ providedIn: 'root' }) export class EventService { public eventEmit: any; constructor() { // 定义发射事件 // 这个实例,被多个组件共享,来实现数据在不同页面之间的共享 this.eventEmit = new EventEmitter(); } } // 登录页面发出广播: this.envetService.eventEmit.emit('userInfo', '登录了吗?哈哈' ); // 接收页面接收广播 on默认不触发,只有发出广播后,才会触发。 // 监听事件 eventEmit:是自定义的名字。 this.eventService.eventEmit.on('userInfo', params => { console.log('tab4-订阅事件的params:', params); }); 账号密码:注册的时候,验证码在后端接口有返回。 已注册密码: 123/123 admin/admin root/root 设置页面 ionic g page personal 更改用户信息:生日、性别等退出登录 清空storage,然后发布广播,回到setting页面。slot的使用,可以自动放在末尾: 头像 添加到购物车功能 属性选择 课程里的方法:js原生方法:事件委托: /** * 选择属性 */ changeAttr(e) { console.log('事件对象e:', e); console.log('事件对象e.srcElement:', e.srcElement); console.log('事件对象e.srcElement.nodeName:',e.srcElement.nodeName); // SPAN 大写标签名 console.log('事件对象e.srcElement.className:',e.srcElement.className); // attr_cont if (e.srcElement.className.indexOf('attr_cont') > -1) { console.log('点击了某一条attr'); const ele = e.srcElement; // 获取当前dom节点 // 获取父节点 const parentEle = ele.parentNode; // 所有子节点 const childrenEle = parentEle.children; console.log('所有子节点:', childrenEle); // childrenEle.forEach((v,k)=>{ // v.removeClassName('active'); // }) // 所有节点去掉active的类名 for (let i = 0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |