• 【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色


    效果图

    在这里插入图片描述

    在这里插入图片描述

    新建activityScrollTop.js作为mixins

    export default {
      data() {
        return {
          navBgColor: "rgba(0,0,0,0)", // 初始背景颜色为完全透明
          navTextColor: "rgba(0,0,0,1)", // 初始文字颜色
        };
      },
      onPageScroll(e) {
        // 设置背景
        const newAlpha = Math.min((e.scrollTop / 100) * 1, 1);
        this.navBgColor = `rgba(${this.shadeBackground},${newAlpha})`;
        // 设置文字
        const progress = Math.min(e.scrollTop, 255) / 255;
        const [r, g, b] = this.shadeTextColor.split(",").map(Number);
        const newTextRgb = Math.min(e.scrollTop * 5, 255);
        const newRgb = [r, g, b].map((targetValue) => {
          return Math.min(newTextRgb + (targetValue - newTextRgb) * progress, 255);
        });
        this.navTextColor = `rgba(${newRgb.join()},1)`;
      },
    };
    

    使用方法

    第一步,引入上方js

    import activityScrollTop from "../../js/activityScrollTop";
    export default {
      mixins: [activityScrollTop],
    }
    

    第二步:
    关键:backgroundColor和color

    <uni-nav-bar
      :leftIcon="图标"
      :border="false"
      @clickLeft="方法名"
      :backgroundColor="navBgColor"
      fixed
      statusBar
      :color="navTextColor"
      title="活动详情"
    ></uni-nav-bar>
    

    第三步:
    data

    // 渐变导航背景颜色
    shadeBackground: "254,181,89",
    // 渐变导航的文字颜色
    shadeTextColor: "255,255,255",
    

    看效果即可!

    当然可能对性能有影响,可以改成如下方式:

    mounted() {
      this.observer = uni.createIntersectionObserver(this);
      this.observer
        .relativeToViewport({ bottom: 距离底部的距离 })
        .observe("需要监听的元素", (res) => {
          if (res.intersectionRatio > 0) {
            显示
          } else {
            隐藏
          }
        });
    },
    

    在这里插入图片描述
    感谢你的阅读,如对你有帮助请收藏+关注!
    只分享干货实战精品从不啰嗦!!!
    如某处不对请留言评论,欢迎指正~
    博主可收徒、常玩QQ飞车,可一起来玩玩鸭~

  • 相关阅读:
    你到底懂不懂JavaScript?来做做这12道面试题试试!
    【内网穿透】公网远程访问本地硬盘文件
    vivado产生报告阅读分析-Report Power4
    vue + canvas 实现涂鸦面板
    JDK9相比于JDK8,究竟变强了多少
    MATLB|改进的前推回代法求解低压配电网潮流
    java docker图片叠加水印中文乱码
    Spring Cloud Gateway 实现原理
    解决table表格td中文字过长自动换行问题
    ORA-01455: converting column overflows integer datatype
  • 原文地址:https://blog.csdn.net/yasyList/article/details/139341346