如何快速生成一个H5滑动的卡片

这篇具有很好参考价值的文章主要介绍了如何快速生成一个H5滑动的卡片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 单页

 <ul class="combo">
        <li v-for="(item, index) in arr" :key="index">
          <div class="combo-name">{{ item.A }}</div>
          <div class="combo-price">{{ item.B }}</div>
          <div class="combo-button" @click="handleImmediatelyData(item, idx)">
            立即办理
          </div>
        </li>
      </ul> 

  arr: [
        {
          A: "套餐打折",
          B: "五G套餐专享",
       
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
          
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
          
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
       
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
    
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
   
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
  
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",
  
        },
        {
          A: "套餐打折",
          B: "五G套餐专享",

        },
      ],




  .combo {
      width: 100%;
      // height: 86px;
      box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.05);
      border-radius: 0px 0px 0px 0px;
      opacity: 1;
      margin-top: 12px;
      display: -webkit-box;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      .combo::-webkit-scrollbar {
        display: none;
        // width: 0px;
        opacity: 0;
      }
      li {
        display: flex;
        justify-content: center;
        align-items: center;
        flex-direction: column;
        text-align: center;
        width: 90px;
        height: 90px;
        // background: linear-gradient(320deg, #ffffff 0%, #f9daa4 100%);
        background-color: #fff;
        border-radius: 8px 8px 8px 8px;
        opacity: 1;
        // border: 1px solid #ffffff;
        margin-left: 10px;
        margin-bottom: 5px;
        &:first-child{
          margin-left: 0;
        }
        .combo-title {
          line-height: 20px;
          font-size: 14px;
          font-weight: 400;
          color: blue;
        }
        .combo-price {
          font-size: 13px;
          font-weight: 600;
          color: #fca418;
          height: 20px;
          line-height: 20px;
          margin-top: 6px;
          margin-bottom: 6px;
        }
        .combo-button {
          border-radius: 40px 40px 40px 40px;
          font-size: 12px;
          background: #fca418;
          font-weight: 400;
          color: #fff;
          line-height: 20px;
          width: 65px;
        }
      }
    }

当要对滚动做一些处理的时候可以参考下面的代码 

    handleScroll(event) {
          // 获取滚动的距离
      const scrollDistance = event.target.scrollLeft;
        当前视口的宽度
      var viewportWidth = window.innerWidth || document.documentElement.clientWidth;

      // 获取第一个 li 元素的宽度
      const firstItemWidth = this.$refs.comboList.querySelector('.combo li:first-child').clientWidth;
      // console.log(scrollDistance,'滚动');
      // 判断滚动的距离是否超过第一个盒子的宽度,外边距10*(n-1)+视口内边距20 = 30+20
      if (scrollDistance >= 4*firstItemWidth-viewportWidth+50) {
        console.log(scrollDistance,viewportWidth-20,4*firstItemWidth,'滚动距离超过第一个盒子的宽度!');
        // 在这里进行你的打印操作或其他操作
      }
    },

分页

这里以vant的轮播图组件

 结构

 <div class="combo-swiper">
         <van-swipe class="my-swipe" indicator-color="white" :loop="false" v-if="info.event.length">
           <van-swipe-item v-for="(slice, sliceIndex) in comboArrChunks" :key="sliceIndex">
        <div class="combo-swiper-box">
          <div v-for="(item, itemIndex) in slice" :key="itemIndex" class="swiper-son">
            <div class="li-title">{{ item.spec }}</div>
            <div class="li-text">{{ item.activityName }}</div>
            <div class="li-bnt" @click="handleImmediatelyData(item, sliceIndex * 3 + itemIndex)">
              立即办理
            </div>
          </div>
        </div>
      </van-swipe-item>
        
      </van-swipe>
  </div>

 样式

 .combo-swiper{
       width: 100%;
     
        .my-swipe .van-swipe-item {
            width: 100%;
            height: 100px;
            color: #fff;
            font-size: 20px;
            line-height: 150px;
            text-align: center;
            margin-bottom: 20px;
            margin-top: 10px;
            .combo-swiper-box{
              display: flex;
              // justify-content: center;
              align-items: center;
              flex-wrap: wrap;
              flex-direction: row;
              .swiper-son{
                width: 100px;
                height: 90px;
                margin-right: 10px;
                padding: 5px;
                border-radius: 8px;
                background-color: #fff;
                text-align: center;
                &:nth-child(3){
                   margin-right:0;
                }   
                .li-title{
                    font-size: 14px;
                    margin-top: 5px;
                    line-height: 20px;
                    font-weight: bold;
                    color: #575757;
                    padding-top: 2px;
                  }
                
                  .li-text {
                    font-size: 12px;
                    margin: 5px 0px;
                    height: 20px;
                    line-height: 20px;
                    color: #fca418;
                  }
                  .li-bnt {
                    width: 80%;  
                    height: 18px;
                    font-size: 12px;
                    line-height: 18px;
                    padding: 2px 6px;
                    margin:0 auto;
                    background: #fca418;
                    color: #fff;
                    border-radius: 40px 40px 40px 40px;
                  } 
              }
             }
          } 
    }

 方法函数

data(){
   return{
     comboArr: [
      { spec: 'Spec A', activityName: 'Activity 1' },
      { spec: 'Spec B', activityName: 'Activity 2' },
      { spec: 'Spec C', activityName: 'Activity 3' },
      { spec: 'Spec D', activityName: 'Activity 4' },
      { spec: 'Spec E', activityName: 'Activity 5' }
    ],
     itemsPerSwipe: 3, // 每个 <van-swipe-item> 包含的数据数量
},
computed: {
    comboArrChunks() {
      const chunks = [];
      if (this.info.event) {
        for (let i = 0; i < this.comboArr.length; i += this.itemsPerSwipe) {
          chunks.push(this.comboArr.slice(i, i + this.itemsPerSwipe));
        }
      }
      return chunks;
    },

  },  
methods:{
   handleImmediatelyData(item, index){
        console.log(item,index);
        //需要处理的逻辑
    }
}

计算属性用于将原始的 comboArr 数组切分成多个子数组,每个子数组包含 itemsPerSwipe 个元素。这样可以确保每个轮播项内都有相同数量的组合套餐信息。这个方法返回一个包含子数组的数组,用于在轮播组件中进行循环渲染。文章来源地址https://www.toymoban.com/news/detail-689561.html

到了这里,关于如何快速生成一个H5滑动的卡片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML+CSS:3D轮播卡片

    实现了一个3D翻转的卡片动画,其中每个卡片都有不同的图片和不同的旋转角度。整个动画循环播放,无限次。整个页面的背景是一个占据整个屏幕的背景图片,并且页面内容被隐藏在背景图片之下。 这段代码设置了页面的基本样式,包括高度、居中、背景颜色和溢出部分的

    2024年01月23日
    浏览(57)
  • 黑马 pink h5+css3+移动端前端

    网页概念 网页是网站的一页,网页有很多元素组成,包括视频图片文字视频链接等等,以.htm和.html后缀结尾,俗称html文件 HTML 超文本 标记语言,描述网页语言,不是编程语言,是标记语言,有标签组成 超文本指的是不光文本,还有图片视频等等标签 常用浏览器 firefox google safari opera ed

    2024年02月16日
    浏览(80)
  • 玩转H5和CSS3,轻松打造视觉盛宴

    H5和CSS3是当前最流行且最具前景的网页设计语言。学习它们可以让我们轻松实现各种前沿的界面效果,并且十分实用,甚至在日常生活中都能发挥作用。但是对于初学者来说,学习它们并不容易。本文将从基础开始,全面、详细地介绍H5和CSS3的相关知识,让大家轻松掌握这两

    2024年02月03日
    浏览(48)
  • HTML5和CSS3七CSS3四

    代码下载地址 Transision过渡动画是从一个状态到另一个状态,而Animation动画可以有多个关键帧 animation-name:设置动画ID animation-duration:设置动画总时长 animation-timing-function:设置动画时间函数,同过渡动画 animation-iteration-count:设置动画播放次数,默认1次,可以是具体次数也可

    2023年04月23日
    浏览(55)
  • H5+Css3文本溢出添加省略号(包括插件)

    局限性: 使用webkit的css扩展属性(webkit是私有属性)-webkit-line-clamp 因使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端 -webkit-line-clamp用来限制在一个块元素显示的文本的行数。限定了在第几行后面增加省略号。超出必须隐藏。 将height设置为line-height的整数倍,防

    2024年02月07日
    浏览(58)
  • CSS 一个好玩的卡片“开卡效果”

    渐变 conic-gradient box-shadow clip-path 变换、过渡 transform 、 transition 动画 animation @keyframes 伪类、伪元素 :hover 、 ::before 、 ::after … 绝对布局 。。。 clip-path 生成网站 https://techbrood.com/tool?p=css-clip-path

    2024年02月10日
    浏览(38)
  • html+css3 补充学习

    1.1 strong 着重阅读,也可以理解为加粗效果 2.1 空格 2.2 一个中文宽度实体 例子 标签、类、id选择非常常用,前边的文档写过了,不在记录了 1.1 后代选择器 子标签 子子标签 子子子标签都是后代选择器 1.2 子代选择器 子代选择器只选择 下边1层 更多写法 1.3 兄弟选择器 相邻兄

    2024年01月20日
    浏览(49)
  • CSS实现一个交互感不错的卡片列表

    横向滚动 鼠标悬停时突出显示 默认堆叠展示 鼠标悬停时,完整展示当前块+适当旋出效果 移动端样式优化、磁吸效果 美化滚动条 flex 布局 css 简单变换+过渡 transform、transition 渐变色函数 linear-gradient … 伪类、伪元素 滚动条、::after、 ::before …

    2024年02月11日
    浏览(41)
  • CSS3与HTML5

    box-sizing content-box:默认,宽高包不含边框和内边距 border-box:也叫怪异盒子,宽高包含边框和内边距 动画:移动translate,旋转、transform等等 走马灯:利用动画实现animation:from… to… 隐藏元素: visibility:hidden 占位 display:none 不占位 画页面前重置浏览器自带样式 快格式化上

    2024年02月07日
    浏览(44)
  • HTML5和CSS3笔记

    1.1:页面结构: 1.2:标签类型: 1.2.1:块标签:  1.2.2:行内标签: 1.2.3:行内块标签: 1.2.4:块标签与行内标签的转换: (可以设置在不在同一行和隐藏) 1.3:表单与表格标签:   表单:    表格:   1.4:H5标签: 1.4.1:语义标签:   1.4.2:多媒体标签: (音频audio和视

    2024年03月24日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包