微信小程序实现tab及瀑布流页面

news2024/9/25 19:14:40

一、效果

 二、代码

复制代码可以直接用

1、json代码

{
  "usingComponents": {},
  "navigationStyle": "custom"
}

2、xml代码

<!--pages/find_module/findPage.wxml-->
<view class="container_serach">
  <!-- 搜索模块 -->
  <!-- 头部搜索 -->
  <view class="title_search">
    <view class="seeck_md" bindtap="finish_back">
      <!--消息-->
      <view class="msg" bindtap="open_msg">
        <image class="msg_ic" src="/images/titelsearch/search_msg.png">
        </image>
        <text class="msg_txt">消息</text>
        <view class="msg_tag" hidden="{{noNewMsgs}}" />
      </view>
      <!--头标-->
      <view class="ahead_md" bindtap="searchtopage">
        <image class="title_icon_ss" hidden="true" src="/images/tabars/person_select.png">
        </image>
        <!--搜索-->
        <view class="search_md">
          <image class="seeck_ic" src="/images/titelsearch/search_icon.png">
          </image>
          <image class="vioce_icon" src="/images/titelsearch/search_vioce.png">
          </image>
        </view>
      </view>
      <!-- 退出 -->
      <view class="logout" hidden="true">
        <image class="logout_ic" src="/images/titelsearch/search_logout.png">
        </image>
        <text class="logout_txt">退出</text>
      </view>
    </view>
  </view>
  <!-- 头部搜索 -->
  <!-- Tab布局 推荐 营养 跌倒-->
  <!-- 导航栏navigationbar -->
  <scroll-view class="scroll-view_H" scroll-x="true" bindscroll="scroll" style="width: 100% ; background:white">
    <view class='navBox'>
      <block wx:for="{{dataHubList}}" wx:key="index" wx:id="index" wx:for-item="itemName">
        <view class='titleBox' id="{{index}}" bindtap='tabTitleClick' data-idx='0'>
          <text class="{{index == currentIndex ? 'fontColorBox' : ''}}">{{itemName.name}}</text>
          <hr class="{{index == currentIndex ? 'lineBox' : 'notLineBox'}}" />
        </view>
      </block>
    </view>
  </scroll-view>

  <!-- body -->
  <!-- 内容布局 -->
  <swiper class='swiperTtemBox' bindchange='pagechange' duration="300" current='{{currentIndex}}'>
    <block wx:for="{{4}}" wx:key="parent_index" wx:id="parent_index" wx:for-item="parent_itemName">
      <!--健康知识列表 catchtouchmove='onTouchMove' -->
      <swiper-item class='swiperTtemBox'>
        <!-- 列表 -->
        <scroll-view class='scbg' scroll-y='true'>
          <!-- 轮播图 -->
          <view class="page-section" style="margin-top: 30rpx;">
            <swiper indicator-dots="{{true}}" autoplay="{{true}}" circular="{{true}}" vertical="{{false}}" interval="{{3200}}" duration="{{200}}" previous-margin="{{0}}px" next-margin="{{0}}px">
              <block wx:for="{{deal}}" wx:key="index" wx:for-item="itemName">
                <swiper-item style="border-radius: 10rpx;background-color: transparent;">
                  <image class="swiper-item" src="{{itemName.url}}"></image>
                  <text class="swiper_txt">{{itemName.name}}</text>
                </swiper-item>
              </block>
            </swiper>
          </view>

          <!-- 列表 -->
          <view class="list_title">{{dataHubList[currentIndex].name}}</view>
          <view class="waterfall">
            <block wx:for="{{list}}" wx:key="index" wx:for-index="id" wx:for-item="itemName">
              <view class="item">
                <image class="list_item_pic" mode='scaleToFill' src="{{itemName.url}}">
                </image>
                <text class="item_conn_des">{{itemName.name}}</text>
              </view>
            </block>
          </view>
        </scroll-view>
      </swiper-item>
    </block>
  </swiper>

</view>

3、css代码

/* pages/find_module/findPage.wxss */

/* 页面全局样式设置 */
page {
  background: #eeecec;
  left: 0rpx;
  right: 0rpx;
}

/* scroll-view去掉滚动条 */
scroll-view ::-webkit-scrollbar {
  display:none;
  width:0;
  height:0;
  color:transparent;
}

.container_serach {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 91%;
  left: 0rpx;
  right: 0rpx;
  top: 0rpx;
  overflow: hidden;
}

/* 头部搜索 */

/* 搜索标题 */
.title_search {
  background: linear-gradient(to right, #0455a7, #62c8ec);
  height: 170rpx;
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  justify-content: flex-start;
}

/* 搜索模块样式 */
.seeck_md {
  display: flex;
  flex-direction: row;
  width: 100%;
  justify-content: space-between;
  align-items: flex-end;
}

/* 头部头像样式 */
.ahead_md {
  display: flex;
  flex-direction: row;
  width: 100%;
  margin-bottom: 20rpx;
}

.title_icon_ss {
  height: 70rpx;
  width: 70rpx;
  background-color: white;
  border-radius: 35rpx;
  margin-left: 20rpxrpx;
}

/* 消息提示 */
.msg_tag {
  position: absolute;
  background-color: #ff6162;
  width: 14rpx;
  height: 14rpx;
  border-radius: 7rpx;
  margin-bottom: 72rpx;
  margin-left: 24rpx;
}

/* 搜索部分bg*/
.search_md {
  background-color: #69ccf1;
  margin-left: 10rpx;
  height: 70rpx;
  width: 390rpx;
  border-radius: 35rpx;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
}

/* 搜索 */
.seeck_ic {
  height: 46rpx;
  width: 46rpx;
  margin-left: 20rpx;
  border-radius: 23rpx;
}

/* 语音 */
.vioce_icon {
  height: 46rpx;
  width: 46rpx;
  border-radius: 23rpx;
  margin-right: 20rpx;
}

/* 消息 */
.msg {
  width: 100rpx;
  height: 90rpx;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-right: 0rpx;
  margin-left: 30rpx;
}

/* 消息图片标记 */
.msg_ic {
  height: 44rpx;
  width: 48rpx;
  margin-right: 2rpx;
  margin-right: 10rpx;
}

/* 消息文本 */
.msg_txt {
  font-size: 24rpx;
  height: 40rpx;
  width: 60rpx;
  margin-bottom: 20rpx;
  align-items: flex-start;
  color: #fff;
  display: flex;
  justify-content: flex-start;
}

/* 退出 */
.logout {
  width: 100rpx;
  height: 90rpx;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-right: 30rpx;
}

/* 退出页面按钮样式 */
.logout_ic {
  height: 44rpx;
  width: 48rpx;
  margin-right: 2rpx;
}

/* 退出页面文本描述样式 */
.logout_txt {
  font-size: 24rpx;
  height: 40rpx;
  width: 60rpx;
  margin-bottom: 20rpx;
  align-items: flex-start;
  color: #fff;
  display: flex;
  justify-content: flex-start;
}

/* 搜索标题 */
/* 头部搜索  */

/* 轮播图 */
.page-body {
  padding-top: 60rpx;
}

.page-section {
  width: 100%;
  margin-bottom: 40rpx;
  box-sizing: border-box;
  padding-left: 30rpx;
  padding-right: 30rpx;
}

.swiper-item {
  height: 150px;
  width: 100%;
  border-radius: 10rpx;
}

/* 轮播图内容标题txt */
.swiper_txt {
  color: #666666;
  font-size: 30rpx;
  width: 240rpx;
  font-weight: bolder;
  position: relative;
  bottom: 70rpx;
  margin-left: 20rpx;
  white-space: nowrap;
  text-overflow: ellipsis;
  align-items: flex-start;
  display: -webkit-box;
  overflow: hidden;
}

/* 轮播图 */

/* tab标签模块 */
.navBox {
  width: 100%;
  height: 80rpx;
  background: white;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}

/* 子iten */
.titleBox {
  /* 未选中文字的样式 */
  color: rgb(168, 170, 175);
  font-size: 30rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  width: 200rpx;
  height: 100%;
}

.fontColorBox {
  /* 文字默认颜色 */
  color: #00c6ac;
}

.lineBox,
.notLineBox {
  /* 选中及未选中底线共同样式 */
  width: 60rpx;
  height: 4rpx;
  margin-top: 16rpx;
  border-radius: 4rpx;
}

.lineBox {
  /* 选中底线样式 */
  background: #00c6ac;
  width: 180rpx;
  height: 4rpx;
  margin-top: 16rpx;
  border-radius: 4rpx;
}

#aiding,
#aidfinish {
  margin-left: 0rpx;
}

/* tab标签模块 */


/* 列表部分 */
/* 列表页面 */
.swiperTtemBox {
  height:calc(100vh - 360rpx);
  overflow: scroll;
  margin: 0rpx 0rpx;
  background: #f0f0f0;
  font-size: 28rpx;
}

/* scrollview */
.scbg {
  background-color: #f0f0f0;
  width: 100%;
  height: calc(100vh - 360rpx);
  left: 0rpx;
  right: 0rpx;
  top: 0rpx;
  padding-bottom: 20rpx;
}

/* 列表标题 */
.list_title {
  background-color: transparent;
  margin-right: 30rpx;
  margin-left: 30rpx;
  margin-bottom: 20rpx;
  color: #000;
  font-weight: 800;
  font-size: 36rpx;
}

/* item */
.waterfall {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 0.5em;
  grid-auto-flow: row dense;
  grid-auto-rows: 15px;
  margin-left: 30rpx;
  margin-right: 30rpx;
}

.waterfall .item {
  width: 100%;
  background: #f0f0f0;
  color: #ddd;
}

.waterfall .item:nth-of-type(2n+1) {
  grid-row: auto / span 7;
  border-radius: 10rpx;
}

.waterfall .item:nth-of-type(2n+2) {
  grid-row: auto / span 5;
  border-radius: 10rpx;
}

/* .waterfall .item:nth-of-type(3n+3) {
  grid-row: auto / span 12;
  border-radius: 10rpx;
} */

/* item图片 */
.list_item_pic {
  height: 100%;
  width: 100%;
  border-radius: 10rpx;
}

/* item文本 */
.item_conn_des {
  color: #666666;
  font-size: 26rpx;
  width: 240rpx;
  font-weight: bolder;
  position: relative;
  bottom: 70rpx;
  margin-left: 10rpx;
  white-space: nowrap;
  text-overflow: ellipsis;
  align-items: flex-start;
  display: -webkit-box;
  overflow: hidden;
}

/* 列表部分 */

4、js代码

说明下js文件中的dataurl为图片地址,打不开的可以自行百度换一个图片替代

  {

      name: '面包',

      num: '1',

      title: '面包',

      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/b0fe4413-9055-4b6c-861d-88f38860eff5.png',

    },

// pages/find_module/findPage.ts
Page({

  data: {
    deal:[{name: '裤子',url:'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/cb643adf-0653-4e25-82c9-e27c99ef2a4e.png'},{name:'鞋子',url:'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/06/24/da9c497c-c822-45ad-89da-3ad8b50e6ed3.png'},{name:'外套',url:'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/b0fe4413-9055-4b6c-861d-88f38860eff5.png'}],
    list: [{
      name: '电视',
      num: '1',
      title: '测试数据测试测试测试测测试数据测试测试测试测测试数据测试测试测试测测试数据测试测试测试测',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/cb643adf-0653-4e25-82c9-e27c99ef2a4e.png',
    },
    {
      name: '家电',
      num: '1',
      title: '测试数据测试测试测试测测试数据测试测试测试测测试数据测试测试测试测测试数据测试测试测试测',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/06/24/da9c497c-c822-45ad-89da-3ad8b50e6ed3.png',
    },
    {
      name: '鞋子',
      num: '1',
      title: '鞋子',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/b0fe4413-9055-4b6c-861d-88f38860eff5.png',
    },
    {
      name: '水果',
      num: '1',
      title: '水果',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/cb643adf-0653-4e25-82c9-e27c99ef2a4e.png',
    },
    {
      name: '水桶',
      num: '1',
      title: '水桶',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/b0fe4413-9055-4b6c-861d-88f38860eff5.png',
    },
    {
      name: '饮料',
      num: '1',
      title: '饮料',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/06/24/da9c497c-c822-45ad-89da-3ad8b50e6ed3.png',
    },
    {
      name: '生鲜',
      num: '1',
      title: '生鲜',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/b0fe4413-9055-4b6c-861d-88f38860eff5.png',
    },
    {
      name: '肉类',
      num: '1',
      title: '肉类',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/cb643adf-0653-4e25-82c9-e27c99ef2a4e.png',
    },
    {
      name: '面包',
      num: '1',
      title: '面包',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/b0fe4413-9055-4b6c-861d-88f38860eff5.png',
    },
    {
      name: '大米',
      num: '1',
      title: '大米',
      url: 'http://183.214.193.179:9000/zykj-cloud-prod/undefined/2022/04/14/cb643adf-0653-4e25-82c9-e27c99ef2a4e.png',
    }
    ],
    dataHubList:[
      {
        name:'推荐',
        id:0
      },
      {
        name:'营养',
        id:1
      },
      {
        name:'跌倒',
        id:2
      },
      {
        name:'应急',
        id:3
      }
    ],
    currentIndex:0,
    findChoose: true,//选中标记
  },

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

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

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

  },

  // tab事件监听
  tabTitleClick:function(e:any){
    //  console.log("===当前选择tabid==="+JSON.stringify(e.currentTarget.id));
     var that = this;
     that.setData({
       //拿到当前索引并动态改变
       currentIndex: e.currentTarget.id
     })

  },

  // 页面事件
  pagechange:function(e:any){
    // console.log("===sankni==="+JSON.stringify(e));
    var that = this;
    that.setData({
      //拿到当前索引并动态改变
      currentIndex: e.detail.current
    })
  },

  // 列表滑动切换事件监听
  onTouchMove:function(){
    
  },

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

  },

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

  },

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

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

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

  },

   // 打开消息页面
   open_msg: function () {
    wx.navigateTo({
      url: '/pakagemsg/pages/msg/msg'
    })
  },

    // 搜索
    finish_back: function () {
      wx.showToast({
        title: '暂无可搜索数据...',
        icon: 'loading',
        mask: true,
        duration: 1000
      })
      // wx.navigateTo({
      //   url: "/pages/healthyhead/searchmodule/searchapge"
      // })
    },
  
    // 健康页
    first_select: function () {
      wx.redirectTo({
        url: "/pages/home/healthypage"
      })
    },
  
    // 服务
    four_select: function () {
      wx.redirectTo({
        url: '/pages/services/servicespage'
      })
    },
  
    //我的
    five_select: function () {
      wx.redirectTo({
        url: '/pages/personal/myinfo'
      })
    },

  //拨号
  three_select: function () {
    wx.showModal({
      content: '是否发起一键呼救?',
      confirmText: '确定',
      cancelText: '取消',
      success(res) {
        if (res.confirm) {
          wx.makePhoneCall({
            phoneNumber: '120',
            success: function () {
              console.log("拨打电话成功!")
            },
            fail: function () {
              console.log("拨打电话失败!")
            }
          })
          console.log('用户点击确定')
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })
  },

})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java EE 企业级应用开发教程题库(第二版)

前言 Java EE这是一门偏向于实践的课&#xff0c;奈何考试理论居多。一学期想搞懂三个框架&#xff0c;嘿嘿&#xff0c;难哦&#xff01;如果你是大一大二的同学&#xff0c;认认真真学习&#xff0c;真的有用。如果你是大三的同学&#xff0c;像就业并且走这个方向的同学&…

VMware Horizon 8 运维系列(一)windows系统重启被禁用的ipv6功能

前言 Horizon 8 在创建桌面池之前,需要对模板虚拟机进行配置,其中会用到windows优化工具,通过禁用一些不必要的服务或功能,让系统达到优化的效果。 最近客户提出一个需求:需要对虚拟机开启ipv6功能,并同时使用ipv6地址。通过查看模板系统,ipv6已经被优化工具禁用,所以需…

SSM整合快速入门案例(二)

文章目录 前言一、表现层与前端数据传输协议定义二、表现层与前端数据传输协议实现三、异常处理器四、项目异常处理五、前后台协议联调实现CRUD- - 查询- - 添加- - 修改- - 删除 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c…

Netty核心源码剖析(五)

1.Netty核心组件EventLoop源码剖析 1>.NioEventLoop继承图 说明: ①.ScheduledExecutorService接口表示是一个定时任务接口,EventLoop可以接受定时任务; ②.EventLoop接口:Netty 接口文档说明该接口作用:一旦Channel注册了,就处理该Channel对应的所有I/O操作; ③.Single…

学成在线----day7

1、 视频处理-技术方案 1. 作业分片方案 掌握了xxl-job的分片广播调度方式&#xff0c;下边思考如何分布式去执行学成在线平台中的视频处理任务。 任务添加成功后&#xff0c;对于要处理的任务会添加到待处理任务表中&#xff0c;现在启动多个执行器实例去查询这些待处理任务…

FPGA基础知识-层次建模的概念

学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 理解数字电路设计中自底向上和自顶向下的设计方法&#xff1b; 解释verilog中模块和模块实例之间的区别&#xff1b; 学习从4中不同的抽象角度来描述同一个模块&#xff1b; 解释仿真中的各个组成部分&#xf…

动态NAT过载配置与验证实验

动态NAT过载配置与验证实验 【实验目的】 部署端口地址转换。熟悉端口地址转换的应用方法。验证配置。 【实验拓扑】 实验拓扑如图所示。 实验拓扑 设备参数如表所示。 设备参数表 设备 接口 IP地址 子网掩码 默认网关 R1 f0/0 192.168.10.1 255.255.255.0 N/A …

《低代码指南》低代码开发平台Noodl即将开源

Noodl 是一个低代码开发平台,让设计师、开发者能够用低代码的可视化编程方法构建强大的 Web 应用。目前 Noodl 已被亚马逊、三星、沃尔玛等财富 500 强企业应用于原型设计到生产环境中。 日前,Noodl 官方发出公告表示,将从现有的付费订阅模式向开源模式过渡。 Noodl 目前的…

FineReport 连接mysql报错 当前驱动加载路径...

报错内容&#xff1a; 原因为帆软自带的jar包与当前使用的mysql&#xff08;8.0&#xff09;版本不一致&#xff0c;需要去官网下载对应连接的jar包 官网下载地址… 下载后在帆软对应路径替换掉jar包即可 FineReport_11.0\webapps\webroot\WEB-INF\lib

海格里斯HEGERLS四向穿梭车系统比件箱自动化解决方案有哪些突出优势?

随着仓储物流、电商行业的快速发展&#xff0c;自动化立体库的型式和技术日益完善&#xff0c;除了典型的单深度单货位立体库外&#xff0c;也逐渐发展了双深度和多货位的立体仓库。在自动化存储设备方面&#xff0c;除堆垛机外&#xff0c;利用四向穿梭车、子母车等技术构成的…

软件自动化测试基本流程(附流程图)

“自动化测试与软件开发过程从本质上来讲是一样的,无非是利用自动化测试工具(相当于软件开发工具),经过对测试需求的分析(软件过程中的需求分析),设计出自动化测试用例(软件过程中的需求规格),从而搭建自动化测试的框架(软件过程中的概要设计),设计与编写自动化脚本(详细设计与…

网络安全合规-网络安全架构

一、安全框架及模型定义 信息安全模型是用于精确和形式的描述信息系统的安全特征,以及用于解释系统安全相关行为的理由。 安全模型的作用&#xff1a; 准确地描述安全的重要方面与系统行为的关系。 提高对成功实现关键安全需求的理解层次。 从中开发出一套安全性评估准则&…

【来不及刷题之】37、排序链表(链表归并排序)

使用直接插入排序时间复杂度太多无法通过&#xff0c;使用归并排序&#xff0c;主要有三个步骤&#xff1a; 寻找链表的中间结点&#xff0c;断开成两个等长的链表 对这两个链表分别排序 &#xff08;递归&#xff09; 合并两个排序链表 思路比较简单&#xff0c;但是这里寻…

全解析!汽车APP面临的18种攻击风险

目录 车企App普遍面临的攻击风险 技术风险 合规风险 《白皮书》提供两大安全解决方案 App加固 App隐私合规检测 近日&#xff0c;顶象发布《车企App安全研究白皮书》。该白皮书总结了目前汽车公司App所面临的主要技术威胁和合规风险&#xff0c;详细分析了这些风险产生的…

<Android开发> 集成so库

&#xff1c;Android开发&#xff1e; 集成so库 &#xff1c;Android开发&#xff1e; HAL层集成第三方so库 一 前言 在笔者的另一个文章&#xff1c;Android开发&#xff1e; HAL层集成第三方so库 分析了如何在hal层将第三方的so库文件集成到系统中&#xff1b;本文其实与其…

用组件注解符精简Spring配置文件

一、利用组件注解符精简Spring配置文件 &#xff08;一&#xff09;创建新包 创建net.huawei.spring.day02包 &#xff08;二&#xff09;复制四个类 &#xff08;三&#xff09;修改杀龙任务类 package net.huawei.spring.day02;import org.springframework.stereotype.C…

索引的最左匹配原则全面分析

简介 组合索引中的最左优先&#xff0c;以组合索引中最左边的列为起点任何连续的索引都能匹配上。如果遇到范围查询(>、<、between、like)就会停止匹配。 准备 表 CREATE TABLE test (id bigint(11) NOT NULL,column1 int DEFAULT NULL,column2 int DEFAULT NULL,col…

振弦采集仪在岩土工程安全监测使用的解决方案

振弦采集仪是一种岩土工程安全监测仪器&#xff0c;主要用于监测建筑物、桥梁、隧道、地铁等工程结构的动态响应&#xff0c;以及岩土体的振动情况。其工作原理是通过振弦传感器采集结构或岩土体的振动信号&#xff0c;再通过数据采集系统进行处理和分析&#xff0c;得出结构或…

一文让你快速写出高效的软件测试用例

前言 编写测试用例的目的就是确保测试过程全面高效、有据可查。但要编写出高效的测试用例&#xff0c;需要搞清楚什么是测试用例&#xff0c;以及如何编写出高效的测试用例&#xff1f;接下来将从以下几个部分来进行展开 1、什么是测试用例 2、如何编写测试用例 3、软件测试学…

element-plus的el-select实现触底加载更多(新版本报错踩坑)

前言 element-plus新版增加了一个属性&#xff0c;且默认为true&#xff0c;使得下拉菜单被插入到了body元素下。即.el-select下默认不包含.el-select-dropdown了。 现象 当依旧按照之前的方式&#xff0c;封装自定义指令&#xff0c;实现滚动到el-select下拉菜单的底部&…