小程序事件绑定 和 常见组件的五种组件

微信小程序

小程序事件绑定

我们在js文件中写逻辑, 然后在wxml文件中写标签,最后我们用模拟器来展示最终页面

// 在wxml文件中写标签
<!-- 
    1.需要给input标签绑定 input事件
      绑定的关键字 bindinput
    2.如何获取输入框的值
      通过事件源对象来获取
      e.detail.value
    3.把输入框的值 赋值到data中
      不能直接这样写
        1.this.data.num=e.detail.value
        2.thisnum=e.detail.value
      正确写法
        this.setData({
          num:e.detail.value
        })
      4.需要加入一个点击事件
        1.bindtap
        2.无法在小程序当中的 事件中 直接来传参
        3.通过自定义属性的方式来传递参数
 -->
 <input type="text" bindinput="handleInput" />
 <button bindtap="handletap" data-item="{{1}}">+</button>
 <button bindtap="handletap" data-item="{{-1}}">-</button>
<view>
    {{num}}
</view>
  
// 在js文件中写逻辑
Page({
    data: {
        num:0
    },
    // 输入框的input事件的执行逻辑
    handleInput: function(e){
        console.log('微信小程序')
        console.log(e) // 事件源
        console.log(e.detail.value); // 获取输入框输入的值
        this.setData({
          num:e.detail.value
        })
    },
    // 加 减 按钮的事件
    handletap(e){
      // 获取自定义的属性 item
      const item = e.currentTarget.dataset.item
      // console.log(item)
      this.setData({
        num:this.data.num + item
      })
    }
})

在这里插入图片描述


样式 WXSS

WXSS(WeiXin Style Sheets)是⼀套样式语⾔,⽤于描述 WXML 的组件样式。

与 CSS 相⽐,WXSS 扩展的特性有: 1) 响应式⻓度单位:rpx 2) 样式导⼊

1.1 尺寸单位

rpx (responsive pixel): 可以根据屏幕宽度进⾏⾃适应。规定屏幕宽为 750rpx 。

如在 iPhone6 上,屏幕宽度为 375px ,共有750个物理像素,则 750rpx = 375px = 750物理像素,

1rpx = 0.5px = 1物理像素 。

设备rpx换算px (屏幕宽度/750)px换算rpx (750/屏幕宽度)
iPhone51rpx = 0.42px1px = 2.34rpx
iPhone61rpx = 0.5px1px = 2rpx
iPhone6 Plus1rpx = 0.552px1px = 1.81rpx

注意: 开发微信小程序时设计师可以⽤ iPhone6 作为视觉稿的标准.

尺寸单位 小案例

我们在在wxml文件中写标签, 然后在wxss写样式,最后我们用模拟器来展示最终页面

// wxml文件中写标签
<view>
  rpx
</view>
// 在wxss写样式
/* 
  1.小程序中 不需要主动来引入样式文件
  2.需要把页面中某些元素的单位 由 px 改成 rpx
    1.设计稿 750px
      1px = 1rpx
    2.把屏幕宽度 改成 375px
      375px = 750rpx
      1px = 2rpx
      0.5px = 1rpx 
    3.存在一个设计稿 宽度 414 或者 未知 page
      1.设计稿 page 存在一个元素 宽度为 100px
      2.拿以上的需求 去实现 不同的宽度的页面适配

      page px = 75rpx
      1px = 750rpx / page
      100px = 750rpx * 100 / page
    4.利用一个属性 calc属性 css 和 wxss都支持这个属性
      1.750 和 rpx 中间不要留空格
      2.运算符的两边页不要留空格
*/
view{
  width: 200rpx;
  height: 200rpx;
  font-size: 40rpx;
  background-color: aqua;
  /* 以下为错误代码 */
  /* width: 750 rpx * 100 / 375; */
  width:calc(750rpx * 100 / 375)
}

在这里插入图片描述

1.2 样式导入

wxss中直接就⽀持,样式导⼊功能。 使⽤ @import 语句可以导⼊外联样式表,只⽀持相对路径

样式导入 小案例

我们在最外层创建css样式文件, 然后在需要它的时候引入它, 最后我们用模拟器来展示最终页面

// 最外层创建css样式文件
view{
  color: pink;
  font-size: 35px;
}
// 在需要它的时候引入它
/* 
  1.引入的 代码 是通过 @imopt 来引入
  2.路径 只能写相对路径
*/
@import "../../styles/css.wxss"

在这里插入图片描述


1.3 选择器

特别需要注意的是 小程序 不⽀持通配符 * 因此以下代码⽆效!

*{
    margin:0;
    padding:0;
    box-sizing:border-box; 
 }

⽬前⽀持的选择器有:

选择器样例样例描述
.class.intro选择所有拥有 class= intro 的组件
#id#firstname选择拥有 id= firstname 的组件
elementview选择所有 view 组件
element, elementview,checkbox选择所有⽂档的 view 组件和所有的 checkbox 组 件
nth-child(n)view:nth-child(n)选择某个索引的标签
::afterview::after在 view 组件后边插⼊内容
::beforeview::before在 view 组件前边插⼊内容

1.4 小程序中使用less

原⽣小程序不⽀持 less 其他基于小程序的框架⼤体都⽀持,如 wepy , mpvue , taro 等。

但是仅仅因为⼀个less功能,⽽去引⼊⼀个框架,肯定是不可取的。因此可以⽤以下⽅式来实现

  1. 编辑器是 vscode
  2. 安装插件 easy less

在这里插入图片描述

  1. 在vs code的设置中加⼊如下,配置
"less.compile": {
    "outExt":".wxss"
 }

4.在要编写样式的地⽅,新建 less ⽂件,如 index.less ,然后正常编辑即可。

在这里插入图片描述


常见组件

小程序的常⽤布局组件: view,text,rich-text,button,image,navigator,icon,swiper,radio,checkbox 等

1.1 view

代替 原来的 div 标签

 <view hover-class="h-class">
 点击我试试
 </view>

在这里插入图片描述

1.2 text

1.⽂本标签 2. 只能嵌套text 3.⻓按⽂字可以复制(只有该标签有这个功能)4.可以对空格 回车 进行编码

属性名类型默认值说明
selectableBooleanfalse⽂本是否可选
decodeBooleanfalse是否解码
模拟器最终效果:

在这里插入图片描述


1.3 image
  1. 图片标签,image组件默认宽度320px、⾼度240px 2) ⽀持懒加载
属性名类型默认值说明
srcString图片资源地址
modeStringscaleToFill图片裁剪、缩放的模式
lazy-loadBooleanfalse图片懒加载

mode 有效值: mode 有 13 种模式,其中 4 种是缩放模式,9种是裁剪模式。

模式说明
缩放scaleToFill不保持纵横比缩放图片,使图片的宽⾼完全拉伸至填满 image 元素
缩放aspectFit保持纵横比缩放图片,使图片的长边能完全显示出来。
缩放aspectFill保持纵横比缩放图片,只保证图片的短边能完全显示出来。
缩放widthFix宽度不变,高度自动变化,保持原图宽高比不变
裁剪top不缩放图片,只显示图片的顶部区域
裁剪bottom不缩放图片,只显示图片的底部区域
裁剪center不缩放图片,只显示图片的中间区域
裁剪left不缩放图片,只显示图片的左边区域
裁剪right不缩放图片,只显示图片的右边区域
裁剪top left不缩放图片,只显示图片的左上边区域
裁剪top right不缩放图片,只显示图片的右上边区域
裁剪bottom left不缩放图片,只显示图片的左下边区域
裁剪bottom right不缩放图片,只显示图片的右下边区域
模拟器效果为:

在这里插入图片描述


1.4 swiper

微信内置轮播图组件

在wxml文件中写轮播图, wxss文件中写样式 , 模拟器上展示最终结果

// 在wxml文件中写轮播图
<!-- 
  1. 轮播图外层容器 swiper
  2. 每一个轮播项 swiper-item
  3. swiper标签存在 样式  默认宽度 100% ⾼度 150px, 高度无法有内容撑开
  4.先找出 原图的宽度和高度 等比例 给swiper定宽度和高度
    原图的宽度和高度 640 * 200 px
    swiper 宽度 / swiper 高度 = 原图的宽度 / 原图的高度
    swiper 高度  = swiper 宽度 * 原图的高度 / 原图的宽度
    height: 100vw * 200 / 640
  5. autoplay 自动轮播
  6. interval 修改轮播时间
  7. circular 衔接轮播
  8. indicator-dots 开启 分页器
 -->
 <swiper circular autoplay interval="1000" indicator-dots>
  <swiper-item><image mode="widthFix" src="https://aecpm.alicdn.com/simba/img/TB14ab1KpXXXXclXFXXSutbFXXX.jpg_q50.jpg"></image></swiper-item>
  <swiper-item><image mode="widthFix" src="//img.alicdn.com/imgextra/i4/2206686532409/O1CN01AvWrxo1TfMoGhlUq5_!!2206686532409-0-lubanimage.jpg"></image></swiper-item>
  <swiper-item><image mode="widthFix" src="//img.alicdn.com/imgextra/i4/2206686532409/O1CN01Wfw7aW1TfMoFI0ECZ_!!2206686532409-0-lubanimage.jpg"></image></swiper-item>
 </swiper>

// wxss文件中写样式
swiper{
  width: 100%;
  height: calc(100vw * 200 / 640);
}
image{
  width: 100%;
}

在这里插入图片描述

轮播图常用属性:
属性名类型默认值说明
indicator-dotsBooleanfalse是否显示⾯板指示点
indicator-colorColorrgba(0, 0, 0, .3)指示点颜⾊
indicator-active-colorColor#000000当前选中的指示点颜⾊
autoplayBooleanfalse是否自动切换
intervalNumber5000自动切换时间间隔
circularBooleanfalse是否循环轮播

1.5 navigator

导航组件 类似超链接标签

在wxml文件中写navigator, 模拟器上展示最终结果

// 在wxml文件中写navigator
<!-- 
  导航组件 navigator
 -->

<navigator url="/pages/wx07/wx07">轮播图页面</navigator>
<navigator url="/pages/index/index">tabber页面</navigator>
<navigator open-type="redirect" url="/pages/wx07/wx07">轮播图页面</navigator>
<navigator open-type="switchTab"  url="/pages/index/index">switchTab 跳到 tabber页面</navigator>
<navigator open-type="reLaunch"  url="/pages/index/index">reLaunch 随便跳</navigator>

在这里插入图片描述

navigator常用属性:
属性名类型默认值说明
targetStringself在哪个目标上发⽣跳转,默认当前小程序,可选值 self 和 miniProgram
urlString当前小程序内的跳转链接
open- typeStringnavigate跳转方式
open-type 有效值:
说明
navigate保留当前页面,跳转到应用内的某个页面,但是不能跳到tabbar 页面
redirect关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到tabbar 页面。
switchTab跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
reLaunch关闭所有页面,打开到应⽤内的某个页面
navigateBack关闭当前页面,返回上⼀页面或多级页面。可通过 getCurrentPages() 获取当 前的页面栈,决定需要返回几层
exit退出小程序,target= miniProgram 时⽣效

1.6 rich-text

富文本标签可以将字符串解析成 对应标签,类似 vue中的 v-html 标签

在wxml文件中写标签, js文件中解析 , 模拟器上展示最终结果

// 在wxml文件中写标签
<!-- 
  rich-text 富文本标签
  1. nodes属性来实现
    1) 接收标签字符串
    2) 接收对象数组
 -->
 <rich-text nodes="{{html}}"></rich-text>
// js文件中解析
Page({
  data: {
    html:[
      {
        name:'div',
        attrs:{
          class:'my-div',
          style:'color:red'
        },
        children:[
          {
            name:'p',
            attrs:{},
            children:[
              {
                type:'text',
                text:'hello'
              }
            ]
          }
        ]
      },
    ]
  }
})

在这里插入图片描述

nodes属性: nodes 属性⽀持 字符串 和 标签节点数组
属性说明类型必填备注
name标签名string⽀持部分受信任的 HTML 节点
attrs属性object⽀持部分受信任的属性,遵循 Pascal 命名法
children⼦节点列表array结构和 nodes ⼀致
⽂本节点:type = text
属性说明类型必填备注
text⽂本string⽀持entities

nodes 不推荐使⽤ String 类型,性能会有所下降.

rich-text 组件内屏蔽所有节点的事件。

attrs 属性不⽀持 id ,⽀持 class 。

name 属性⼤小写不敏感。 如果使⽤了不受信任的 HTML 节点,该节点及其所有⼦节点将会被移除。

img 标签仅⽀持⽹络图片。


注意

1.rpx (responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为 750rpx 。
2.开发微信小程序时设计师可以⽤ iPhone6 作为视觉稿的标准.
3.wxss中直接就⽀持,样式导⼊功能。 使⽤ @import 语句可以导⼊外联样式表,只⽀持相对路径
4.小程序的常⽤布局组件: view,text,richtext,button,image,navigator,icon,swiper,radio,checkbox 等

总结

本篇文章主要写了小程序事件绑定 , 常见组件的view text image swiper navigator rich-text组件,明天将把剩余的常见组件更新完毕
如果遇到任何疑问请移步微信小程序官网, 官网有更加详细的教程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值