微信小程序动态设置高度,添加动画等常用操作

获取组件高度

html 复制代码
<view class="content-view" id="target-view">
  <!-- 这里放置撑开高度的内容 -->
  <text>这是一段测试文本,用来撑开 view 的高度。这是一段测试文本,用来撑开 view 的高度。这是一段测试文本,用来撑开 view 的高度。</text>
</view>
<button bindtap="getViewHeight">获取 view 高度</button>

这里在data中声明了一个变量viewHeight 值为0

javascript 复制代码
getViewHeight: function () {
    // 创建一个选择器查询对象
    const query = wx.createSelectorQuery();
    // 选择目标 view 标签
    query.select('#target-view').boundingClientRect();
    // 执行查询操作
    query.exec((res) => {
      if (res[0]) {
        // 获取 view 的高度
        const height = res[0].height;
        this.setData({
          viewHeight: height
        });
        console.log('view 的高度为:', height);
      }
    });
  },

当点击按钮的时候,可以在控制台看到组件的高度。

动态绑定样式

上面获取到组件的高度的时候,可以把这个高度绑定给其他组件。

语法如下

html 复制代码
<view style="border: 1px solid red;width: 80%;margin:auto;height: {{viewHeight}}px;" >
 微信小程序动态绑定样式
</view>

也可以把变量的值设置为css样式代码,以字符串的形式绑定给组件。

html 复制代码
<view style="{{myStyle}}" bind:tap="changeStyle">动态设置样式</view>

动态绑定了一个字符串,设置点击事件,点击修改字符串

javascript 复制代码
 data: {
    myStyle:'color:red;font-size:50px;'
  },

 changeStyle(){
    this.setData({
      myStyle:'color:blue;font-size:70px;'
    })
  }

效果:点击前

点击后

动态绑定类名

css 复制代码
.box1{
  background-color:orange;
}
.box2{
  background-color:palevioletred;
}
html 复制代码
<view class="{{myClass}}" bind:tap="changeClass">绑定类名</view>
javascript 复制代码
myClass:'box1',
 changeClass(){
    this.setData({
      myClass:'box2'
    })
  },

效果:

点击后

添加动画

javascript 复制代码
<view class="box" animation="{{animationData}}" bindtap="startAnimation"></view> 

//css 样式很简单就不拆开写了
.box {
  width: 100px;
  height: 100px;
  background-color: lightblue;
}
javascript 复制代码
 //在data中声明一个对象
 animationData: {},
 //方法
  startAnimation() {
    // 创建一个动画实例
    var animation = wx.createAnimation({
      duration: 1000, // 动画持续时间,单位 ms
      timingFunction: 'ease', // 动画的时间曲线
    })
    // 调用动画实例的方法来设置动画属性
    animation.translateX(200).rotate(360).step()
    // 将动画实例赋值给 data 中的 animationData
    this.setData({
      animationData: animation.export()
    })
  },

点击组件,组件会旋转移动。直接给组件加上带有动画的类名和浏览器环境一样的,这里就不赘述了。在微信小程序中主要使用wx.createAnimation来实现。这两者区别 JavaScript 创建动画实例可以在运行时动态控制动画,而使用 CSS 动画则更适合静态的、预定义的动画效果。

动态添加类名/移除类名

添加类名和动态绑定类名相似,也是通过去修改变量的值来实现的。

html 复制代码
<view class="box1 {{box3}}" bind:tap="addClass" >额外添加类名</view>
.box1{
  background-color:orange;
}
.box3{
  font-size: 60px;
}
javascript 复制代码
 box3:'',
 addClass(){
   this.setData({
     box3:'box3'
   })
  },

效果

点击触发事件

移除类名

html 复制代码
<view class="box1 {{box3}}" bind:tap="addClass" >额外添加类名</view>
<button bind:tap="removeBox3">移除box3的样式</button>
.box1{
  background-color:orange;
}
.box3{
  font-size: 60px;
}
javascript 复制代码
box3:'box3',
 removeBox3(){
    this.setData({
      box3:''
    })
  },

效果:

点击按钮移除box3的样式,就是把box3设置为空字符串

end

相关推荐
fakaifa37 分钟前
点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
小程序·uni-app·php·源码下载·点大餐饮·扫码点单
Dignity_呱6 小时前
如何在不发版时,实现小程序的 AB 测试?
前端·面试·微信小程序
说私域7 小时前
基于开源 AI 大模型 AI 智能名片 S2B2C 商城小程序视角下的企业组织能力建设与破圈升级
人工智能·小程序
fakaifa15 小时前
【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
人工智能·小程序·uni-app·php·crmeb·源码下载·crmebpro
2501_915918411 天前
iOS 应用上架全流程实践,从开发内测到正式发布的多工具组合方案
android·ios·小程序·https·uni-app·iphone·webview
上海云盾第一敬业销售1 天前
小程序被爬虫攻击,使用waf能防护吗?
爬虫·小程序
suncentwl1 天前
做一个答题pk小程序多少钱?
小程序·答题小程序·知识竞赛·答题pk软件
说私域1 天前
基于开源链动2+1模式AI智能名片S2B2C商城小程序的流量转化策略研究
人工智能·小程序
咸虾米_1 天前
微信小程序通过uni.chooseLocation打开地图选择位置,相关设置及可能出现的问题
微信小程序·小程序·uniapp开发·小程序地图api
未来之窗软件服务1 天前
蔬菜批发小程序:生产商的数字化转型利器——仙盟创梦IDE
小程序·自动化·仙盟创梦ide·东方仙盟·蔬菜批发·批发系统