Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用

按照官网教程学习使用组件,并且重点把容器组件的应用进行了练习。

1.官网关于组件的介绍

组件是视图层的基本组成单元,是一个单独且可复用的功能模块的封装。
开始标签上可以写属性,属性可以有多个,多个属性之间用空格分割。
注意:所有组件与属性名都是小写,单词之间以连字符-连接。
下面的示例是button按钮组件,有size,disabled,hover-start-time等多个属性,标签中是文本

<template><view><button size="mini" :disabled="false" hover-start-time=20 >按钮</button></view>
</template>

所有的组件都具有以下公共属性,但每个组件也都有自己的专有属性。
组件使用前,需要将对应的组件复制到components目录下方。

组件中可使用js变量绑定

组件的属性前加@则代表这是一个事件。
事件的属性值,指向一个在script的methods里定义过的js方法,还可以给方法传参数。
基础组件有很多,大概分为几类。

2.视图容器的简单练习使用


1. scroll-view 滚动条
可以引用为纵向和横向。
纵向引用时,scroll-y=“true”, class=“scroll-Y”, scroll-top引用js变量,注意为了保持滚动条原始位置,
以及上一个位置,用了两个变量。
横向引用时, scroll-x=“true”, class=“scroll-view_H”
事件定义了三个:
@scrolltoupper 滚动到顶部/左边,会触发 scrolltoupper 事件,纵向横向通用
@scrolltolower 滚动到底部/右边,会触发 scrolltolower 事件,纵向横向通用
@scroll 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY},纵向横向通用
应用效果

<!-- 引用纵向scroll-view的代码 --><view><view class="uni-title uni-common-mt">Vertical Scroll<text>\n纵向滚动</text></view><scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower" @scroll="scroll" enable-back-to-top="true" style="height: 500rpx" ><view id="demo1" class="scroll-view-item uni-bg-red">A</view><view id="demo2" class="scroll-view-item uni-bg-green">B</view><view id="demo3" class="scroll-view-item uni-bg-blue">C</view></scroll-view></view><view @tap="goTop" class="uni-link uni-center uni-common-mt"><text>点击这里返回顶部</text></view>
 <!-- 引用横向scroll-view的代码 --><view><view class="uni-title uni-common-mt">Horizontal Scroll<text>\n横向滚动</text></view><scroll-view class="scroll-view_H" scroll-x="true" @scroll="scroll" scroll-left="120" ><view id="demo1" class="scroll-view-item_H uni-bg-red">A</view><view id="demo2" class="scroll-view-item_H uni-bg-green">B</view><view id="demo3" class="scroll-view-item_H uni-bg-blue">C</view></scroll-view></view>

对应的<script></script>补充JS定义
在下方的view中定义了@tap事件,触发点goTop函数也在其中补充

data() {return {title: '首页',//滚动的初始位置为0,上一次滚动的位置存在old.scrollTopscrollTop: 0,old: {scrollTop: 0}}},
methods: {upper: function(e) {console.log(e)},lower: function(e) {console.log(e)},scroll: function(e) {console.log(e)//每次滚动以后,把当前的滚动位置存在this.old.scrollTop this.old.scrollTop = e.detail.scrollTop},goTop: function(e) {// 解决view层不同步的问题this.scrollTop = this.old.scrollTopthis.$nextTick(function() {this.scrollTop = 0});uni.showToast({icon:"none",title:"纵向滚动 scrollTop 值已被修改为 0"})}}

<style></style>补充CSS样式定义
使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 css 设置 height;
使用横向滚动时,需要给 <scroll-view> 添加white-space: nowrap;样式,强制文字不换行

.scroll-Y {height: 300rpx;
}
.scroll-view_H {white-space: nowrap;//强制文字不换行width: 100%;
}
.scroll-view-item {height: 300rpx;line-height: 300rpx;text-align: center;font-size: 36rpx;
}
.scroll-view-item_H {display: inline-block;height: 300rpx;line-height: 300rpx;text-align: center;font-size: 36rpx;
}

2. swiper 滑块视图容器
一般用于左右滑动或上下滑动,swiper是单页组件,适合做banner图轮播和简单列表左右滑动。
应用效果

swiper的属性设置中,circular是否采用衔接滑动,默认为false;indicator-dots是否显示面板指示点,
autoplay为是否自动切换,默认为false;interval为自动切换时间间隔,默认5000ms;
duration为滑动动画时长,默认500ms。
当然这些可以用JS改变,属性current为当前位置,current改变触发@change事件

<!-- swiper应用案例代码 --><!-- swiper轮播图显示区 --><view class="uni-margin-wrap"><swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay":interval="interval" :duration="duration"><swiper-item><view class="swiper-item uni-bg-red">AAA</view></swiper-item><swiper-item><view class="swiper-item uni-bg-green">BBB</view></swiper-item><swiper-item><view class="swiper-item uni-bg-blue">CCC</view></swiper-item></swiper></view><!-- swiper轮播播放方式设置 --><view class="swiper-list"><view class="uni-list-cell uni-list-cell-pd"><view class="uni-list-cell-db">指示点</view><!-- 引用了switch切换组件 --><switch :checked="indicatorDots" @change="changeIndicatorDots" /></view><view class="uni-list-cell uni-list-cell-pd"><view class="uni-list-cell-db">自动播放</view><!-- 引用了switch切换组件 --><switch :checked="autoplay" @change="changeAutoplay" /></view></view><!-- swiper轮播播放参数设置 --><view class="uni-padding-wrap"><view class="uni-common-mt"><text>幻灯片切换时长(ms)</text><text class="info">{{duration}}</text></view><!-- 引用了slider滑动条组件 --><slider @change="durationChange" :value="duration" min="500" max="2000" /><view class="uni-common-mt"><text>自动播放间隔时长(ms)</text><text class="info">{{interval}}</text></view><!-- 引用了slider滑动条组件 --><slider @change="intervalChange" :value="interval" min="2000" max="10000" /></view>

对应的<script></script>补充JS定义

data() {return {indicatorDots: true,autoplay: true,interval: 2000,duration: 500}},
methods: {//设置是否显示面板指示点changeIndicatorDots(e) {this.indicatorDots = !this.indicatorDots},//设置是否自动播放changeAutoplay(e) {this.autoplay = !this.autoplay},//设置幻灯片切换时长intervalChange(e) {this.interval = e.target.value},//自动播放间隔时长durationChange(e) {this.duration = e.target.value}}

<style></style>补充CSS样式定义

.uni-margin-wrap {width:690rpx;width: 100%;;
}
.swiper {height: 300rpx;
}
.swiper-item {display: block;height: 300rpx;line-height: 300rpx;text-align: center;
}
.swiper-list {margin-top: 40rpx;margin-bottom: 0;
}

3. match-media 适配屏幕组件
match-media是一个可适配不同屏幕的基本视图组件。可以指定一组 media query 媒体查询规则,满足查询条件时,这个组件才会被展示。例如在match-media组件中放置一个侧边栏,媒体查询规则设置为宽屏才显示,就可以实现在PC宽屏显示该侧边栏,而在手机窄屏中不显示侧边栏的效果。

<template><view><match-media :min-width="375" :max-width="800" ><view>当页面最小宽度 375px, 页面宽度最大 800px 时显示</view></match-media><match-media :min-height="400" :orientation="landscape"><view>当页面高度不小于 400px 且屏幕方向为横向时展示这里</view></match-media></view>
</template>

4. movable-area可拖动区域和movable-view可移动的视图容器
movable-area指代可拖动的范围,在其中内嵌movable-view组件用于指示可拖动的区域。
即手指/鼠标按住movable-view拖动或双指缩放,但拖不出movable-area规定的范围。
当然也可以不拖动,而使用代码来触发movable-view在movable-area里的移动缩放。
应用效果

示例代码:在<movable-area>中定义movable-view
movable-view 属性x,y为左上角位置,direction可定义移动方向,有all、vertical、horizontal、none
inertia定义movable-view是否带有惯性移动,默认false
out-of-bounds定义超过可移动区域后,movable-view是否还可以移动,默认false

<view class="uni-padding-wrap uni-common-mt"><view class="uni-title uni-common-mt"><text>\nmovable-view 区域小于 movable-area</text></view><movable-area><!-- css原始大小movable-view宽高150,movable-area高300px --><movable-view :x="x" :y="y" direction="all" @change="onChange">text</movable-view></movable-area><view @tap="tap" class="uni-link uni-center uni-common-mt">点击这里移动至 (30px, 30px)</view><view class="uni-title uni-common-mt"><text>movable-view区域大于movable-area</text></view><movable-area><!-- 通过css改大了movable-view,max样式宽高500px,movable-area高300px --><movable-view class="max" direction="all">text</movable-view></movable-area></view>

对应的<script></script>补充JS定义

<script>
export default {data() {return {x: 0,y: 0,old: {x: 0,y: 0}}},methods: {//定义tap移动到30,30位置tap: function(e) {this.x = this.old.xthis.y = this.old.ythis.$nextTick(function() {this.x = 30this.y = 30})},//定义onChange事件移动滑块位置onChange: function(e) {this.old.x = e.detail.xthis.old.y = e.detail.y}}
}
</script>

<style></style>补充CSS样式定义

<style>movable-view {display: flex;align-items: center;justify-content: center;height: 150rpx;width: 150rpx;background-color: #007AFF;color: #fff;}movable-area {height: 300rpx;width: 100%;background-color: #D8D8D8;overflow: hidden;}.max {width:500rpx;height: 500rpx;}
</style>

5. cover-view覆盖文本视图和cover-image覆盖图片视图
cover-view是覆盖在原生组件上的文本视图
cover-image是覆盖在原生组件上的图片视图。可覆盖的原生组件同cover-view,支持嵌套在cover-view里。
app-vue上可覆盖的原生组件:<video>、<map>
支持的事件:click
应用效果

先引入cover-view和vedio组件
示例代码:
cover-view 和cover-image放在video或者map标签内部就可以了

<!-- cover-view和cover-image,以及video示例 -->
<video class="video" id="demoVideo" :controls="false" :enable-progress-gesture="false" :show-center-play-btn="true" src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20181126-lite.m4v"poster="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b1476d40-4e5f-11eb-b997-9918a5dda011.png"><cover-view class="controls-title">简单的自定义 controls</cover-view><cover-image class="controls-play img" @click="play" src="/static/play.png"></cover-image><cover-image class="controls-pause img" @click="pause" src="/static/pause.png"></cover-image>
</video>

对应的<script></script>补充JS定义
页面mounted时this.videoCtx = uni.createVideoContext(‘demoVideo’)加载视频
click触发play ->this.videoCtx.play(); 和pause->this.videoCtx.pause();
不过视频播放还是有点问题。

<script>export default {data() {return {}},//页面加载时创建媒体对象videoCtx mounted() {this.videoCtx = uni.createVideoContext('demoVideo')},methods: {play(event) {this.videoCtx.play();uni.showToast({title: '开始播放',icon: 'none'});},pause(event) {this.videoCtx.pause();uni.showToast({title: '暂停播放',icon: 'none'});}}}
</script>

<style></style>补充CSS样式定义

.video {position: relative;}cover-view,
cover-image {display: inline-block;
}.img {position: absolute;width: 100rpx;height: 100rpx;top: 50%;margin-top: -50rpx;
}.controls-play {left: 50rpx;
}.controls-pause {right: 50rpx;
}.controls-title {width: 100%;text-align: center;color: #FFFFFF;
}

Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用相关推荐

  1. 飞桨图像分类零基础训练营学习笔记和心得体会

    飞桨图像分类零基础训练营学习笔记和心得体会 参加了百度一线AI工程师为大家讲解图像分类模型部署.课程内容包含Paddle2.0转静合一轻松导出模型.Paddle Lite环境准备.Paddle Lit ...

  2. java webpack web项目_零基础如何学习web前端,入门教程分享

    前端作为互联网时代直接触达用户的窗口,大到我们每天浏览到的网站,小到一次点击按钮的页面,前端无处不在.并且在产品的众多开发环节之中,最能让用户直观感受到的就是前端开发.因而前端行业的广阔发展前景也吸引 ...

  3. python零基础怎么学-零基础如何学习Python?老男孩Python入门培训

    现在越来越多的人想要学习Python课程,在学习Python的过程中不少人都会关注学习Python难吗?今天老男孩IT教育小编就为大家详细的解读一下吧. 0基础学习Python语言可以吗?首先个人认为 ...

  4. 小白零基础C#学习笔记

    一.概述 1..Net 1)..Net平台 2)..Net Frameword框架 说明:是.Net平台中不可缺少的一部分,提供了一个稳定的运行环境来保证.Net平台开发的各种应用能够正常运转. 2. ...

  5. 【百度领航团】小白零基础python学习笔记

    计算机是什么 在现实生活中,越来越无法离开计算机了电脑.笔记本.手机.游戏机.汽车导航.智能电视 ... 计算机就是一个用来计算的机器! 目前来讲,计算机只能根据人类的指令来完成各种操作,人让它干嘛他 ...

  6. Java企业开发学习笔记(1.2)利用组件注解符精简Spring配置文件

    该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iSeSH] 文章目录 一. 利用组件注解符精简Spring配置文件 1.1 创建新包 1.2 复制四个类 1.3 修 ...

  7. React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频)

    React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频) mern 架构零基础开发完整电商网站 React + Redux + Expre ...

  8. Harmony 开发基础——Harmony 学习笔记

    Harmony 开发基础--Harmony 学习笔记 前言 最近跟着3.6 HAR | 3.6 HAR | EBG2021CCHW1100031 课程页面 | Huawei iLearningX学习了 ...

  9. FFmpeg基础到工程-多路H265监控录放开发学习笔记

    多路H265监控录放开发学习笔记 课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等.包括:音视频.流媒体.直播.Android.视频监控28181.等. 具体 ...

最新文章

  1. 计算机存储技术及其发展了论文,计算机网络存储技术探究-计算机网络论文-计算机论文(13页)-原创力文档...
  2. 乌云爆告之双十一电商的安全警示
  3. Java、Android—零碎难记笔试考点(持续更新)
  4. RDBMS数据定时采集到HDFS
  5. react-native全局变量和静态变量使用
  6. Linux下android开发环境 遇到的问题
  7. php模板和框架,php模板和框架的区别的区别是什么
  8. Python: str.strip()
  9. 递归学习简单的小例子之hanoi塔问题
  10. 编程计算二叉树的深度
  11. 学习 react-native-sqlite-storage 案例
  12. c语言大一,C语言复习 大一.doc
  13. 基于OpenCASCADE自制三维建模软件(五)鼠标模式
  14. 日志配置:logging.file.path与logging.file.name的区别
  15. 概念图创作-IHMC CmapTools
  16. Linux 终端 基本指令
  17. 红米手机4X怎么刷入开发版启用ROOT权限
  18. 2020G1工业锅炉司炉证考试及G1工业锅炉司炉作业模拟考试
  19. 【时序】MQ-RNN 概率预测模型论文笔记
  20. Python opencv进行圆形识别(圆检测)

热门文章

  1. XMLHttpRequest的readyState属性
  2. jQuery-AJAX模块解析-response部分
  3. java-net-php-python-ssm公司人力资源管理系统计算机毕业设计程序
  4. 通过无线网登陆域服务器,Win10系统如何设置域账号连接企业内部域wifi
  5. ZeroMQ学习笔记(2)——套接字和模式
  6. 【网络】 OSI网络模型概念
  7. 互联网对证券业务的影响 发展证券电子商务将是券商的必然选择
  8. chrome 应用程序无法启动,因为应用程序的并行配置不正确
  9. .net程序员转行做手游开发经历(三)
  10. 从键盘上输入长和宽java_从键盘输入长方形的长和宽,然后使用运算符计算长方形的面积,最后将长方形的长、宽和面积都输出到控制台。_学小易找答案...