第四章总结:页面组件

一:组件的定义及属性

id:组件的唯一表示,保持整个页面唯一。
class:组件里的样式类,在对应的WXSS中定义的样式类。
style:组件的内联样式,可以动态设置的内联样式。使用方式同HTML标签style属性。
hidden:组件是否显示,所有组件默认显示。
data-*:自定义属性,组件上触发事件时,会发送给事件处理函数。事件处理函数可以通过datascl获取。
bind*/catch*:组件的事件,绑定逻辑层相关事件处理函数。bind为冒泡事件,catch为非冒泡事件。

组件语法格式如下:

<标签名  属性名="属性值">内容...</标签名>

二:容器视图组件

2.1:view

<view/>是一个块级容器组件,没有特殊功能,主要用于布局展示,是布局中最基本的UI组件,任何一种复杂的布局都可以通过嵌套<view/>组件,设置相关WXSS实现。<view/>支持常用的CSS布局属性,如display、float、position甚至Flex布局等,熟悉DIV+CSS的人应该很容易上手

<view/>具备一套关于点击行为的属性:

hover:是否启动点击态,默认值为false
hover-class:指定按下去的样式,当hover-class="none"时,没有点击态效果,默认值为none
hover-start-time:按住多久出现点击态,单位毫秒,默认值为50
hover-stay-time:手指松开后点击态保留时间,单位毫秒,默认值为400

<view style="border:1px solid red;">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
</view>
<view style="border:1px solid red;" class="o">
<view class="item" >1</view>
<view class="item" >2</view>
<view class="item" >3</view>
</view>

<view  class="oo">
<view class="cc"  >1</view>
<view class="cc" style="flex-shrink: 1;">2</view>
<view class="cc" style="flex-shrink: 2;">3</view>
<view class="cc" style="flex-shrink: 3;">4</view>
</view>
2.2:scroll-view

在布局过程中,我们需要一些容器具备可滑动的能力,尽管我们可以通过给<view/>设置overflow:scroll属性来实现,但由于小程序实现原理中没有DOM概念,我们没法直接监听<view/>滚动、触顶、触底等事件,这时便需要使用<scroll-view/>。<scroll-view/>在<view/>基础上增加了滚动相关属性,通过设置这些属性,我们能响应滚动相关事件。<scroll-view/>属性如下:

scroll-x:允许横向滚动,默认为false
scroll-y:允许纵向滚动,默认为false
upper-threshold:距顶部/左边多远时(单位px),触发scrolltoupper事件,默认值为50
lower-threshold:距底部/右边多远时(单位px),触发scrolltolower事件,默认值为50
scroll-top:设置竖向滚动条位置
scroll-left:设置横向滚动条位置
scroll-into-view:值应为某子元素id,滚动到该元素时,元素顶部对齐滚动区域顶部
bindscrolltoupper:滚动到顶部/左边,会触发scrolltoupper事件
bindscrolltolower:滚动到底部/右边,会触发scrolltolower事件
bindscroll:滚动时触发,event.detail = {scrollLeft,scrollTop,scrollHeight,scrollWidth,deltaX,deltaY}
目前,有些组件不能在<scroll-view/>中使用:<textarea/>、<video/>、<map/>、<convas/>

<!--pages/l3_zujian/l3_zujian.wxml-->
<view wx:for="{{colorList}}" wx:key="index" class="num-item" style="background-color: rgba({{item}});">{{item}}</view>


/* pages/l3_zujian/l3_zujian.wxss */

.num-item{
  border: 1rpx solid #efefef;
border-radius: 8rpx;
line-height: 200rpx;
margin: 15rpx;
text-align: center;
text-shadow: 0rpx 0rpx 5rpx #fff;
box-shadow: 1rpx 1rpx 6rpx #aaa;
}



// pages/l3_zujian/l3_zujian.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
colorList:[]//随机颜色的列表
,isloding:false,

  },

  getColors(){
    this.setData({
      isloding:true
    })
//1. 需要展示loading效果
wx.showLoading({
  title: '数据加载中...',
})

    wx.request({
      url: 'https://applet-base-api-t.itheima.net/api/color',
      method:'GET',
      success:({data:res}) => {
        this.setData({
         
colorList:[...this.data.colorList,...res.data]

        })
      },
      complete:()=>{
        wx.hideLoading()//2.隐藏loading效果
        this.setData({
          isloding:false
        })
      }
    })
  }
  ,
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
this.getColors()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
console.log(this.data.colorList);
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.isloding) {
      return
    }
    this.getColors()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

2.3:  swiper

滑块视图容器在前端开发中是一个常见组件,利用它我们可以实现轮播图、滑动页面、图片预览效果等。一个完整的滑块视图组件由<swiper/>和<swiper-item/>连个标签组成,它们不能单独使用,一个<swiper/>中只能放置一个或多个<swiper-item>,放置其他节点会被删除,<swiper-item/>内部能放置任何组件,默认宽高自动设置为100%。<swiper-item/>组件作为容器没有任何特殊属性,<swiper/>组件属性如下:

indicator-dots:是否显示面板指示点,默认值为false
autoplay:是否自动切换,默认为false
current:当前所在页面的index,默认值为0
interval:自动切换时间间隔,默认值为5000
duration:滑动动画时长,默认值为1000
circular:是否采用衔接动画,默认值为false
bindchange:current改变时会触发change事件,event.detail={current:current};

<!--pages/zlfw1/zlfw1.wxml-->
<text>pages/zlfw1/zlfw1.wxml</text>
<swiper autoplay circular indicator-dots interval="800" indicator-color="#fff" indicator-active-color="#f3514f">
  <swiper-item class="zlfw">
   1
  </swiper-item>

  <swiper-item class="zlfw2">
   2
  </swiper-item>

  <swiper-item class="zlfw3">
   3
  </swiper-item>

</swiper>



/* pages/zlfw1/zlfw1.wxss */
swiper{
  background-color: green;
}
.zlfw,.zlfw2,.zlfw3{
  font-size: 120rpx;
  color: pink;
  text-align: center;
}
.zlfw2{
  background-color: blueviolet;
}
.zlfw3{
  background-color: yellow;
}

三:基础内容组件

3.1:icon图标组件
微信小程序提供了丰富的图标组件,可以应用于不同的场景。

<!--pages/zujian/zujian.wxml-->
<view>icon类型:
<block wx:for="{{iconType}}">
  <icon type="{{item}}"/>{{item}}
</block>
</view>
<view>icon大小:
<block wx:for="{{iconSize}}">
  <icon type="success" size="{{item}}"/>{{item}}
</block>
</view>
<view>icon颜色:
<block wx:for="{{iconColor}}">
  <icon type="success" size="30" color="{{item}}"/>{{item}}
</block>
</view>

3.2: text文本组件
text文本组件支持转义字符"",比如换行符\n、空格符\t

3.3:progress进度条组件
进度条可以提高用户的体验,可通过该组件看到视频长度,已观看长度…

四:表单组件

4.1 button

  <button>为按钮组件,是常用的表单组件之一,用于事件的触发以及表单的提交。其属性表如下所示。

<!--pages/biaodan/biaodan.wxml-->
<text>pages/biaodan/biaodan.wxml</text>
<button type="default">type:default</button>
<button type="primary">type:primary</button>
<button type="warn">type:warn</button>
<button type="default" bind:tap="buttonSize" size="{{size}}">改变size</button>
<button type="default" bind:tap="buttonPlain" plain="{{plain}}">改变plain</button>
<button type="default" bind:tap="buttonLoading" loading="{{loading}}">改变loading</button>

// pages/biaodan/biaodan.js
// 是否显示镂空
buttonPlain(){
  this.setData({plain:!this.data.plain})
},
// 是否显示loading图案
buttonLoading(){
  this.setData({loading:!this.data.loading})
},
4.2 radio

  <radio>单选框组件,往往需配合<radio-group>组件来使用,<radio>标签嵌套在<radio-group>当中。

  <radio-group>组件属性如下:

<radio>组件属性如下:

<!--pages/biaodan/biaodan.wxml-->
<text>单选按钮:radio-group</text>
<view>请选择城市:</view>
<radio-group bindchange="citychange">
  <radio value="西安"/>西安
  <radio value="北京"/>北京
  <radio value="上海"/>上海
  <radio value="广州"/>广州
  <radio value="深圳"/>深圳
</radio-group>
<view>你的选择:{{city}}</view>
<view>选择计算机语言</view>
<radio-group bindchange="raidochange" class="radio-group">
  <label wx:for="{{radios}}" class="radio">
  <radio value="{{item.value}}" checked="{{item.checked}}"/>{{item.name}}
  </label>
</radio-group>
<view>你的选择:{{lang}}</view>


// pages/biaodan/biaodan.js

radios:[{name:'java',value:'JAVA'},{name:'python',value:'python',checked:'true'},
{name:'php',value:'PHP'},{name:'swif',value:'Swif'}],city:'',lang:'',

citychange(event){
  this.setData({city:event.detail.value})
  // console.log(event.detail.value);
},
raidochange(event){
  this.setData({lang:event.detail.value})
  console.log(event.detail.value);
},

4.3 checkbox

  <checkbox>为复选框组件,常用于在表单中进行多项数据的选择。复选框的<checkbox-group>为父控件,其内部嵌套若干个<checkbox>子控件。

  <checkbox-group>属性如下:

<checkbox>组件的属性如下:

<text>多选按钮:</text>
<view>选择你要去的城市:</view>
<checkbox-group bindchange="cityChange">
  <label wx:for="{{citys}}">
  <checkbox value="{{item.value}}" checked="{{item.checked}}"/>
  {{item.value}}
  </label>
</checkbox-group>
<view>你选择的城市是:{{city2}}</view>

citys:[
  {name:'km',value:'昆明'},
{name:'sy',value:'三亚'},
  {name:'zh',value:'珠海',checked:'true'},
  {name:'dl',value:'大连'}],city2:'',
cityChange(event){
  this.setData({city2:event.detail.value}) 
  console.log(event.detail.value);
},

4.4 switch

  <switch>为开关选择器,常用于表单上地开关功能,属性表如下所示。

4.5 slider

<slider>为滑动选择器,用于可视化地动态改变某变量地取值。属性表如下:

4.6 picker

在微信小程序中,picker组件的功能就是下拉框,在小程序的设计中会经常用到。

属性:

除了上述通用的属性,对于不同的mode,picker拥有不同的属性。
普通选择器:mode = selector

多列选择器:mode = multiSelector

时间选择器:mode="time"

日期选择器:mode="date"

省市区选择器:mode="region" 

4.7 picker-view
 

picker-view 即 嵌入页面的滚动选择器。

4.8 input

  <input>为输入框组件,常用于文本(如姓名、年龄等信息)的输入。属性表如下:

4.9 textarea

<textarea>为多行输入框,常用于多行文字的输入。

4.10 label


  <label>是标签组件,不会呈现任何效果,但是可以用来改进表单组件的可用性。当用户在label元素内点击文本时,就会触发此控件,即当用户选择该标签时,事件会传递到和标签相关的表单控件上,可以使用for属性绑定id,也可以将空间放在该标签内部,该组件对应属性如下所示。

4.11 form

  <form>为表单控件组件,用于提交表单组件中的内容。<form>控件组件内部可以嵌套多种组件。

  组件属性如下:

<!--pages/formbd/formbd.wxml-->
<form bindsubmit="formSubit" bindreset="formReset">
  <view>姓名:
  <input type="text" name="xm"/>
  </view>
  <view>性别:
  <radio-group name="xb">
    <label >
    <radio value="男" checked/>男
    </label>
    <radio value="女"/>女
  </radio-group>
  </view>

<view>爱好:
<checkbox-group name="hobby">
  <label wx:for="{{hobbies}}">
  <checkbox value="{{item.value}}" checked="{{item.checked}}">{{item.value}}</checkbox>
  </label>
</checkbox-group>
</view>
<button form-type="submit">提交</button>
<button form-type="reset">重置</button>
</form>


// pages/formbd/formbd.js
Page({ hobby: '',data: {
hobbies:[{name:'jsj',value:'计算机',checked:'true'},
{name:'music',value:'听音乐'},
{name:'game',value:'玩电竞'},
{name:'swim',value:'游泳',checked:'true'}
], } formSubmit(e){
console.log('form发生了submit事件,携带数据为:',e.detail.value);
},
formReset(){
  console.log('form发生了reset事件');
},})

五:多媒体组件

本章节介绍微信小程序已支持的多媒体资源,分别为 image(图片)、camera(照相机)、audio(音频)、video(视频)等媒体组件。

5.1 image

image组件为图像组件,与HTML中的<img/>类似

  1. src - 图片资源地址字符串,String 类型,无默认值;
  2. mode - 图片裁剪、缩放的模式,String 类型,默认值为 'scaleToFill' ;
  3. lazy-load - 图片懒加载 (只针对 page 与 scroll-view 下的 image 有效) ,Boolean 类型,默认值为 false ;
  4. binderror - 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}, HandleEvent 类型,无默认值;
  5. binderror - 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}, HandleEvent 类型,无默认值;

有了这 5 种属性,开发者在提供了有效的资源地址后,可以决定是否让图片进行懒加载、如何裁剪和缩放图片、捕获图片加载过程出错事件和图片加载完毕事件。加载出错时可以获知出错原因,加载完毕时可以获取图片原始宽高.

5.2 audio

audio组件用来实现音乐播放,暂停

  • id - audio 组件的唯一标识, String 类型,无默认值
  • src - 音频资源地址,String 类型,无默认值;
  • loop - 是否循环播放,Bollean 类型,默认值为 false ;
  • controls - 是否显示默认控件,Boolean 类型,默认值为 false;
  • poster - 默认控件上的音频封面的图片资源地址,如果 controls 属性值为 false 则设置 poster 无效,无默认值;
  • name - 默认控件上的音频名字,如果 controls 属性值为 false 则设置 name 无效,无默认值;
  • author - 默认控件上的作者名字,如果 controls 属性值为 false 则设置 author 无效,无默认值;
  • binderror - 当发生错误时触发 error 事件,detail = {errMsg:
    MediaError.code}
  • bindplay - 当开始 / 继续播放时触发 play 事件;
  • bindpause - 当暂停播放时触发 pause 事件;
  • bindtimeupdate - 当播放进度改变时触发 timeupdate 事件,detail = {currentTime, duration} ;
  • bindended - 当播放到末尾时触发 ended 事件。
5.3  video

video用来实现视频的播放,暂停

<!--pages/formbd/formbd.wxml-->
<video src="{{src}}" controls/>
<view class="btn-area">
<button bind:tap="bindButtonTap">获取视频</button>
</view>

// pages/formbd/formbd.js
  data: {src:'',},

bindButtonTap(){
  var thar=this
  wx.chooseVideo({
    sourceType:['album','camera'],
    maxDuration:60,
    camera:['front','back'],
    success:function(res){
      thar.setData({src:res.tempFilePath})
    }
  })
},

5.4 camera


camera组件为系统相机组件,可以实现拍照或录像功能

<!--pages/formbd/formbd.wxml-->
<camera mode="normal" device-position="back" flash="odd" binderror="error" style="width: 100%; height: 350px;"/>
<button type="primary" bind:tap="takephoto">点击拍照</button>
<view>预览</view>
<image src="{{src}}" mode="widthFix"/>

// pages/formbd/formbd.js

  takephoto(){
    const ctx=wx.createCameraContext()//创建并返回camera上下为对象
    ctx.takePhoto({
      quality:'high',
      success:(res)=>{
        this.setData({src:res.tempImagePath})
      }
    })
  },
  error(e){
    console.log(e.detail);
  },

六: 其他组件

6.1 map

map组件用于在页面中显示地图或路径,常用于LBS(基于位置服务)或路径指引,能相对百度地图,高德地图,高德地图比较简单,目前具备绘制图标,路线,半径等能力,不能在croll-view,swiper,picker-view,movable-view组件中使用

6.2 canvas

canvas组件用来绘制图案,相当于一块无色透明的普通图布

<!--pages/formbd/formbd.wxml-->
<canvas canvas-id="myCanvas" style="border: 1px solid red;"/>


// pages/formbd/formbd.js
onLoad(options) {
    var ctx=wx.createCanvasContext('myCanvas')
    ctx.setFillStyle('red')
      ctx.fillRect(10,10,200,100)
      ctx.draw()},

  • 38
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值