better-scroll轮播图的写法

第一步我们先将骨架搭起来啊,在使用前记得安装或者引入better-scroll



    <div id="app">
<!--        盛放轮播图的盒子, ref作用就是和选择器的作用差不多,都是获取元素的-->
        <div class="wrapper" ref="slider">
<!--        为了循环啊我们使用ul-->
            <ul class="content" ref="sliderGroup">
                <li>
<!--                    图片-->
                    <img src="./assets/images/dog.jpeg" />
                </li>
                <li>
                    <img src="./assets/images/mao.jpg" />
                </li>
            </ul>
            <!-- 这里可以放一些其它的 DOM,但不会影响滚动 -->
        </div>
    </div>

 

设置下css的样式

<style>
    *{
        padding: 0;
        margin: 0;
    }
    /*设置宽度就是设备的宽度,多出的不显示*/
    .wrapper{
        overflow: hidden;
    }
    .content li{
        list-style: none;
        float: left;
    }
    .content li img{
        width: 100%;
        height: 200px;
    }
</style>

js的逻辑

<script>

    // 引入better-scroll插件
    import BScroll from 'better-scroll'

    export default {
        name: 'app',
        components: {

        },
        created() {

        },
        mounted() {
            // 初始化方法,主要是为了设置盒子的宽度
            this.init();
            // 执行轮播的方法
            this.getBetterScroll();
        },
        methods:  {

            init() {
                // 获取元素下面的所有子元素
                this.children = this.$refs.sliderGroup.children;
                // 设置一个默认宽度,也就是设置class="content"的div的宽度
                let width = 0;
                // 获取class="wrapper"的宽度,这行代码的意思大概就是想要知道设备的宽度(或者就是盛放图片的盒子的宽度)
                let sliderWidth = this.$refs.slider.clientWidth;
                // 循环一下,获取有多少个子元素,设置子元素的宽度为设备的宽度,并且将所有子元素的宽度相加设置所有子元素横着的时候的宽度
                for (let i = 0; i < this.children.length; i++) {
                    let child = this.children[i];
                    child.style.width = sliderWidth + 'px';
                    width += sliderWidth;
                }
                // 最终设置宽度为这个
                this.$refs.sliderGroup.style.width = width + 'px'
            },

            getBetterScroll() {
                // 轮播插件的方法
                new BScroll('.wrapper', {
                    scrollX: true,
                    scrollY: false,
                    momentum: false,
                    snap: true,
                    snapLoop: true,
                    snapThreshold: 0.3,
                    snapSpeed: 400
                });
            }
        }
    }
</script>

 

 

下面是使用Vue写的完整的代码

<template>

    <div id="app">
<!--        盛放轮播图的盒子, ref作用就是和选择器的作用差不多,都是获取元素的-->
        <div class="wrapper" ref="slider">
            // 为了循环啊我们使用ul
            <ul class="content" ref="sliderGroup">
                <li>
<!--                    图片-->
                    <img src="./assets/images/dog.jpeg" />
                </li>
                <li>
                    <img src="./assets/images/mao.jpg" />
                </li>
            </ul>
            <!-- 这里可以放一些其它的 DOM,但不会影响滚动 -->
        </div>
    </div>
</template>

<script>

    // 引入better-scroll插件
    import BScroll from 'better-scroll'

    export default {
        name: 'app',
        components: {

        },
        created() {

        },
        mounted() {
            // 初始化方法,主要是为了设置盒子的宽度
            this.init();
            // 执行轮播的方法
            this.getBetterScroll();
        },
        methods:  {

            init() {
                // 获取元素下面的所有子元素
                this.children = this.$refs.sliderGroup.children;
                // 设置一个默认宽度,也就是设置class="content"的div的宽度
                let width = 0;
                // 获取class="wrapper"的宽度,这行代码的意思大概就是想要知道设备的宽度(或者就是盛放图片的盒子的宽度)
                let sliderWidth = this.$refs.slider.clientWidth;
                // 循环一下,获取有多少个子元素,设置子元素的宽度为设备的宽度,并且将所有子元素的宽度相加设置所有子元素横着的时候的宽度
                for (let i = 0; i < this.children.length; i++) {
                    let child = this.children[i];
                    child.style.width = sliderWidth + 'px';
                    width += sliderWidth;
                }
                // 最终设置宽度为这个
                this.$refs.sliderGroup.style.width = width + 'px'
            },

            getBetterScroll() {
                // 轮播插件的方法
                new BScroll('.wrapper', {
                    scrollX: true,
                    scrollY: false,
                    momentum: false,
                    snap: true,
                    snapLoop: true,
                    snapThreshold: 0.3,
                    snapSpeed: 400
                });
            }
        }
    }
</script>

<style>
    *{
        padding: 0;
        margin: 0;
    }
    /*设置宽度就是设备的宽度,多出的不显示*/
    .wrapper{
        overflow: hidden;
    }
    .content li{
        list-style: none;
        float: left;
    }
    .content li img{
        width: 100%;
        height: 200px;
    }
</style>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值