추천(무료): uni-app development tutorial
글 디렉토리
- 기본 구성 요소
- 1.
- 2.스와이프
- 3.text
- 4.rich-text
- 5.process
- 2. 양식 구성 요소
- 1.button
- 2.checkbox
- 3.input
- 4.label
- 5 .picker
- 6.Radio
- 7.slider
- 8.switch
- 9.textArea
- 10. form
- 3 통과
- 4. 미디어 구성 요소
-
- 1.audio
- 2.image
- Summary
- 서문
- 1. 기본 구성 요소
구성 요소는 일반적으로 시작 태그와 종료 태그를 포함하며
속성은 이 두 가지 안에 들어 있습니다. 태그.
. 그 아래에는 루트 구성 요소가 하나만 있을 수 있습니다.
프레임워크는 개발자에게 일련의 기본 구성 요소를 제공하며, 개발자는 이러한 기본 구성 요소를 결합하여 빠르게 개발할 수 있습니다. 일반적인 기본 구성 요소는 다음과 같습니다.
구성 요소 이름-
连接,根节点为<template></template>
Description
View 컨테이너, HTML의 p와 유사 | |
---|---|
swiper | |
icon | |
text | |
rich-text | |
진행률 표시줄 | |
보기는 다음과 같습니다. 다양한 요소 콘텐츠를 래핑하는 데 사용되는 전통적인 HTML의 p와 유사한 가장 기본적인 뷰 컨테이너입니다. | |
스크롤 가능한 보기 영역, 영역 스크롤에 사용됩니다. | webview로 렌더링된 페이지에서는 영역 스크롤 성능이 페이지 스크롤만큼 좋지 않습니다.
속성 이름
Type
기본값
Description
scroll-x | Boolean | false | 가로 스크롤 허용 |
---|---|---|---|
false | 세로 스크롤을 허용합니다. | UPPER-Threshold | |
50 | ScroltoupPer 이벤트를 트리거할 위쪽/왼쪽(단위 PX)에서 얼마나 멀리 떨어져 있는지 | 아래- Threshold | |
50 | scrolltolower 이벤트가 아래쪽/오른쪽(단위 px)에서 얼마나 멀리 떨어져 있는지 | scroll-top | |
None | 세로 스크롤 막대 위치 설정 | scroll -left | |
None | 가로 스크롤 막대 위치 설정 | scroll-into-view | |
None | 값은 특정 하위 요소 ID여야 합니다(ID는 다음으로 시작할 수 없습니다). 숫자). 스크롤 가능한 방향을 설정한 다음 해당 방향의 요소로 스크롤하세요 | scroll-with-animation | |
false | 스크롤 막대 위치를 설정할 때 애니메이션 전환을 사용하세요 | enable-flex | |
false | 플렉스박스 레이아웃을 활성화합니다. 활성화된 후에는 display: flex를 선언하는 현재 노드가 Flex 컨테이너가 되어 하위 노드에서 작동합니다. | ||
event | 의미 |
@scrolltoupper
실행됩니다 | @ scrolltolower아래/오른쪽으로 스크롤하면 scrolltolower 이벤트가 발생합니다 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
스크롤 시 발생, event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
사용자 정의 풀다운 새로 고침 컨트롤이 풀다운되었습니다 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
사용자 정의 풀다운 새로 고침이 시작되었습니다 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
사용자 정의 풀다운 새로 고침이 재설정되었습니다 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
사용자 정의 풀다운 새로 고침이 중단되었습니다 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
속성 이름 | Type | 기본값 | Description |
---|---|---|---|
indicator-dots | Boolean | false | 패널 표시 포인트 표시 여부 |
indicator-color | Color | rgba(0, 0, 0, .3) | indicator color |
indicator-active-color | Color | #000000 | 현재의 색상 선택한 표시기 |
active-class | String | none | 표시되는 경우 swiper-item 클래스 |
changing-class | String | none | 가속은 {{true}}로 설정된 경우 슬라이딩 프로세스에서는 중간 화면이 표시되면 클래스 |
autoplay | Boolean | false | 이 자동으로 전환됩니다 |
current | Number | 0 | 현재 슬라이더의 인덱스 |
간격 | 번호 | 5000 | 자동 전환 시간 간격 |
duration | 번호 | 500 | 슬라이딩 애니메이션 지속 시간 |
원형 | Boolean | false | 연결 슬라이딩 사용 여부, 즉, 끝까지 재생한 다음 처음으로 돌아갑니다 |
vertical | Boolean | false | 슬라이딩 방향이 세로인지 |
previous-margin | String | 0px | 앞 여백은 이전 항목의 작은 여백을 표시하는 데 사용할 수 있습니다. 부분, px 및 rpx 값을 허용합니다. |
next-margin | String | 0px | 뒤 여백은 항목의 작은 부분을 노출하는 데 사용할 수 있습니다. 후자의 항목은 px 및 rpx 값을 허용합니다. |
일반적인 이벤트는 다음과 같습니다:
Event | Meaning |
---|---|
@change | 변경 이벤트는 현재 변경 시 트리거됩니다. event.detail = {current: current, source: source} |
@transition | swiper- 아이템의 위치가 변경되면 전환 이벤트가 발생합니다. event.detail = {dx: dx, dy: dy }, Alipay 애플릿은 현재 dx, dy App, H5, WeChat 애플릿, Alipay 애플릿, ByteDance 애플릿 프로그램, QQ 애플릿 |
@animationfinish | 애니메이션이 끝나면 animationfinish 이벤트가 트리거됩니다. event.detail = {현재:현재, 출처:출처} |
자세한 내용은 https://uniapp.dcloud .io/comComponent/swiper를 참고해주세요.
index.vue는 다음과 같습니다:
<template> <view> <swiper> <swiper-item> <view>A</view> </swiper-item> <swiper-item> <view>B</view> </swiper-item> <swiper-item> <view>C</view> </swiper-item> </swiper> </view></template><script> var _self; export default { data() { return {} }, onLoad() { _self = this }, onShow() {}, onHide() {}, methods: {} }</script><style> swiper-item { background: #4CD964; height: 200px; width: 90%; }</style>
Display:
회전목마 이미지의 동적 재생 효과가 달성되는 것을 볼 수 있습니다.
3.text
텍스트 구성 요소는 텍스트 내용을 래핑하고 선택 및 복사할 수 있는 텍스트를 제공하는 데 사용됩니다. 반면 다른 구성 요소의 텍스트는 선택하거나 복사할 수 없습니다.
공통 속성은 다음과 같습니다.
속성 이름 | Type | 기본값 | Description |
---|---|---|---|
selectable | Boolean | false | 텍스트 선택 가능 여부 |
space | String | None | 연속 공백 표시 |
decode | Boolean | false | decode 여부 |
그 중 space 속성의 선택적 값과 의미는 다음과 같습니다. 다음과 같이:
값 | meaning |
---|---|
ensp | 한자 공백 절반 크기 |
emsp | 한자 공백 크기 |
nbsp | 글꼴에 따라 공간 크기 설정 |
4.rich-text
리치 텍스트.
공통 속성은 다음과 같습니다.
속성 이름 | Type | 기본값 | Description |
---|---|---|---|
nodes | Array / String | [] | 노드 목록/HTML 문자열 |
space | string | None | 연속 공백 표시 |
selectable | Boolean | false | 서식 있는 텍스트를 길게 눌러 선택할 수 있는지 여부, 복사, 붙여넣기 및 기타 시나리오에 사용할 수 있음 |
index.vue如下:
<template> <view> <rich-text></rich-text> </view></template><script> var _self; export default { data() { return { nodes: [{ name: &#39;p&#39;, attrs: { class: &#39;p-class&#39;, style: &#39;line-height: 60px; color: red; text-align:center;&#39; }, children: [{ type: &#39;text&#39;, text: &#39;Hello uni-app!&#39; }] }], strings: &#39;<p style="text-align:center;"><img src="/static/imghwm/default1.png" data-src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png" class="lazy" / alt="구성 요소의 기본 사용법을 익히기 위한 uni-app 입문 튜토리얼" >&#39; } }, onLoad() { _self = this }, onShow() {}, onHide() {}, methods: {} }</script><style></style>
显示:
显然,渲染出了富文本。
5.process
进度条。
常见属性如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
percent | Float | 无 | 百分比0~100 |
show-info | Boolean | false | 在进度条右侧显示百分比 |
stroke-width | Number | 6 | 进度条线的宽度,单位px |
activeColor | Color | #09BB07(百度为#E6E6E6) | 已选择的进度条的颜色 |
backgroundColor | Color | #EBEBEB | 未选择的进度条的颜色 |
active | Boolean | false | 进度条从左往右的动画 |
index.vue如下:
<template> <view> <view> <progress></progress> </view> <view> <progress></progress> </view> <view> <progress></progress> </view> <view> <progress></progress> </view> </view></template><script> var _self; export default { data() { return {} }, onLoad() { _self = this }, onShow() {}, onHide() {}, methods: {} }</script><style></style>
显示:
可以看到,显示出了进度的动态变化。
二、表单组件
表单组件很常用,主要用于数据的收集和提交。
1.button
按钮。
常见的属性和含义如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
size | String | default | 按钮的大小 |
type | String | default | 按钮的样式类型 |
plain | Boolean | false | 按钮是否镂空,背景色透明 |
disabled | Boolean | false | 是否禁用 |
loading | Boolean | false | 名称前是否带 loading 图标 |
form-type | String | 无 | 用于 <form></form> 组件,点击分别会触发 <form></form> 组件的 submit/reset 事件 |
open-type | String | 无 | 开放能力 |
index.vue如下:
<template> <view> <button>default</button> <button>primary</button> <button>warn</button> <button>点击设置以上按钮disabled属性</button> <button>点击设置以上按钮plain属性</button> <button>点击设置以上按钮loading属性</button> </view></template><script> var types = [&#39;default&#39;, &#39;primary&#39;, &#39;warn&#39;] export default { data() { return { defaultSize: &#39;default&#39;, primarySize: &#39;default&#39;, warnSize: &#39;default&#39;, disabled: false, plain: false, loading: false } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { setDisabled: function(e){ this.disabled = !this.disabled }, setPlain: function(e){ this.plain = !this.plain }, setLoading: function(e){ this.loading = !this.loading } } }</script><style></style>
显示:
可以看到,在点击button时,触发了相应的操作。
2.checkbox
checkbox-group是多项选择器,内部由多个 checkbox 组成。
属性如下:
属性名 | 类型 | 说明 |
---|---|---|
@change | EventHandle |
<checkbox-group></checkbox-group> 中选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]} |
checkbox是多选项目,即复选框。
常见属性如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 无 |
<checkbox></checkbox> 标识,选中时触发 <checkbox-group></checkbox-group> 的 change 事件,并携带 <checkbox></checkbox> 的 value |
disabled | Boolean | false | 是否禁用 |
checked | Boolean | false | 当前是否选中,可用来设置默认选中 |
color | Color | 无 | checkbox的颜色,同css的color |
index.vue如下:
<template> <view> <checkbox-group> <label> <checkbox></checkbox>{{item}} </label> </checkbox-group> </view></template><script> var _self; export default { data() { return { items: [&#39;Reading&#39;, &#39;Running&#39;] } }, onLoad() { _self = this; setTimeout(function(){ _self.age = 20 }, 3000); }, onShow() { console.log(&#39;index onshow&#39;) }, onHide() { console.log(&#39;index onhide&#39;) }, methods: { checkboxChange: function(e) { console.log(e) } } }</script><style> .content { display: flex; flex-direction: column; align-items: center; justify-content: center; } .logo { height: 200rpx; width: 200rpx; margin-top: 200rpx; margin-left: auto; margin-right: auto; margin-bottom: 50rpx; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; }</style>
显示:
可以看到,已经渲染出页面元素,同时支持点选。
3.input
输入框。
常见的属性如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 无 | 输入框的初始内容 |
type | String | text | input 的类型 |
password | Boolean | false | 是否是密码类型 |
placeholder | String | 无 | 输入框为空时占位符 |
placeholder-style | String | 无 | 指定 placeholder 的样式 |
placeholder-class | String | 无 | “input-placeholder” 指定 placeholder 的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ |
disabled | Boolean | false | 是否禁用 |
maxlength | Number | 140 | 最大输入长度,设置为 -1 的时候不限制最大长度 |
confirm-type | String | done | 设置键盘右下角按钮的文字,仅在 type=“text” 时生效。 |
常见的事件如下:
事件 | 含义 |
---|---|
@input | 当键盘输入时,触发input事件,event.detail = {value} |
@focus | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度 |
@blur | 输入框失去焦点时触发,event.detail = {value: value} |
@confirm | 点击完成按钮时触发,event.detail = {value: value} |
@keyboardheightchange | 键盘高度发生变化的时候触发此事件,event.detail = {height: height, duration: duration} |
4.label
用来改进表单组件的可用性,使用for属性找到对应的id,或者将控件放在该标签下,当点击时,就会触发对应的控件。
for优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。
目前可以绑定的控件有<button></button>
、<checkbox></checkbox>
、<radio></radio>
、<switch></switch>
。
属性如下:
属性名 | 类型 | 说明 |
---|---|---|
for | String | 绑定控件的 id |
5.picker
从底部弹起的滚动选择器。
支持五种选择器,通过mode来区分,分别是普通选择器、多列选择器、时间选择器、日期选择器和省市区选择器,默认是普通选择器。
(1)普通选择器,参数为mode = selector
,常见属性和事件如下:
属性名 | 类型 | 说明 |
---|---|---|
range | Array / Array | mode为 selector 或 multiSelector 时,range 有效 |
@change | EventHandle | value 改变时触发 change 事件,event.detail = {value: value} |
index.vue如下:
<template> <view> <picker> <view> {{years[yearIndex]}} </view> </picker> </view></template><script> export default { data() { return { years: ["请选择年份", 2019, 2020, 2021], yearIndex: 0 } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { yearChange: function(e){ console.log(e) this.yearIndex = e.detail.value } } }</script><style></style>
显示:
可以看到,在选择值后,显示也会同步变化,被选择的值的下标存储在e.detail.value
中。
(2)多列选择器,参数为mode = multiSelector
,常见属性和事件如下:
属性名 | 类型 | 说明 |
---|---|---|
range | 二维 Array / 二维 Array | mode为 selector 或 multiSelector 时,range 有@change |
index.vue如下:
<template> <view> <picker> <view> {{years[0][yearIndex]}}-{{years[1][monthIndex]}} </view> </picker> </view></template><script> export default { data() { return { years: [ ["请选择年份", 2019, 2020, 2021], ["请选择月份 ", 3, 4, 5] ], yearIndex: 0, monthIndex: 0 } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { yearChange: function(e){ console.log(e) this.yearIndex = e.detail.value[0], this.monthIndex = e.detail.value[1] } } }</script><style></style>
显示:
显然,可以进行多级选择,此时e.detail.value
是一个数组,可以分别取值;
还可以通过ajax等方式实现先选择一级、再动态显示二级。
(3)时间选择器,参数为mode = time
,常见属性和事件如下:
属性名 | 类型 | 说明 |
---|---|---|
value | String | 表示选中的时间,格式为"hh:mm" |
start | String | 表示有效时间范围的开始,字符串格式为"hh:mm" App 不支持 |
end | String | 表示有效时间范围的结束,字符串格式为"hh:mm" App 不支持 |
@change | EventHandle | value 改变时触发 change 事件,event.detail = {value: value} |
index.vue如下:
<template> <view> <picker> <view> {{timeText}} </view> </picker> </view></template><script> export default { data() { return { timeText: "请选择时间" } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { yearChange: function(e){ console.log(e); this.timeText = e.detail.value } } }</script><style></style>
显示:
(4)日期选择器,参数为mode = date
,常见属性和事件如下:
属性名 | 类型 | 说明 |
---|---|---|
value | String | 表示选中的日期,格式为"YYYY-MM-DD" |
start | String | 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD" |
end | String | 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD" |
fields | String | 有效值 year、month、day,表示选择器的粒度,默认为 day,App 端未配置此项时使用系统 UI |
@change | EventHandle | value 改变时触发 change 事件,event.detail = {value: value} |
(5)省市区选择器,参数为mode = region
,常见属性和事件如下:
属性名 | 类型 | 说明 |
---|---|---|
value | Array | 表示选中的省市区,默认选中每一列的第一个值 |
custom-item | String | 可为每一列的顶部添加一个自定义的项 |
@change | EventHandle | value 改变时触发 change 事件,event.detail = {value: value} |
@cancel | EventHandle | 取消选择时触发 |
index.vue如下:
<template> <view> <picker> <view> {{regionText}} </view> </picker> </view></template><script> export default { data() { return { regionText: "请选择地区" } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { regionChange: function(e){ console.log(e); this.regionText = e.detail.value } } }</script><style></style>
显示:
显然,控制台输出了对应省市区的编码和文本。
6.radio
radio-group是单项选择器,内部由多个 <radio></radio>
组成,通过把多个radio包裹在一个radio-group下,实现这些radio的单选。
属性如下:
属性名 | 类型 | 说明 |
---|---|---|
@change | EventHandle |
<radio-group></radio-group> 中的选中项发生变化时触发 change 事件,event.detail = {value: 选中项radio的value} |
radio即单选项目,常见属性如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 无 |
<radio></radio> 标识。当该 <radio></radio> 选中时,<radio-group></radio-group> 的 change 事件会携带 <radio></radio> 的 value |
checked | Boolean | false | 当前是否选中 |
disabled | Boolean | false | 是否禁用 |
color | Color | 无 | radio的颜色,同css的color |
7.slider
滑动选择器,常见属性和含义如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
min | Number | 0 | 最小值 |
max | Number | 100 | 最大值 |
step | Number | 1 | 步长,取值必须大于 0,并且可被(max - min)整除 |
disabled | Boolean | false | 是否禁用 |
value | Number | 0 | 当前取值 |
activeColor | Color | 微信是绿色(#1aad19),头条是红色,其他平台是蓝色 | 滑块左侧已选择部分的线条颜色 |
backgroundColor | Color | #e9e9e9 | 滑块右侧背景条的颜色 |
block-size | Number | 28 | 滑块的大小,取值范围为 12 - 28 |
block-color | Color | #ffffff | 滑块的颜色 |
show-value | Boolean | false | 是否显示当前 value |
@change | EventHandle | 无 | 完成一次拖动后触发的事件,event.detail = {value: value} |
index.vue如下:
<template> <view> <slider></slider> </view></template><script> export default { data() { return { } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { sliderChange: function(e){ console.log(e); } } }</script><style></style>
显示:
可以看到,获取到了滑动选择器的值。
8.switch
开关选择器。
常见属性和含义如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
checked | Boolean | false | 是否选中 |
disabled | Boolean | false | 是否禁用 |
type | String | switch | 样式,有效值:switch, checkbox |
color | Color | 无 | switch 的颜色,同 css 的 color |
@change | EventHandle | 无 | checked 改变时触发 change 事件,event.detail={ value:checked} |
index.vue如下:
<template> <view> <switch></switch> </view></template><script> export default { data() { return { } }, onLoad() { }, onShow() { }, onUnload() { }, methods: { switchChange: function(e){ console.log(e); } } }</script><style></style>
显示:
可以看到,在选择器处于打开状态时,value为true,处于关闭状态时,value为false。
9.textarea
多行输入框。
常见属性和事件如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 无 | 输入框的内容 |
placeholder | String | 无 | 输入框为空时占位符 |
placeholder-style | String | 无 | 指定 placeholder 的样式 |
placeholder-class | String | textarea-placeholder | 指定 placeholder 的样式类 |
disabled | Boolean | false | 是否禁用 |
maxlength | Number | 140 | 最大输入长度,设置为 -1 的时候不限制最大长度 |
focus | Boolean | false | 获取焦点 |
@focus | EventHandle | 无 | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度 |
@blur | EventHandle | 无 | 输入框失去焦点时触发,event.detail = {value, cursor} |
@linechange | EventHandle | 无 | 输入框行数变化时调用,event.detail = {height: 0, heightRpx: 0, lineCount: 0} |
@input | EventHandle | 无 | 当键盘输入时,触发 input 事件,event.detail = {value, cursor}, @input 处理函数的返回值并不会反映到 textarea 上 |
@confirm | EventHandle | 无 | 点击完成时, 触发 confirm 事件,event.detail = {value: value} |
10.form
表单,将组件内的用户输入的<switch></switch>
、<input>
、<checkbox></checkbox>
、<slider></slider>
、<radio></radio>
和<picker></picker>
中的数据提交。
当点击 <form></form>
表单中 formType 为 submit 的 <button></button>
组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。
常见属性和含义如下:
属性名 | 类型 | 说明 |
---|---|---|
report-submit | Boolean | 是否返回 formId 用于发送模板消息 |
@submit | EventHandle | 携带 form 中的数据触发 submit 事件,event.detail = {value : {‘name’: ‘value’} , formId: ‘’},report-submit 为 true 时才会返回 formId |
@reset | EventHandle | 表单重置时会触发 reset 事件 |
index.vue如下;
<template> <view> <form> <view> <view>switch</view> <switch></switch> </view> <view> <view>slider</view> <slider></slider> </view> <view> <view>input</view> <input> </view> <view> <view>radio</view> <radio-group> <label> <radio></radio><text>radio1</text> </label> <label> <radio></radio><text>radio2</text> </label> </radio-group> </view> <view> <view>checkbox</view> <checkbox-group> <label> <checkbox></checkbox><text>checkbox1</text> </label> <label> <checkbox></checkbox><text>checkbox2</text> </label> </checkbox-group> <input> </view> <view> <button>Submit</button> <button>Reset</button> </view> </form> </view></template><script> export default { data() { return {} }, onLoad() {}, onShow() {}, onUnload() {}, methods: { formSubmit: function(e) { var formData = e.detail.value; console.log(formData); if (!formData.switch) { console.log(&#39;No Pass&#39;) } }, formReset: function(e) { console.log(e) } } }</script><style></style>
显示:
可以看到,在点击Submit按钮提交之后,会将数据全部提交,还可以对数据进行验证。
三、导航组件和页面传参
1.navigator
导航组件用于页面跳转,类似HTML中的<a></a>
组件,但只能跳转本地页面,即目标页面必须在pages.json
中注册。
常见的属性和含义如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
url | String | 无 | 应用内的跳转链接,值为相对路径或绝对路径,如:"…/first/first","/pages/first/first",注意不能加 .vue 后缀 |
open-type | String | navigate | 跳转方式,与api接口相对应 |
delta | Number | 无 | 当 open-type 为 ‘navigateBack’ 时有效,表示回退的层数 |
target | String | self | 在哪个小程序目标上发生跳转,默认当前小程序,值域self/miniProgram |
其中, open-type对应的API接口及其含义如下:
接口 | 含义 |
---|---|
uni.navigateTo(OBJECT) | 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面 |
uni.redirectTo(OBJECT) | 关闭当前页面,跳转到应用内的某个页面 |
uni.reLaunch(OBJECT) | 关闭所有页面,打开到应用内的某个页面 |
uni.switchTab(OBJECT) | 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 |
uni.navigateBack(OBJECT) | 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层 |
index.vue如下:
<template> <view> <navigator> <button>跳转到news页面</button> </navigator> <navigator> <button>跳转到about页面</button> </navigator> </view></template><script> export default { data() { return {} }, onLoad() {}, onShow() {}, onUnload() {}, methods: { } }</script><style></style>
显示:
可以看到,实现了两种方式的跳转。
这是通过DOM进行页面跳转,还可以通过API进行跳转,如下:
<template> <view> <button>跳转到新闻页面</button> </view></template><script> export default { data() { return {} }, onLoad() {}, onShow() { setTimeout(function(){ uni.navigateBack({ delta: 1 }) }, 3000) }, onUnload() {}, methods: { skip: function() { uni.navigateTo({ url: &#39;../news&#39; }) } } }</script><style></style>
显示:
可以看到,也实现了页面跳转,并且可以定时跳转回原页面。
2.参数传递
在进行页面跳转时,向其他页面传递参数一般在组件或接口的url参数指定的地址后追加,以?
开始,=
连接参数名和参数值,&
拼接不同的参数。
index.vue传递参数如下:
<template> <view> <button>跳转到新闻页面</button> </view></template><script> export default { data() { return {} }, onLoad() {}, onShow() { setTimeout(function(){ uni.navigateBack({ delta: 1 }) }, 5000) }, onUnload() {}, methods: { skip: function() { uni.navigateTo({ url: &#39;../news?size=20&page=1&#39; }) } } }</script><style></style>
news.vue接收参数如下:
<template> <view>新闻页</view></template><script> export default { onLoad:function(options){ console.log(options) } }</script><style></style>
显示:
可以看到,参数值保存在options
中。
四、媒体组件
1.audio
音频组件。
常见属性和事件如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
id | String | 无 | audio 组件的唯一标识符 |
src | String | 无 | 要播放音频的资源地址 |
loop | Boolean | false | 是否循环播放 |
controls | Boolean | false | 是否显示默认控件 |
poster | String | 无 | 默认控件上的音频封面的图片资源地址,如果 controls 属性值为 false 则设置 poster 无效 |
name | String | 无 | 未知音频 |
author | String | 未知作者 | 默认控件上的作者名字,如果 controls 属性值为 false 则设置 author 无效 |
@error | EventHandle | 无 | 当发生错误时触发 error 事件,detail = {errMsg: MediaError.code} |
@play | EventHandle | 无 | 当开始/继续播放时触发play事件 |
@pause | EventHandle | 无 | 当暂停播放时触发 pause 事件 |
@timeupdate | EventHandle | 无 | 当播放进度改变时触发 timeupdate 事件,detail = {currentTime, duration} |
@ended | EventHandle | 无 | 当播放到末尾时触发 ended 事件 |
index.vue如下:
<template> <view> <audio></audio> </view></template><script> export default { data() { return { audioSrc: "https://m10.music.126.net/20201221165005/b4e7a310f6e3ffda9f12ab518201087c/yyaac/obj/wonDkMOGw6XDiTHCmMOi/2513074700/92fc/e94b/8333/c8592b8e05995aa1744976275eb09ab0.m4a", posterSrc: "https://y.gtimg.cn/music/photo_new/T002R300x300M000002npMQN1wN8nZ_1.jpg?max_age=2592000", name: "Blackheart", author: "Thomas Bergersen / Two Steps From Hell" } }, onLoad() {}, onShow() { }, onUnload() {}, methods: { } }</script><style> audio { background: #007AFF; width: 100%; }</style>
显示:
uniapp component media audio
可以看到,实现了音乐播放功能。
2.image
图片组件。
常见的属性和事件如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
src | String | 无 | 图片资源地址 |
mode | String | ‘scaleToFill’ | 图片裁剪、缩放的模式 |
lazy-load | Boolean | false | 图片懒加载。只针对page与scroll-view下的image有效 |
fade-show | Boolean | true | 图片显示动画效果 |
webp | boolean | false | 默认不解析 webP 格式,只支持网络资源 |
show-menu-by-longpress | boolean | false | 开启长按图片显示识别小程序码菜单 |
@error | HandleEvent | 无 | 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: ‘something wrong’} |
@load | HandleEvent | 无 | 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:‘图片高度px’, width:‘图片宽度px’} |
index.vue如下:
<template> <view> <image></image> <image></image> <image></image> </view></template><script> export default { data() { return { } }, onLoad() {}, onShow() { }, onUnload() {}, methods: { } }</script><style> </style>
显示:
可以看到,mode属性值不同,图片显示的形式也会有所区别。
3.video
视频组件。
常见属性和事件如下:
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
src | String | 无 | 要播放视频的资源地址 |
autoplay | Boolean | false | 是否自动播放 |
loop | Boolean | false | 是否循环播放 |
muted | Boolean | false | 是否静音播放 |
initial-time | Number | 无 | 指定视频初始播放位置,单位为秒(s) |
duration | Number | 无 | 指定视频时长,单位为秒(s) |
controls | Boolean | true | 是否显示默认播放控件(播放/暂停按钮、播放进度、时间) |
show-progress | Boolean | true | 若不设置,宽度大于240时才会显示 |
poster | String | 无 | 视频封面的图片网络资源地址,如果 controls 属性值为 false 则设置 poster 无效 |
@play | EventHandle | 无 | 当开始/继续播放时触发play事件 |
@pause | EventHandle | 无 | 当暂停播放时触发 pause 事件 |
@ended | EventHandle | 无 | 当播放到末尾时触发 ended 事件 |
@timeupdate | EventHandle | 无 | 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次 |
@fullscreenchange | EventHandle | 无 | 当视频进入和退出全屏时触发,event.detail = {fullScreen, direction},direction取为 vertical 或 horizontal |
@waiting | EventHandle | 无 | 视频出现缓冲时触发 |
@error | EventHandle | 无 | 视频播放出错时触发 |
@progress | EventHandle | 无 | 加载进度变化时触发,只支持一段加载。event.detail = {buffered},百分比 |
@controlstoggle | eventhandle | 无 | 切换 controls 显示隐藏时触发。event.detail = {show} |
index.vue如下:
<template> <view> <video></video> </view></template><script> export default { data() { return { } }, onLoad() {}, onShow() { }, onUnload() {}, methods: { } }</script><style> </style>
显示:
uniapp component media video
위 내용은 구성 요소의 기본 사용법을 익히기 위한 uni-app 입문 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 모바일 및 웹 플랫폼 용 디버깅 전략, Android Studio, Xcode 및 Chrome DevTools와 같은 도구 및 OS 및 성능 최적화 전반에 걸쳐 일관된 결과를위한 기술을 강조 표시합니다.

이 기사는 HBuilderx, WeChat 개발자 도구 및 Chrome Devtools와 같은 도구에 중점을 둔 UniAPP 개발을위한 디버깅 도구 및 모범 사례에 대해 설명합니다.

이 기사는 여러 플랫폼에서 UniAPP 응용 프로그램에 대한 엔드 투 엔드 테스트에 대해 설명합니다. 테스트 시나리오 정의, Appium 및 Cypress와 같은 도구 선택, 환경 설정, 테스트 작성 및 실행, 결과 분석 및 Integrat을 다룹니다.

이 기사는 장치, 통합, 기능, UI/UX, 성능, 크로스 플랫폼 및 보안 테스트를 포함한 UniAPP 응용 프로그램에 대한 다양한 테스트 유형에 대해 설명합니다. 또한 크로스 플랫폼 호환성을 보장하고 JES와 같은 도구를 권장합니다.

이 기사는 과도한 글로벌 데이터 사용 및 비효율적 인 데이터 바인딩과 같은 UniAPP 개발의 일반적인 성능 방지 방지에 대해 설명하며, 더 나은 앱 성능을 위해 이러한 문제를 식별하고 완화하는 전략을 제공합니다.

이 기사는 프로파일 링 도구를 사용하여 UniAPP의 성능 병목 현상을 식별하고 해결하고 설정, 데이터 분석 및 최적화에 중점을 둡니다.

이 기사는 UNIAPP에서 네트워크 요청을 최적화하고 대기 시간을 줄이고 캐싱 구현 및 모니터링 도구를 사용하여 응용 프로그램 성능을 향상시키는 전략에 대해 설명합니다.

이 기사에서는 압축, 반응 형 디자인, 게으른로드, 캐싱 및 Webp 형식 사용을 통해 웹 성능을 향상시키기 위해 UniAPP의 이미지 최적화에 대해 설명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
