• vue3 吸顶搜索框在页面滚动时改变样式


    效果图:

    在这里插入图片描述
    在这里插入图片描述

    思路:
    监听滚动条距离顶部的距离,在距顶部40px内密集监听(依照自己的情况而定),不断改变样式,实现过度效果

    代码:
    html

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    script

       // 滚动事件
        var navbarBg = ref('rgba(255,255,255,0)')
        var borderBg = ref(false)
        var inputColor = ref(true)
        let IndexTitleScroll = () => {
          // 获取距离顶部的距离
          let scrollTop =
            window.pageYOffset ||
            document.documentElement.scrollTop ||
            document.body.scrollTop;
          if (scrollTop < 5) {
            navbarBg.value = "rgba(255,255,255,0)";
            borderBg.value = 'url(./img/InputTitle2.png)'
            inputColor.value = true
          } else if (5 < scrollTop && scrollTop < 10) {
            navbarBg.value = "rgba(255,255,255,0.2)";
          } else if (10 < scrollTop && scrollTop < 20) {
            navbarBg.value = "rgba(255,255,255,0.4)";
          } else if (20 < scrollTop && scrollTop < 30) {
            navbarBg.value = "rgba(255,255,255,0.6)";
          } else if (30 < scrollTop && scrollTop < 40) {
            navbarBg.value = "rgba(255,255,255,0.8)";
          } else {
            navbarBg.value = "rgba(255,255,255,1)"
            borderBg.value = true
            inputColor.value = false
          }
        }
        window.addEventListener("scroll", IndexTitleScroll);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    style

    #searchTitle {
      position: fixed;
      top: 0;
      left: 50%;
      z-index: 9999;
      width: 100%;
      max-width: 375px;
      transform: translateX(-50%);
      padding: 20px 0px 15px;
    
      div {
        display: flex;
        align-items: center;
        width: 90%;
        padding: 6px 0px;
        margin: 0px auto;
        background-image: url(./img/InputTitle2.png);
        background-size: 100% 100%;
      }
    
      div.inputTitle {
        background-image: url(./img/InputTitle.png);
      }
    
      div img {
        width: 14px;
        margin: 0px 10px 0px 15px;
      }
    
      div input {
        flex: 1;
        height: 96%;
        border: none;
        background: none;
      }
      
      // 改变文本框内提示语句的文字样式
      div input.inputtext::-webkit-input-placeholder {
        /* Chrome/Opera/Safari */
        color: #fff;
      }
    
      div input.inputtext:-ms-input-placeholder {
        /* IE 10+ */
        color: #fff;
      }
    
      div input.inputtext:-moz-placeholder {
        /* Firefox 18- */
        color: #fff;
      }
    
      div input.inputtext::-moz-placeholder {
        /* Firefox 19+ */
        color: #fff;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
  • 相关阅读:
    java 实现适配器模式
    YOLOv7-Openvino和ONNXRuntime推理【CPU】
    大一学生期末大作业 html+css+javascript网页设计实例【电影购票项目】html网页制作成品代码
    一站式工业边缘数据采集处理与设备反控实践
    阿里云不同设备,物模型如何同步
    刷题之小蓝吃糖果和你究竟有几个好姐妹
    可观察性支柱:探索日志、指标和跟踪
    我用GPT搭建了一个虚拟女友!
    CSS3 对齐方式
    Hadoop学习记录2--hadoop的概述、部署、使用
  • 原文地址:https://blog.csdn.net/WiseGirls/article/details/126247790