国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

vue+rem自定義輪播圖效果

發(fā)布時(shí)間:2021-08-17 12:16 來(lái)源: 閱讀:0 作者:飛歌Fly 欄目: JavaScript 歡迎投稿:712375056

使用vue+rem自定義輪播圖的實(shí)現,供大家參考,具體內容如下

單位使用rem進(jìn)行頁(yè)面布局,在動(dòng)態(tài)計算輪播圖整體寬度時(shí),需要把px轉換成rem,挺麻煩的。

效果如下:如果當前圖片不是第一張和最后一張,剛好可以看到當前圖片上一張和下一張的一部分。

具體代碼如下

<template>
    <div class="constructionUp">
        <div class="pub-hd">
            <h2>施工升級包</h2>
            <h3>額外服務(wù)項目</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、開(kāi)工后,客戶(hù)、設計師、項目管家三方進(jìn)行現場(chǎng)交底,若有個(gè)性化項目變更,執行正常的客戶(hù)變更手續(參照:客戶(hù)變更告知書(shū));</p>
                        <p class="liDes">2、交底后,若客戶(hù)原因要求個(gè)性化項目變更,除了承擔個(gè)性化項目的費用外,還要增/次的調撥費用。</p>
                         <p class="liPrice">
                            <span class="title1">主題包價(jià)格:¥</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 // 單個(gè)li的寬度
            let marginR = getComputedStyle(document.getElementsByClassName('activityLi')[0], null)['marginRight'] // 獲取單個(gè)的marginRight,帶px
            let marginNum = parseInt(marginR.replace('px', ''))
            this.liWidth = oldWidth + marginNum // 單個(gè)寬度+maringRight
            let liCount = parseInt(document.getElementsByClassName('activityLi').length)// li的個(gè)數
            this.liNum = liCount
            let ULpx = oldWidth * liCount + (liCount - 1) * marginNum // 最后一個(gè)margin不算
            document.getElementById('activityUl').style.width = ULpx / pit + 'px'// 除以比率,讓當前div寬度與2倍設計比例一樣,設置ul的長(cháng)度最后那個(gè)margin不算
        },
        touchStart (e) {
            // 記錄初始位置
            e.preventDefault() // 阻止默認事件,滾動(dòng)等
            this.startX = e.touches[0].clientX // 記錄滑動(dòng)開(kāi)始的位置
        },
        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>

關(guān)于vue.js組件的教程,請大家點(diǎn)擊專(zhuān)題進(jìn)行學(xué)習。

更多vue學(xué)習教程請閱讀專(zhuān)題

以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

国产三级精品三级在线观看| 搡老熟女国产| 三级成年网站在线观看| 狠狠色综合播放一区二区| 国产精品亚洲аv久久| 国产成人AV综合久久视色|