Wingstudio工作室前端第二轮考核——哔哩哔哩静态首页仿写

遇到的问题:

1.轮播图(前后箭头按钮点击可变换、鼠标移入盒子停止效果) 样式代码已省略

  // 1. 初始数据
    const data = [
      { url: './uploads/carousel1.avif', title: '这次一定!', color: 'rgb(109, 68, 51)' },
      { url: './uploads/carousel2.avif', title: '正在直播KPL:成都AG vs广州TTG', color: 'rgb(43,35, 26)' },
      { url: './uploads/carousel3.avif', title: '坏坏的让我疯狂的可爱女人', color: 'rgb(155, 98, 54)' },
      { url: './uploads/carousel4.avif', title: '不要小看墨家第23代传人!', color: 'rgb(86, 92, 117)' },
      { url: './uploads/carousel5.avif', title: '影史经典之作,色彩与情感的激烈碰撞!', color: 'rgb(114, 104, 110)' },
      { url: './uploads/carousel6.avif', title: '我和12个国家的陌生人共同完成了一副画...', color: 'rgb(154, 144, 134)' },
      { url: './uploads/carousel7.avif', title: '解锁我的原神风格形象', color: 'rgb(118, 146, 127)' },
      { url: './uploads/carousel8.avif', title: '就得四川话才得劲!', color: 'rgb(55, 38, 36)' },
    ]
     
    const img = document.querySelector('.Win_slider-wrapper img')
    const p = document.querySelector('.Win_slider-footer p')
    const footer = document.querySelector('.Win_slider-footer')
    // 获取右侧按钮 
    const next = document.querySelector('.Win_next')
    let i = 0  // 信号量 控制播放图片张数
    // 注册点击事件

    next.addEventListener('click', function () {
      i++
      i = i >= data.length ? 0 : i
      // 1.3 得到对应的对象
      // 调用函数
      toggle()
    })
    //  获取左侧按钮 
    const prev = document.querySelector('.Win_prev')
    // 注册点击事件
    prev.addEventListener('click', function () {
      i--
      // 判断条件  如果小于0  则爬到最后一张图片索引号是 7
      // if (i < 0) {
      //   i = 7
      // }
      i = i < 0 ? data.length - 1 : i
      // 得到对应的对象
      // 调用函数
      toggle()
    })

    // 声明一个渲染的函数作为复用
    function toggle() {
      // 渲染对应的数据
      img.src = data[i].url
      p.innerHTML = data[i].title
      footer.style.backgroundColor = data[i].color
      // 更换小圆点    先移除原来的类名, 当前li再添加 这个 类名
      document.querySelector('.Win_slider-indicator .Win_active').classList.remove('Win_active')
      document.querySelector(`.Win_slider-indicator li:nth-child(${i + 1})`).classList.add('Win_active')
    }



    // 3. 自动播放模块
    let timerId = setInterval(function () {
      // 利用js自动调用点击事件  click()  一定加小括号调用函数
      next.click()
    }, 1000)


    // 4. 鼠标经过大盒子,停止定时器
    const slider = document.querySelector('.Win_slider')
    // 注册事件
    slider.addEventListener('mouseenter', function () {
      // 停止定时器
      clearInterval(timerId)
    })

    // 5. 鼠标离开大盒子,开启定时器
    // 注册事件
    slider.addEventListener('mouseleave', function () {
      // 停止定时器
      if (timerId) clearInterval(timerId)
      // 开启定时器
      timerId = setInterval(function () {
        // 利用js自动调用点击事件  click()  一定加小括号调用函数
        next.click()
      }, 1000)
    })

2.鼠标事件(图层问题以及动态渐变不能用display)

 document.querySelector('.Win_link1').onmouseover = function(){
      document.querySelector('.Win_content1').style.visibility='visible'
      document.querySelector('.Win_content1').style.opacity = 1
    }
    document.querySelector('.Win_link1').onmouseout = function(){
      document.querySelector('.Win_content1').style.visibility = 'collapse'
      document.querySelector('.Win_content1').style.opacity = 0
    }

 3.导航栏置顶不动(且样式改变)

 将新导航栏的盒子样式写好后设置display:none,监听滚动页面后display:block,且position不动。

 const miniHeader = document.querySelector('.Win_choose_header_down')
    window.addEventListener('scroll',function(){
      //监听页面滚动执行的操作
      const n = document.documentElement.scrollTop
      if (n>=270){
        miniHeader.style.visibility='visible'
        miniHeader.style.opacity=1
        miniHeader.style.top="64px"
        miniHeader.style.position="fixed"
      } else{
        miniHeader.style.visibility='collapse'
        miniHeader.style.opacity=0
      }

    })

4.鼠标移动到置顶导航栏高度变化

 document.querySelector('.Win_choose_header_down').onmouseover = function(){
      document.querySelector('.Win_choose_header_down').style.maxHeight="150px"
    }
    document.querySelector('.Win_choose_header_down').onmouseout = function(){
      document.querySelector('.Win_choose_header_down').style.maxHeight = "56px"
    }

 5.点击回到顶部按钮回到顶部

 document.querySelector('.Win_top_btn').onclick = function () {
    	//加一个定时器
        var timer = setInterval(function () {
        	//判断
            if (document.documentElement.scrollTop > 0) {
                document.documentElement.scrollTop -= 100;
            } else {
                clearInterval(timer);
            }

        }, 10)
    }

最后总效果:

哔哩哔哩静态首页仿写

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值