王者荣耀是如何手把手让你上头的

简介: 时隔多日秋风又回来了,这次带来的主题是,王者荣耀是如何手把手让你上头的,对.... 其实这句话重点不是上头,也不是王者荣耀,重点是"手把手"。

时隔多日秋风又回来了,这次带来的主题是,王者荣耀是如何手把手让你上头的,对.... 其实这句话重点不是上头,也不是王者荣耀,重点是"手把手"。


为什么这么说呢?无图无真相,先上图。


image.png


没错,上面的就是王者荣耀的新手引导,手把手教学,还有妲己美妙的声音,让人如此上头。


整个过程大约 2 分钟。它使用了多种引导方式,蒙层引导、气泡引导、视频引导、操作引导还有预设任务,可以说在新手引导方面,真的很"细",用了各种各样的花样。但是它用了仅仅 2 分钟的指引就让你快速体验到了整个产品的使用方式,让你感受到打败敌人是如此满足,赢得一场游戏是如此简单。你收获了大量的快乐同时产生对它的依赖。


而如果说,没有新手指引,让一个没有从来没有玩过此类游戏的新人,就上手一个 5v5 的战斗,在自己还没弄懂操作,就上手实战,那么新人肯定会被打的很惨,受到队友的抱怨不说,很快会输掉一场比赛,从而产生挫败感,觉得这个游戏垃圾,更不用说从游戏中体验快感。


image.png


所以说新手引导是一种能让用户在短时间内快速了解产品特色以及产品使用方式。


它是非常重要也是非常有必要学习的一个功能!这也是本篇文章想要介绍的重点内容。下面就进行原理实战讲解


我先介绍一下常见的几种类型新手引导效果图。


1.引导页



引导页一般出现在首次打开APP的时候,由3-5个页面组成。


image.png


2.蒙层引导



在产品的整个界面上方用一个黑色半透明蒙层进行遮罩,这种引导方式可以让用户聚焦了解被圈注的功能点或手势说明。


image.png


3.气泡/弹窗提示



在操作按钮旁边弹出一个气泡提示框或者直接弹出弹窗。


image.png


4.动画/视频引导



用户可以根据动态演示,很快地理解整个产品。


image.png


5.操作式引导



一步一步地引导你进行操作,鼓励用户参与其中,边学边用。


image.png


6.预设任务



预设任务是指在用户进入产品后,自动为用户创建了一些和产品形态相关的示例,而不是留给用户一个空页面。


image.png


人将降大任于斯人也,所以最近我就遇到了这样的一个需求。不过我需要实现的也比较简单,只需要实现蒙层引导。


今天我们就来实现一下这个功能。先来看一下我们目标的样子。核心代码大概只需要花5分钟就能学会,只需 9 行 js 代码60 行 CSS 代码。所以接着往下看吧 ~ 高亮部分会有不一样的收获哦 ~


image.png


主要包括三个部分: 蒙层、气泡、高亮。


image.png


蒙层和气泡对于很多同学来说,真的是太熟悉了。这里就只贴代码了,没有什么过多的可以讲解,主要是利用了绝对定位。


// 蒙层实现
<style>
.guide-mask {
  z-index: 999999;
  background-color: #000;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  position: fixed;
  opacity: 0.8;
}
</style>
<div class="guide-mask"></div>


// 气泡实现
<style>
.tooltip-box:before {
  content: "";
  position: absolute;
  right: 100%;
  top: -10px;
  left: 20%;
  width: 0;
  height: 0;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 13px solid white;
}
</style>
<div class='tooltip-box'>
  秋风的技能
</div>


而这个高亮怎么实现呢?如何能让蒙层中间产生一个空白框呢?在我所知的 CSS 属性中并没有相关的属性可以实现这个特性,如果不能这样实现。那意味着我是不是需要自己将这个高亮区块给空出来呢,自己通过拼接的方式来实现。如下所示,这是我第一直觉想到的方案。


image.png


而后我又使用了第二种方式。先来看一下实现方案的图层分解。


image.png


image.png


是的,通过图层分解,我们可以看到,目标的元素那一行"秋风的技能"是处于最高层,而不是和 "秋风的笔记"文字处于同一层。因此采取的方案是,我们没办法让蒙层在中间空出来,但是,我们可以通过 z-index 让我们的目标元素置于蒙层之上,然后再在蒙层和目标元素之间加入一个白色的背景框,这样就达到了高亮的效果。


关于定位,我们通过 getBoundingClientRect 属性来获取目标元素的大小及其相对于视口的位置。然后通过绝对定位来进行布局。以下就是这个实现的主要逻辑(代码比较粗糙,主要是意思表达


<style>
  ...
  .guide-helper-layer {
    position: absolute;
    z-index: 9999998;
    background-color: #FFF;
    background-color: rgba(255, 255, 255, .9);
    border-radius: 4px;
  }
  .guide-content {
    position: absolute;
    z-index: 10000000;
    background-color: transparent;
  }
  .guide-mark-relative {
    position: relative;
    z-index: 9999999 !important;
  }
  ...
</style>
</head>
<body>
    <h2>秋风的笔记</h2>
    <div class="skill guide-mark-relative">
        ...
    </div>
    <div class="guide-mask"></div>
    <div class="guide-helper-layer" style="width: 472px; height:58px; top:55px;left: 36px;">
        <div class='tooltip-box'>
            秋风的技能
        </div>
    </div>
    <script>
        const guideTarget = document.querySelector('.skill')
        const tooltip = document.querySelector('.tooltip-box')
        var rect = guideTarget.getBoundingClientRect()
        const helperLayer = document.querySelector('.guide-helper-layer')
        helperLayer.style.left = rect.left - 3 + 'px'
        helperLayer.style.top = rect.top - 3 + 'px'
        helperLayer.style.width = rect.width + 3 * 2 + 'px'
        helperLayer.style.height = rect.height + 3 * 2 + 'px'
        tooltip.style.top = rect.height + 3 * 2 + 10 + 5 + 'px'
</script>


以上就是实现一个蒙层引导的实现方案。当然这么精妙的设计也是离不开伟大的开源项目,以上就是参考了开源项目 introjs 来实现的。


我顺便来介绍一下目前我看到新手引导比较好的几个开源项目


jquery-pagewalkthrough


优势: 手绘风,适用于特定的网站风格。


缺点: 需要依赖 jQuery。


image.png


intro.js


优势: 拥有丰富的蒙层引导示例,可自定义主题


缺点: 个人免费,商业需要付费。


image.png


driver.js


优势: MIT 开源,拥有与 intro.js 差不多的功能。


缺点: 示例没有 intro.js 丰富。


image.png


综合来讲的话,driver.js 优势比较明显(因为可以商用~)。至此,本文就到此结束了,欢迎大家留言讨论哦~


参考


https://zhuanlan.zhihu.com/p/33508501

https://www.zhihu.com/question/20295898

http://www.woshipm.com/ucd/3506054.html

https://juejin.im/post/6844903859786104839

相关文章
|
6月前
|
数据采集 人工智能 运维
看漫画学Python:有趣好玩
Python是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机等级考试科目,某些中小学也开设了Python编程课程。本书秉承有趣、有料、好玩、好用的理念,通过3个漫画人物的轻松对话、搞笑形象及夸张动作,把复杂的Python技术问题简单化。
79 1
小蚂蚁学员们的微信小游戏作品分享2
再分享一波我的学员的微信小游戏作品,厉害的学员越来越多了,上线的小游戏作品也越来越多了,靠小游戏赚到钱的学员也越来越多了。 大部分的学员都是从零开始的,通过学习做出了自己的第一个小游戏,通过接入流量主赚到了自己的第一份睡后收入,祝贺这些学员学有所成。🎉 下面这些小游戏都无需下载安装,点击小游戏名字,可以直接打开体验。欢迎大家去玩玩,支持一下我的学员们的游戏作品。
141 0
|
小程序
小蚂蚁学员们的小游戏
在这里是一些小游戏作品。假期休闲放松时,欢迎来玩玩。 无需下载安装,直接点击下方的对应卡片即可开始啦!
126 0
|
小程序
点这里,玩小蚂蚁学员们的小游戏
嗨!大家好,我是小蚂蚁。 这里是一些我的学员小游戏作品,很高兴越来越多的通过学习做出了的自己的游戏,这也让我觉得自己做的事情很有价值。
181 0
|
小程序
女神节你也能自己动手制作一个漂亮的微信小游戏
嗨!大家好,我是小蚂蚁。 这是我之前制作的一个非常漂亮的微信小游戏,你可以给予它进行改编,然后自己制作一个小游戏送给你想送的人。 我发现这篇文章每年至少可以发四次,情人节一次,女神节一次,520一次,七夕一次[阴险]。 今年的我做了点儿改进,增加了一首背景音乐,是经典的《卡农》钢琴曲,希望你喜欢。
93 0
|
小程序
小蚂蚁游戏开发课程学员的第一款小游戏作品
今天要介绍的是小蚂蚁游戏开发课程学员@Sing的一款小游戏作品曹操别想逃,是一个华容道游戏。 不得不说我还是极其兴奋的,因为这是我的学员的第一款上线的小游戏,虽然我只是给了一点儿指导,但是从某种意义上来讲,这大概算是我帮助他人完成的第一款小游戏作品,带来的兴奋感和成就感甚至不亚于我自己完成了一款游戏的创作。
90 0
|
区块链 C# 开发工具
520快给你喜欢的女生发个表白软件吧!【手把手教学】
520快给你喜欢的女生发个表白软件吧!【手把手教学】
157 0
|
SQL 算法 计算机视觉
百度飞桨课堂小白逆袭大神第三天课程(整理)
百度飞桨课堂小白逆袭大神第三天课程(整理)
197 0
百度飞桨课堂小白逆袭大神第三天课程(整理)
我做的一个超级好玩的中秋节小游戏
我做的一个超级好玩的中秋节小游戏
我做的一个超级好玩的中秋节小游戏
|
机器学习/深度学习 并行计算 PyTorch
动手玩玩头像动漫化
动手玩玩头像动漫化
238 0
动手玩玩头像动漫化