返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue+rem自定义轮播图效果
  • 624
分享到

vue+rem自定义轮播图效果

2024-04-02 19:04:59 624人浏览 安东尼
摘要

使用Vue+rem自定义轮播图的实现,供大家参考,具体内容如下 单位使用rem进行页面布局,在动态计算轮播图整体宽度时,需要把px转换成rem,挺麻烦的。 效果如下:如果当前图片不是

使用Vue+rem自定义轮播图的实现,供大家参考,具体内容如下

单位使用rem进行页面布局,在动态计算轮播图整体宽度时,需要把px转换成rem,挺麻烦的。

效果如下:如果当前图片不是第一张和最后一张,刚好可以看到当前图片上一张和下一张的一部分。

具体代码如下


<template>
    <div class="constructionUp">
        <div class="pub-hd">
            <h2>施工升级包</h2>
            <h3>额外服务项目</h3>
        </div>
        <div id="activityDiv">
            <ul num="0" id="activityUl">
               <li class="activityLi" v-for="(v,i) in listData" :key="i" @touchstart.capture="touchStart" @touchend.capture="touchEnd">
                    <img src="static/imgs/package/bitmap.jpg">
                    <div class="liText">
                        <p class="liTtitle">{{v.lititle}}</p>
                        <p class="liDes">1、开工后,客户、设计师、项目管家三方进行现场交底,若有个性化项目变更,执行正常的客户变更手续(参照:客户变更告知书);</p>
                        <p class="liDes">2、交底后,若客户原因要求个性化项目变更,除了承担个性化项目的费用外,还要增/次的调拨费用。</p>
                         <p class="liPrice">
                            <span class="title1">主题包价格:¥</span>
                            <span class="title2">4500</span>
                            <span class="title3">元</span>
                        </p>
                    </div>
                </li>
            </ul>
            <div class="pointerDiv">
                <span :class="[currantIndex ===0 ? 'active' : '', 'pointer']"></span>
                <span :class="[currantIndex ===1 ? 'active' : '', 'pointer']"></span>
                <span :class="[currantIndex ===2 ? 'active' : '', 'pointer']"></span>
            </div>
        </div>
    </div>
</template>
 
<script>
export default {
    data () {
        return {
            listData: [{lititle: '旧房改造'}, {lititle: '旧房改造2'}, {lititle: '旧房改造3'}],
            liWidth: 0,
            liNum: 0,
            startX: 0,
            endX: 0,
            currantIndex: 0,
            test: false
 
        }
    },
    mounted () {
        this.initUlWidth()
    },
    methods: {
        initUlWidth () { // 初始化 ul的宽度
            let pit = document.documentElement.clientWidth / 750 // 当前手机屏幕和750屏幕的比例
            let oldWidth = document.getElementsByClassName('activityLi')[0].offsetWidth // 单个li的宽度
            let marginR = getComputedStyle(document.getElementsByClassName('activityLi')[0], null)['marginRight'] // 获取单个的marginRight,带px
            let marginNum = parseInt(marginR.replace('px', ''))
            this.liWidth = oldWidth + marginNum // 单个宽度+maringRight
            let liCount = parseInt(document.getElementsByClassName('activityLi').length)// li的个数
            this.liNum = liCount
            let ULpx = oldWidth * liCount + (liCount - 1) * marginNum // 最后一个margin不算
            document.getElementById('activityUl').style.width = ULpx / pit + 'px'// 除以比率,让当前div宽度与2倍设计比例一样,设置ul的长度最后那个margin不算
        },
        touchStart (e) {
            // 记录初始位置
            e.preventDefault() // 阻止默认事件,滚动等
            this.startX = e.touches[0].clientX // 记录滑动开始的位置
        },
        touchEnd (e) {
            e.preventDefault() // 阻止默认事件
            // 记录结束位置
            this.endX = e.changedTouches[0].clientX
            // 左滑
            if (this.startX - this.endX > 30) {
                console.log('左滑')
                if (this.currantIndex >= this.liNum - 1) {
                    // 不做操作
                } else {
                    this.currantIndex++
                    document.getElementById('activityUl').style.left = -this.currantIndex * this.liWidth + 'px'
                }
            }
            // 右滑
            if (this.startX - this.endX < -30) {
                if (this.currantIndex === 0) {
                    // 不做操作
                } else {
                    this.currantIndex--
                    document.getElementById('activityUl').style.left = -this.currantIndex * this.liWidth + 'px'
                }
            }
            this.startX = 0
            this.endX = 0
        }
 
    }
}
</script>
 
<style lang="less" scoped>
    @import "~less/base.less";
    .constructionUp{
        width: 100%;
        .pub-hd{
            padding: 0.8rem 0 0.6rem 0;
            text-align: center;
            background-color: #ffffff;
            h2{
                font-size: 0.32rem;
                color: #606771;
            }
            h3{
                margin-top: 0.26rem;
                font-size: 0.24rem;
                color: #b9bec4;
            }
        }
        #activityDiv{
            padding-left: 0.4rem;
            background-color: #ffffff;
            overflow: hidden;
            #activityUl{
                position: relative;
                left: 0;
                height: 8.06rem;
                transition:all .35s ease-in-out;
                background-color: #ffffff;
                .activityLi{
                    float: left;
                    width: 6.7rem;
                    height: 8.06rem;
                    &:not(:last-child){
                        margin-right: 0.3rem;
                    }
                    box-shadow: 0 5px 25px 0 rgba(0,0,0,.4);
                    img{
                        width: 100%;
                        height: 3.6rem;
                    }
                    .liText{
                        padding: 0 0.4rem;
                        text-align: left;
                        .liTtitle{
                            padding: 0.48rem 0 0.36rem 0;
                            font-size: 0.34rem;
                            color: #000000;
                        }
                        .liDes{
                            font-size: 0.2rem;
                            color:#b5b5b5;
                        }
                    }
                    .liPrice{
                        height: 0.28rem;
                        line-height: 0.28rem;
                        color: @c-main; //颜色换一下就好
                        vertical-align: bottom;
                        margin-top: 0.8rem;
                        .title1{
                            display: inline-block;
                            font-size: 0.22rem;
                        }
                         .title2{
                              display: inline-block;
                              font-size: 0.35rem;
                        }
                         .title3{
                              display: inline-block;
                              font-size: 0.22rem;
                        }
                    }
                }
            }
             .pointerDiv{
                width: 100%;
                height: 1.54rem;
                background-color: #ffffff;
                display: flex;
                align-items: center;
                justify-content: center;
                .pointer{
                    display: inline-block;
                    width: 0.16rem;
                    height: 0.16rem;
                    background-color: #cccccc;
                    border-radius: 100%;
                    &:nth-child(2){
                        margin:0 0.4rem;
                    }
                    &.active{
                        background-color: @c-main;
                    }
                }
            }
        }
    }
</style>

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue+rem自定义轮播图效果

本文链接: https://lsjlt.com/news/129336.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue+rem自定义轮播图效果
    使用vue+rem自定义轮播图的实现,供大家参考,具体内容如下 单位使用rem进行页面布局,在动态计算轮播图整体宽度时,需要把px转换成rem,挺麻烦的。 效果如下:如果当前图片不是...
    99+
    2024-04-02
  • vue+rem自定义轮播图效果实现
    本篇内容主要讲解“vue+rem自定义轮播图效果实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue+rem自定义轮播图效果实现”吧!使用vue+rem自定义轮播图的实现,供大家参考,具体内...
    99+
    2023-06-20
  • Android自定义轮播图效果
    本文实例为大家分享了Android自定义轮播图效果的具体代码,供大家参考,具体内容如下 概述 1、写一个布局,其中有ViewPager,TextView,LinearLayout. ...
    99+
    2024-04-02
  • vue自定义js图片碎片轮播图切换效果怎么实现
    这篇文章给大家分享的是有关vue自定义js图片碎片轮播图切换效果怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义一个banner.js文件,代码如下;window.re...
    99+
    2024-04-02
  • Android自动播放Banner图片轮播效果
    先看一下效果图 支持本地图片以及网络图片or本地网络混合。 使用方式: <com.jalen.autobanner.BannerView android:id="@...
    99+
    2022-06-06
    轮播 Android
  • uniapp小程序开发组件封装之自定义轮播图效果
    目录前言:正文1、首先了解swiper组件1.1、小小的demo示例:1.2、自定义轮播图效果展示说明2、完成自定义轮播图效果3、组件封装——自定义轮播图3....
    99+
    2023-02-06
    uniapp自定义轮播图 uniapp小程序开发 uniapp组件封装
  • Vue中如何实现轮播图效果
    这篇文章将为大家详细讲解有关Vue中如何实现轮播图效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Vue 过渡Vue 的过渡系统是内置的,在元素从 DOM 中插入或移除...
    99+
    2024-04-02
  • vue实现轮播图效果的代码
    这篇文章主要介绍“vue实现轮播图效果的代码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue实现轮播图效果的代码”文章能帮助大家解决问题。1.原理:v-on:click="prev&q...
    99+
    2023-06-27
  • jquery实现图片自动轮播效果
    本文实例为大家分享了jquery实现图片自动轮播效果的具体代码,供大家参考,具体内容如下 HTML代码如下: <div id="container">         ...
    99+
    2024-04-02
  • Vue实现首页banner自动轮播效果
    本文实例为大家分享了Vue实现首页banner自动轮播的具体代码,供大家参考,具体内容如下 效果如图:  ①创建Banner.vue组件,需传入banner数组,可设置轮...
    99+
    2024-04-02
  • js编写轮播图效果
    本文实例为大家分享了js实现轮播图效果的具体代码,供大家参考,具体内容如下 1、html部分 <div id="box"> <ul> ...
    99+
    2024-04-02
  • Android实现轮播图效果
    本文实例为大家分享了Android实现轮播图效果的具体代码,供大家参考,具体内容如下 1.代码放在LinearLayout中, <com.jude.rollviewpage...
    99+
    2024-04-02
  • bootstrap实现轮播图效果
    本文实例为大家分享了bootstrap实现轮播图效果的具体代码,供大家参考,具体内容如下 实现效果 步骤 1、下载bootstrap和jquery-3.6.0.min.js,并在h...
    99+
    2024-04-02
  • js制作轮播图效果
    轮播图在前端开发中我认为是一个比较重要的点,因为包含了很多原生js知识点,以下是我学习制作轮播图的过程 难点: 1、如何让底下圆圈和图片所对应自动动态生成 2、如何让底下圆圈和图片所...
    99+
    2024-04-02
  • Vue3.0手写轮播图效果
    本文实例为大家分享了Vue3.0手写轮播图效果的具体代码,供大家参考,具体内容如下 让我们开始把 html结构 <template> <div class=...
    99+
    2024-04-02
  • React实现轮播图效果
    本文实例为大家分享了React实现轮播图效果的具体代码,供大家参考,具体内容如下 效果: 轮播功能用到了react-slick组件,安装: npm install react-sl...
    99+
    2024-04-02
  • Android ViewPager自定义轮播图并解决播放冲突
    本文实例为大家分享了Android ViewPager自定义轮播图,并解决播放冲突,供大家参考 首先介绍一下这篇小代码: 注释全面,简单易学,适用初学者,图片自拟!!! 一定要将Ar...
    99+
    2024-04-02
  • Vue实现无缝轮播效果
    本文实例为大家分享了Vue实现无缝轮播效果的具体代码,供大家参考,具体内容如下 代码 1.子组件代码 代码如下(示例): <template> <di...
    99+
    2024-04-02
  • 纯css如何实现轮播图banner自动轮换效果
    这篇文章主要为大家展示了纯css如何实现轮播图banner自动轮换效果,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“纯css如何实现轮播图banner自动轮换效果”这篇文章吧。css是什么意思cs...
    99+
    2023-06-08
  • 小程序自定义轮播图圆点组件
    本文实例为大家分享了小程序自定义轮播图圆点组件的具体代码,供大家参考,具体内容如下 微信小程序自带的轮播图小点,是一个圆点且在图片上展示,不美观。上图为自定义后的轮播图效果 代码如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作