创新实训(十)高级界面美化

前言

前端的界面基本完成之后,我们需要继续开始界面的高级美化工作。这里我们主要尝试完成引导页、全屏、暗黑模式几个功能。

引导页

效果如下:
在这里插入图片描述
在这里插入图片描述
引导页对于新用户来说有着很好的引导功能,我觉得还是一个非常实用和美观的,很有必要去实现。
实现思路如下:
使用drive.js第三方库。
官方地址:https://github.com/kamranahmedse/driver.js
也可以参考这个博客:
Vue 页面引导效果(首次登录新用户引导) driver.js 引导页
具体来说,在layout写好driver实例,创建step.js文件,在里面写好每一步的对象数组,在mounted函数挂好初始化,然后在子组件的按钮上调用父组件的方法(this.$parent.method()),即可开始引导页操作。

  mounted() {
    this.driver = new Driver({
      opacity: 0.6,
      animate: true,
      doneBtnText: "我知道了",
      closeBtnText: "跳过", //  关闭按钮文案
      nextBtnText: "下一步", // 下一步的按钮文案
      prevBtnText: "上一步", // 上一步的按钮文案
      keyboardControl: true, // 允许通过键盘控制(退出关闭,箭头键移动)
    });
    console.log(this.driver);
  },

下面是step文件。

// 定义介绍的步骤
const steps = [
    {
      element: '#guide-header',
      stageBackground: '#fff',
      popover: {
        title: '头部',
        description: '网页顶部',
        position: 'bottom-center'
      }
    },
    {
        element: '#guide-dark',
        stageBackground: '#fff',
        popover: {
          title: '夜间模式',
          description: '点击切换日间和夜间模式',
          position: 'bottom'
        }
    },
    {
        element: '#guide-screenfull',
        stageBackground: '#fff',
        popover: {
          title: '切换全屏',
          description: '点击切换是否全屏展示',
          position: 'bottom'
        }
    },
    {
        element: '#guide-person',
        stageBackground: '#fff',
        popover: {
          title: '个人中心',
          description: '用户相关的页面',
          position: 'bottom'
        }
    },
    {
        element: '#guide-aside',
        stageBackground: '#fff',
        popover: {
          title: '侧边栏',
          description: '这里是菜单导航区域',
          position: 'right'
        }
      },
      {
        element: '#guide-collapse',
        stageBackground: '#fff',
        popover: {
          title: '折叠菜单',
          description: '点击折叠或展开菜单栏',
          position: 'right'
        }
      },

全屏

点击图标后实现全屏。
在这里插入图片描述

<span id="guide-screenfull">
        <el-icon :size="20" style="margin-right:17px;cursor:pointer;position: relative;top: 4.5px" @click="toggleFullscreen()"><FullScreen /></el-icon>
</span>

对应的点击后的函数比较重要,这里实现方式很多,我是这样实现的:
通过第三方库screenfull,点击后调用相关函数:

    toggleFullscreen() {
      if (screenfull.isEnabled) {
        screenfull.toggle();
      }
    },

暗黑模式

暗黑模式也花了我很长时间。
暗黑模式的实现,最新版本的elementPlus官方是有的,参见:
https://element-plus.gitee.io/zh-CN/guide/dark-mode.html#%E9%80%9A%E8%BF%87-css
但是!官方的实现,在我们的环境里,有问题!
我在GitHub上也看到了类似的报错反馈,说明应该是有bug的。
我研究了很久的官方源码,发现原理并不复杂,把官方写好的CSS拿过来用就好了。于是自己动手实现了一遍。
CSS如下:

html.dark {
    color-scheme: dark;
    --el-color-primary: #409eff;
    --el-color-primary-light-3: #3375b9;
    --el-color-primary-light-5: #2a598a;
    --el-color-primary-light-7: #213d5b;
    --el-color-primary-light-8: #1d3043;
    --el-color-primary-light-9: #18222c;
    --el-color-primary-dark-2: #66b1ff;
    --el-color-success: #67c23a;
    --el-color-success-light-3: #4e8e2f;
    --el-color-success-light-5: #3e6b27;
    --el-color-success-light-7: #2d481f;
    --el-color-success-light-8: #25371c;
    --el-color-success-light-9: #1c2518;
    --el-color-success-dark-2: #85ce61;
    --el-color-warning: #e6a23c;
    --el-color-warning-light-3: #a77730;
    --el-color-warning-light-5: #7d5b28;
    --el-color-warning-light-7: #533f20;
    --el-color-warning-light-8: #3e301c;
    --el-color-warning-light-9: #292218;
    --el-color-warning-dark-2: #ebb563;
    --el-color-danger: #f56c6c;
    --el-color-danger-light-3: #b25252;
    --el-color-danger-light-5: #854040;
    --el-color-danger-light-7: #582e2e;
    --el-color-danger-light-8: #412626;
    --el-color-danger-light-9: #2b1d1d;
    --el-color-danger-dark-2: #f78989;
    --el-color-error: #f56c6c;
    --el-color-error-light-3: #b25252;
    --el-color-error-light-5: #854040;
    --el-color-error-light-7: #582e2e;
    --el-color-error-light-8: #412626;
    --el-color-error-light-9: #2b1d1d;
    --el-color-error-dark-2: #f78989;
    --el-color-info: #909399;
    --el-color-info-light-3: #6b6d71;
    --el-color-info-light-5: #525457;
    --el-color-info-light-7: #393a3c;
    --el-color-info-light-8: #2d2d2f;
    --el-color-info-light-9: #202121;
    --el-color-info-dark-2: #a6a9ad;
    --el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.36), 0px 8px 20px rgba(0, 0, 0, 0.72);
    --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.72);
    --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.72);
    --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.72), 0px 12px 32px #000000, 0px 8px 16px -8px #000000;
    --el-bg-color-page: #0a0a0a;
    --el-bg-color: #141414;
    --el-bg-color-overlay: #1d1e1f;
    --el-text-color-primary: #E5EAF3;
    --el-text-color-regular: #CFD3DC;
    --el-text-color-secondary: #A3A6AD;
    --el-text-color-placeholder: #8D9095;
    --el-text-color-disabled: #6C6E72;
    --el-border-color-darker: #636466;
    --el-border-color-dark: #58585B;
    --el-border-color: #4C4D4F;
    --el-border-color-light: #414243;
    --el-border-color-lighter: #363637;
    --el-border-color-extra-light: #2B2B2C;
    --el-fill-color-darker: #424243;
    --el-fill-color-dark: #39393A;
    --el-fill-color: #303030;
    --el-fill-color-light: #262727;
    --el-fill-color-lighter: #1D1D1D;
    --el-fill-color-extra-light: #191919;
    --el-fill-color-blank: transparent;
    --el-mask-color: rgba(0, 0, 0, 0.8);
    --el-mask-color-extra-light: rgba(0, 0, 0, 0.3)
}

html.dark .el-button {
    --el-button-disabled-text-color: rgba(255, 255, 255, 0.5)
}

html.dark .el-card {
    --el-card-bg-color: var(--el-bg-color-overlay)
}

html.dark .el-empty {
    --el-empty-fill-color-0: var(--el-color-black);
    --el-empty-fill-color-1: #4b4b52;
    --el-empty-fill-color-2: #36383d;
    --el-empty-fill-color-3: #1e1e20;
    --el-empty-fill-color-4: #262629;
    --el-empty-fill-color-5: #202124;
    --el-empty-fill-color-6: #212224;
    --el-empty-fill-color-7: #1b1c1f;
    --el-empty-fill-color-8: #1c1d1f;
    --el-empty-fill-color-9: #18181a
}

总的来说,相当于引入了一个官方写好的css文件。在index.html中引入,把类名写为dark,即可实现暗黑模式。
但是没办法切换?好办,给个按钮,能控制整个页面的类名就好了。
怎么控制?这里用Vue常规手段比较难实现,所以我动了一下脑子,决定简单粗暴,用最原始的HTML获取和操作DOM树的方法。获取整个DOM对象,然后用JavaScript的函数更改类名即可!

changeTheme(){
      //这里用了很原始的dom树,不得已之举了属于是
      if(this.dark){
        document.getElementsByClassName("WholePage")[0].setAttribute("class","WholePage dark");
      }
      else{
        document.getElementsByClassName("WholePage")[0].setAttribute("class","WholePage");
      }
    },

总结

在实训的最后一段时间,为了前端进一步美化,我先后实现了引导页、暗黑模式、全屏,都达到了预期的效果。收获颇丰。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值