购物车底部固定,下滑到下面不固定

该代码示例展示了如何在Vue.js中根据页面滚动状态实现底部栏的固定与非固定切换。通过data中的fixed属性控制v-if条件渲染,结合window.scroll事件监听页面滚动,调整底部栏的状态。同时使用ref引用非固定的底部元素。
摘要由CSDN通过智能技术生成

首先需要写两个底部一个是固定的一个是不固定的
在data里定义一个值

fixed:false  //判断是否固定

需要固定的底部 在div上加一个v-if=“fixed” ,当fixed为true的时候固定

v-if="fixed"

不需要固定的底部 在div上加一个ref=“total”

ref="total"

下面是整块代码

<div v-if="fixed" id="list-content" class="fixClass">
            <div class="bottomLeft">
                <el-checkbox v-model="selectAllCheck" @change="allCheck">全选</el-checkbox>
                <span class="delBottom" @click="delAllItem">
                    删除
                </span>
            </div>
            <div class="bottomRight">
                <span>已选</span>
                <span class="num">{{ multipleSelection.length }}</span>
                <span>件商品</span>
                <span class="totalBottom">合计</span>
                <span class="num">{{ toFixedTwo(totalPrice) }}</span>
                <div class="settlement" @click="submitOrder">
                    结算
                </div>
            </div>
        </div>
        <div ref="total" id="list-content" class="bottomClass">
            <div class="bottomLeft">
                <el-checkbox v-model="selectAllCheck" @change="allCheck">全选</el-checkbox>
                <span class="delBottom" @click="delAllItem">
                    删除
                </span>
            </div>
            <div class="bottomRight">
                <span>已选</span>
                <span class="num">{{ multipleSelection.length }}</span>
                <span>件商品</span>
                <span class="totalBottom">合计</span>
                <span class="num">{{ toFixedTwo(totalPrice) }}</span>
                <div class="settlement" @click="submitOrder">
                    结算
                </div>
            </div>
        </div>
data() {
        return {
            fixed: false, //判断是否悬浮
            total: null,
        }
    },
 mounted() {
        window.addEventListener("scroll", this.scrollEvent); //监听页面滚动事件
    },
    destroyed() {
        window.removeEventListener("scroll", this.scrollEvent, false);
    },
    methods: {
        scrollEvent() {
            //页面滚动事件
            var body = window.innerHeight;
            var scroll =
                document.documentElement.scrollTop || document.body.scrollTop;
            this.btnstop = this.$refs.total.offsetTop;
            var top = this.btnstop - body;
            if (this.btnstop > body) {
                if (this.fixed == false) {
                    this.fixed = true;
                }
            }
            if (scroll >= top) {
                this.fixed = false;
            }
        },
        }

css

.bottomClass {
    margin-top: 20px;
    background-color: #DDDDDD;
    width: 100%;
    height: 50px;
    // position: fixed;
    z-index: 999;
    // bottom: 0;
    left: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0px 50px 0px 20px;
    font-size: 14px;
}

.fixClass {
    margin-top: 20px;
    background-color: #DDDDDD;
    width: 100%;
    height: 50px;
    position: fixed;
    z-index: 999;
    bottom: 0;
    left: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0px 50px 0px 20px;
    font-size: 14px;
}

切记不可以使用class来判断,因为会根据你滑动来实时更新,页面上就会一闪一闪的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值