jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)


Posted in jQuery onMay 20, 2017

一、有请jquery.guide.js

网站上线或者改版的时候,常常会做一个操作向导,告诉用户一些重要操作到了哪里,或者什么地方隐藏了什么好玩的东西,等等,虽然我都是直接关掉的,或者快速跳过,但是对有部分用户而言还是很有用的。

这种提示比较好的交互效果是采用镂空的半透明遮罩,视觉重点一目了然,类似这样:

我在去年的时候曾经写了一篇文章,名为“ 腾讯微云黑色遮罩引导蒙版更好的CSS实现方式 ”,介绍如何使用单标签,实现类似的交互效果,其中,核心技巧是使用了CSS border 属性,也就是周围的黑色半透明遮罩实际上是半透明边框。

后来我发现了一种更好的实现方式,就是使用CSS outline 属性, outline 属性为元素的轮廓,并不会增加任何元素的尺寸,也不会破坏原先的布局,因此我们只需要设一个非常非常大的 outline 宽度值,我们定位元素就永远天然镂空,根本不需要计算上下左右的半透明黑色区有多大。

.guide {
  outline: 9999px solid rgba(0,0,0,.75);
}

最近正好有个改版项目有类似的需求,我要基于这个原理顺便整了一个jQuery插件,名为jquery.guide.js,专门用来实现黑色半透明遮罩镂空提示引导效果。

实例demo地址: demo地址戳这里

二、jquery.guide.js小插件的优势

jquery.guide.js 小插件的优势如下:

1.使用方便,直接引入JS就好了,无需引入CSS资源;
2.支持浏览器的滚动以及缩放的重定位;
3.支持浏览器键盘操作,如上下键和左右键上一步下一步,ESC键退出等;
4.支持页面异步呈现的元素的引导;
5.内置是否提示检测,也就是内置只会提示一次的处理,基于localStorage进行首次判断;
6.兼容到IE8浏览器;

然后,一些偷懒的地方:

1. 默认是使用 outline 属性实现的,因此不支持圆角,如果你想实现类似下图的效果:

jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐) 

则可以使用CSS box-shadow 属性模拟半透明遮罩效果,在 jquery.guide.js 源代码中,其实已经给大家都准备好了,如下图:

jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐) 

正如源代码中的注释所言,如果想支持圆角,注释上面的 outline ,放开下面两行 box-shadow 和 border-radius 的注释就可以了。

.guide {
  box-shadow: 0 0 0 9999px rgba(0,0,0,.75);
  border-radius: 50%;
}

其中 box-shadow: 0 0 0 9999px 表示原地阴影扩展 9999px 的意思,再用户看来,就是一个满屏黑色半透明的遮罩。

至于不支持CSS3 box-shadow 和 border-radius 的IE8浏览器还是 outline 直角效果。

2.z-index 层级以及半透明遮罩层的透明度都没有作为参数放开,因为新手引导提示基本都是一次性的,如果大家觉得 z-index 层级或者 opacity 透明度不满意,直接修改JS源代码即可。

三、jquery.guide.js小插件的语法和使用

语法如下:

$.guide(options);

其中, options 为数组,数组项为格式一致的包含提示信息相关参数的对象,这个对象统一的默认值为:

var defaults = {
  selector: '', 
  content: '', 
  align: 'center',
  offset: {
    x: 0,
    y: 0
  }
};

使用时候类似这样:

$.guide([{
  selector: '#target'
}]);

其中:

•selector 表示需要镂空暴露的目标元素的选择器,如果该选择器可以匹配多个元素,则使用该选择去匹配的第一个元素作为目标元素;如果无法匹配元素,则整个这个参数对象会被忽略。
•content 表示镂空区域内额外显示的内容,可以是HTML字符串,也可以是jQuery包装器对象。
•align 表示显示内容的对齐方式,是左对齐居中对齐还是右对齐?可选关键字值包括: left , center , right . 其中 center 是默认值。
•offset 表示偏移的水平垂直距离, x 那是水平偏移位置,计算规则与 align 参数值有关, y 表示垂直偏移距离,其中 content 提示内容默认不是顶对齐,而是相对于镂空暴露的目标元素下边缘往上 5 像素对齐。

眼见为实,demo页面走起,您可以狠狠地点击这里: jQuery小插件jquery.guide.js使用demo

demo页面共设置了 4 个提示元素,相关JS使用如下:

<script src="./jquery.min.js"></script>
<script src="./jquery.guide.js"></script>
<script>
$.guide([{
  selector: '.logo',
  content: '<img src="guide-1.png">',
  align: 'left'
}, {
  selector: '.ad img',
  content: '<img src="guide-2.png">'
}, {
  selector: '#back',
  content: '<img src="guide-3.png">',
  align: 'left'
}, {
  selector: '.demo img',
  content: '<img src="guide-4.png">'
}]);
</script>

本demo页面为了演示方便,做了特殊处理,每次刷新都会显示提示效果。实际使用的时候是不会有这样的问题的,只会显示一次,无需担心。

jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐) 

四、结束语

并不是什么了不起的东西,就不放在github上了,如果大家有幸捧场使用,遇到什么问题,欢迎评论的形式进行反馈。

jQuery 相关文章推荐
JQuery实现图片轮播效果
May 08 jQuery
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
jQuery实现的form转json经典示例
Oct 10 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
jQuery滑动效果实现方法分析
Sep 05 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
[jQuery] 事件和动画详解
Mar 05 jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
jquery实现手风琴案例
May 04 jQuery
JS jQuery使用正则表达式去空字符的简单实现代码
May 20 #jQuery
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 #jQuery
jQuery操作之效果详解
May 19 #jQuery
jQuery Validate 校验多个相同name的方法
May 18 #jQuery
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 #jQuery
jQuery查找dom的几种方法效率详解
May 17 #jQuery
jQuery实现div跟随鼠标移动
Aug 20 #jQuery
You might like
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
vue之数据交互实例代码
2017/06/20 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
详解python中的json和字典dict
2018/06/22 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python中shell执行知识点
2020/05/06 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
最热门的自我评价
2013/12/30 职场文书
企业申诉管理制度
2014/01/30 职场文书
网络营销策划方案
2014/06/04 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2015年少先队活动总结
2015/03/25 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫