注意:
- 点击微信开发工具右上角"详情" ,查看项目信息:本地代码的大小是不能超过2兆的(2兆就是2mb(兆字节) = 2048 kb(千字节),所以我们的大图片都不存本地,我们可以弄个在线库 或者弄个图片平台
- 微信里一般icon图标我们存在本地,图片我们不存本地,用线上的图片;如果一张图片很大,那下载这个图片时占据的内存很大,不存在大数据加载的操作;
- 1px = 2rpx;
但是这种转换不是绝对值,iphone6是1:2, rpx类似em / rem
rpx 是微信的单位,根据不同的手机版本进行切换,微信建议我们用iphone6 作为标准调试界面
1、swiper
---------swiper属性:------------
autoplay:自行轮播
interval:自动切换的时间间隔,单位毫秒,1000毫秒 = 1秒,微信默认值是5秒
duration:滑动动画时长,默认500毫秒(0.5s)–也就是从一张图切换到另一张图,用时0.5s
注意:interval=“3000” duration=“3000” 如果写的时候
这样就是:每个3s切换一次,每次切换用3s时间,效果就是,图不会停,一直滑动indicator-dots: 轮播图下方小圆点,告知有几个图片,但是不能点击这个点, indicator是标志,指示信号的意思;
indicator-color: 轮播图指示点的颜色
current:页面刷新的时候,轮播图都是按照顺序123依次从头开始展示的,如果我们希望刷新打开先显示第2张,就用这个属性- current = 1( 值是数组索引)值
vertical:轮播图垂直方法滑动,默认是水平滑动的;如果要设这个值,必须要设置高度才会生效: style=‘height:300rpx;’ vertical
---------- swiper事件----------bindchange:当current改变时触发这个事件(自动播放 或者点击切换都触发)
<view>
<swiper autoplay interval="3000" duration="1000" indicator-dots current="1" bindchange="changeCurrent" style='height:300rpx;' vertical>
<!-- swiper 拖动的时候拖的是swiper-item 这个项 -->
<!--
-->
<swiper-item>
<image src='https://img11.360buyimg.com/babel/s960x370_jfs/t1/83539/14/13790/245810/5db2e06cEab8e5bd0/b76b8c8927f4aa99.jpg!cc_960x370'></image>
<!-- 微信里图片变迁不是img 而是image -->
<!-- 微信里一般icon图标我们存在本地,图片我们不存本地,用线上的图片;如果一张图片很大,那下载这个图片时占据的内存很大,不存在大数据加载的操作; -->
</swiper-item>
<swiper-item>
<!-- 1.点击图片跳转页面,html里我们是用a标签包裹图片,点击图片其实是对a标签的操作,
2. 这里类似只是把a标签<a href=''></a>换成了navigator标签<navigator url=''></navigator> ,
3.并且链接属性名是url,属性值必须是应用内的跳转链接,在app.json的pages里注册过的页面,不能像网页一样跳百度
4.url 路径问题:
app.json里pages里的路径:"pages/9swiper/9swiper" 是**当前目录下**的pages里的文件,app.json 和pages同级目录下
而navigator跳转的时候:"/pages/9swiper/9swiper" 前面要加/ 表示从**根路径**出发找pages文件夹
-->
<image src='https://img12.360buyimg.com/babel/s960x370_jfs/t1/49223/37/16144/136617/5dce7e6fE7dd6138e/d91e1085058aef5f.jpg!cc_960x370'></image>
</swiper-item>
<swiper-item>
<image src='https://img13.360buyimg.com/babel/s960x370_jfs/t1/88382/27/10925/192045/5e240fc8E671f49ac/5c93000e0e62434d.jpg!cc_960x370'></image>
</swiper-item>
</swiper>
<!-- swiper 切换的是swiper-item 和内部内容没有关系,swiper-item 内可以放文字、图片 还可以放页面 ,进行页面的切换
小程序页面的左右滑动切换页面就是这样实现的
-->
</view>
2、scroll-view
scroll-view可以在部分区域内的左右和上下滑动区块(可滚动视图区域)
scroll-view 和 swiper类似:
- 只是swiper滑动的里面的项swiper-item,
- 而scroll-view滑动的是区块,里面没有一项一项的区分开
总结:所以如果内容是一张张图片,类似轮播用swiper; 如果是很长的view(div) 或者很长的文本用scroll-view
- 给.nav弹性盒布局,且不换行 display: flex;white-space: nowrap;
- 必须给scroll-view 添加属性scroll-x 才能滑动
<!-- 可拖动导航条----scroll-view -->
<view>
<scroll-view scroll-x>
<!-- 2. 必须给scroll-view 添加属性scroll-x 才能滑动 -->
<view class="nav">
<!-- 1.给.nav弹性盒布局,且不换行 display: flex;white-space: nowrap; -->
<navigator url=''>国内新闻</navigator>
<navigator url=''>国际新闻</navigator>
<navigator url=''>社会新闻</navigator>
<navigator url=''>娱乐新闻</navigator>
<navigator url=''>国际新闻</navigator>
<navigator url=''>社会新闻</navigator>
<navigator url=''>娱乐新闻</navigator>
<!-- 在导航条里面注意:点击切页面 和点击跳页面时两码事:
点击切页面时绑定bindtap 点击事件,点击的时候利用swiper 切换里面的每一项
点解跳页面时,用navigator标签进行页面跳转 -->
</view>
</scroll-view>
</view>
<!-- 新闻列表:有模块化的定义 -->
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
--------应用swiper--------
<swiper autoplay>
<swiper-item>
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
</swiper-item>
</swiper>
--------应用scroll-view--------
<scroll-view scroll-x>
<view style="display:flex;">
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
<view class="news">
<image src='/images/2.jpg'></image>
<view class="newsRight">
<view class="title">新人9.9</view>
<text>爆款任你挑,你好河北,你好中国,你好亚洲,你好世界</text>
</view>
</view>
</view>
</scroll-view>
3、flex
布局模型有两种:
-
display: flex; 代表的是可以让你在某一行内完成几个单独区块的创建,相互之间没有关联(都写在父级元素上)
-
父级做了display: flex; 设置,子元素flex:1;每一个子元素均分宽度占满父级;
或者
父级做了display: flex; 设置,子元素flex:0 0 80px;
flex用来设置子元素的固定大小,复合属性,参数一-子元素扩展比例,参数二 - 子元素收缩比例,参数三- 子元素大小,这样写了具体的尺寸;
使用方式1:
display: flex;
布局为弹性布局,加在父元素上;flex-direction:row/column;
主轴方向; 弹性布局的方向(弹性容器的方向),默认是row 横向;
row 的主轴方向是从左start向右end; column 的主轴方向是从上start到 下endjustify-content:flex-start / flex-end / center /spacebetween / space-around
主轴上的对齐方式,justify 是对齐的意思
弹性项目 在 主轴main-axis 线上的对齐方式,假如主轴方向是从左到右:flex-direction:row; 那么主轴是左中右,交叉轴是上中下:
flex-start左对齐 / flex-end右对齐 / center左右居中 /spacebetween左右两端对齐 / space-around 平均平分对齐flex-wrap:wrap;
换行; 一行放不下的时候自动换行,如果没有加这个属性,会都挤在一行里
-----------交叉轴 cross-axis----------align-items:flex-start
上对齐/flex-end 下对齐/center上下居中/stretch;交叉轴线上的对齐方式;上中下
<view class='outer-view'>
<view class="inner-view">11</view>
<view class="inner-view">22</view>
<view class="inner-view">33</view>
<view class="inner-view">44</view>
<view class="inner-view">55</view>
<view class="inner-view">66</view>
<view class="inner-view">77</view>
<view class="inner-view">88</view>
</view>
.outer-view{
background: #f0f0f0;
/* height:400rpx; */
display: flex;
flex-direction:row;
justify-content:space-around;
flex-wrap:wrap;
align-items:flex-start;
/*
7. display: flex; 布局为弹性布局,加在父元素上;
8. flex-direction:row/column; 主轴方向; 弹性布局的方向(弹性容器的方向),默认是row 横向;
row 的主轴方向是从左start向右end; column 的主轴方向是从上start到 下end
9. justify-content:flex-start / flex-end / center /spacebetween / space-around 主轴上的对齐方式,justify 是对齐的意思
弹性项目 在 主轴main-axis 线上的对齐方式,假如主轴方向是从左到右:flex-direction:row; 那么主轴是左中右,交叉轴是上中下:
flex-start左对齐 / flex-end右对齐 / center左右居中 /spacebetween左右两端对齐 / space-around 平均平分对齐
10. flex-wrap:wrap; 换行; 一行放不下的时候自动换行,如果没有加这个属性,会都挤在一行里
-----------交叉轴 cross-axis----------
11. align-items:flex-start 上对齐/flex-end 下对齐/center上下居中/stretch;交叉轴线上的对齐方式;上中下
*/
}
.inner-view{
background: green;
height:160rpx;
line-height:160rpx;
width:160rpx;
text-align: center;
margin-top:30rpx;
}
使用方式2:
flex:1;
–在子元素中 flex:1; 代表:以平均的宽度 来撑满整个父级元素;中间没有缝隙,==无论子元素宽度多少,都会撑满
==;flex:0 0 80px;
代表不扩展 也不收缩,具体尺寸就是80px;
<view class="outer">
<view class="inner">1</view>
<view class="inner">2</view>
<view class="inner">3</view>
<view class="inner">4</view>
</view>
.outer{
background: #f0f0f0;
display: flex;
/* 还是在父元素里布局设为flex */
}
.inner{
background: yellowgreen;
width:120rpx;
/*flex:0 0 120px; 这样写就相当与给了宽度,这样不一定会撑满*/
height:120rpx;
line-height:120rpx;
border-right:1px solid green;
text-align: center;
flex:1;
/*
1. flex:1; --在子元素中 flex:1; 代表:以平均的宽度 来撑满整个父级元素;中间没有缝隙,无论子元素宽度多少,都会撑满;
*/
}