前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bilibili Dynamic Banner

Bilibili Dynamic Banner

作者头像
Akilar
发布2021-06-11 11:16:30
2.6K0
发布2021-06-11 11:16:30
举报
文章被收录于专栏:Akilarの糖果屋

点击查看更新记录

更新记录

2021-01-20:内测版v0.05

  1. 沿用B站同款样式动态banner
  2. 提取可配置元素
  3. 修复pjax问题
  4. 提供秋冬两套主题方案
  5. 可以通过主题配置文件全站配置
  6. 也可以通过设置页面Front-matter实现单页配置
  7. 优化逻辑,以页面Front-matter为最优先配置

点击查看参考教程

参考方向

教程原贴

秋主题banner

CodePen-BiliBili Autumn Banner

冬主题banner

CodePen-BiliBili Winter Banner

资源下载

由于本教程涉及的所有修改对缩进格式等有严格要求,担心自己控制不好的可以直接下载静态资源。参照教程进行修改。本帖基于Butterfly_v3.5.1版本进行配置,低版本可能需要对index.pug稍加修改。精力有限没时间做全版本适配。读者如果有困难可以考虑群内交流或者直接升级最新版本主题。

下载资源文件

预览效果


魔改步骤

新建

代码语言:javascript
复制
if (!is_home())
  - var banner_style = (typeof(page.bilibili_banner) != "undefined" && page.bilibili_banner!=null) ? page.bilibili_banner : theme.bilibili_banner.style
  if (banner_style === 'autumn')
    #autumnBanner
      div
        img(src='/bilibiliBanner/autumn/bilibili-autumn-1.png')
      div
        img(src='/bilibiliBanner/autumn/bilibili-autumn-2.png')
      div
        img(src='/bilibiliBanner/autumn/bilibili-autumn-3.png')
      div
        img(src='/bilibiliBanner/autumn/bilibili-autumn-4.png')
      div
        img(src='/bilibiliBanner/autumn/bilibili-autumn-5.png')
      div
        img(src='/bilibiliBanner/autumn/bilibili-autumn-6.png')
  else if (banner_style === 'winter')
    #winterBanner
      .view
        img.morning(src='/bilibiliBanner/winter/bilibili-winter-view-1.png' alt='')
        img.afternoon(src='/bilibiliBanner/winter/bilibili-winter-view-2.png' alt='')
        video.evening(autoplay='' loop='' muted='')
          source(src='/bilibiliBanner/winter/bilibili-winter-view-3.webm' type='video/webm')
        img.window-cover(src='/bilibiliBanner/winter/bilibili-winter-view-3-snow.png' alt='')
      .tree
        img.morning(src='/bilibiliBanner/winter/bilibili-winter-tree-1.png' alt='')
        img.afternoon(src='/bilibiliBanner/winter/bilibili-winter-tree-2.png' alt='')
        img.evening(src='/bilibiliBanner/winter/bilibili-winter-tree-3.png' alt='')        
  script(async data-pjax src=url_for(theme.CDN.bilibili_banner))

新建,

新建

代码语言:javascript
复制
//autumn_banner

var autumnBanner = document.querySelector('#autumnBanner')
if (autumnBanner) {
  var images = document.querySelectorAll('#autumnBanner > div > img')
  autumnBanner.addEventListener('mousemove', (e) => {
    let percentage = e.clientX / window.outerWidth
    let offset = 10 * percentage
    let blur = 20

    for (let [index, image] of images.entries()) {
      offset *= 1.3

      let blurValue = (Math.pow((index / images.length - percentage), 2) * blur)

      image.style.setProperty('--offset', `${offset}px`)
      image.style.setProperty('--blur', `${blurValue}px`)
    }
  })
}
//winter_banner

var winterBanner = document.querySelector('#winterBanner')
if (winterBanner) {
  var startingPoint
  winterBanner.addEventListener('mouseenter', (e) => {
    startingPoint = e.clientX
    winterBanner.classList.add('moving')
  })

  winterBanner.addEventListener('mouseout', (e) => {
    winterBanner.classList.remove('moving')
    winterBanner.style.setProperty('--percentage', 0.5)
  })

  winterBanner.addEventListener('mousemove', (e) => {
    let percentage = (e.clientX - startingPoint) / window.outerWidth + 0.5

    winterBanner.style.setProperty('--percentage', percentage)
  })
}

将静态资源文件夹内的图片文件夹放到目录下。

修改,注入组件

在站点配置文件中添加配置项,打开,

除了在主题配置文件通过配置的默认项,还可以在每个页面的文件中通过控制单页配置。提供了:


TO DO

配置B站同款样式动态banner

适配pjax

提供秋冬两套主题方案

通过主题配置文件全站配置

通过设置页面Front-matter实现单页配置

春夏两款坐等小破站发资源

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资源下载
  • 魔改步骤
  • TO DO
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档