如何实现“新手引导”效果

前言:初次登录一些网站时,一般会有“新手指引”操作,用于指引新用户如何使用本网站的一些说明。在网上查阅资料,学习了《慕课网》的一个视频资料,现记录如下。“新手指引”操作,主要涉及html结构(黑色蒙版),css的绝对定位,js的“下一步”操作,以及用户登录时只操作一次的cookie设置。

一、HTML结构介绍

      HTML结构布局,添加蒙版,定义父块及各个引导单元。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meat http-equiv="X-UA-Compatible" content="ie=edge">
<title>新手指引</title>
</head>
<body>
<!--黑色蒙版-->
<div id="mask"></div>
<!--引导区-->
<div id="searchTip">
     <div class="stepA"><a>下一步</a><span title="关闭">关闭</span></div>
     <div class="stepB"><a>下一步</a><span title="关闭">关闭</span></div>
     <div class="stepC"><a>下一步</a><span title="关闭">关闭</span></div>
     <div class="stepD"><a>下一步</a><span title="关闭">关闭</span></div>
     <div class="stepE"><a>下一步</a></div>
</div>
</body>
</html>

二、网页蒙版的设置

       对网页蒙版的高度、位置、透明度及游览器的兼容情况进行设置。

#mask {
    width: 100%;
    height: 100%;
    background: #000;
    opacity: 0.5;
    filter: alpha(opacity=50);  /*定义低版本IE游览器的透明属性*/
    position: absolute;
    left: 0;
    top: 0;
    display: none;
}

三、引导单元定位

       对父块的宽度、位置、背景等参数进行设置,并且利用绝对定位的方法对各个引导小单元进行定位。

*{ 
    margin: 0; 
    padding: 0;
}
html{
    height:100%;
}
body{ 
    background:url(http://img.mukewang.com/538d971400016dbd16191694.jpg) center top; 
    height:100%;
}
#mask{ 
    height:100%; 
    width:100%; 
    background:#000; 
    opacity:0.5; 
    filter:alpha(opacity=50);  /*定义低版本IE游览器的透明属性*/ 
    position:absolute; 
    left:0; 
    top:0; 
    display:none;
}
#searchTip{ 
    width:980px; 
    height:800px; 
    position: absolute; 
    left:50%; 
    margin-left: -490px; /*让searchTip处于居中位置*/
    display:none;
}
#searchTip div{ 
    position:absolute; 
    display:none; 
}
#searchTip div a{ 
    position:absolute;
    width:96px; 
    height:32px; 
    cursor:pointer; 
    text-indent:-999px; /*隐藏a标签中的文字*/
    overflow:hidden;
}
#searchTip div span{
    cursor:pointer; 
    position:absolute; 
    width:30px; 
    height:30px;
    text-indent:-999px; 
    overflow:hidden;
}
.stepA{ 
    background:url(http://img.mukewang.com/538d974000011bda07450329.jpg);
    height:329px; 
    width:745px; 
    top:130px; 
    left:-9px; 
    display:block;
}
.stepA a{
    top:230px; 
    left:490px; 
}
.stepA span{ 
    top:143px; 
    right:32px; 
}
.stepB{ 
    background:url(http://img.mukewang.com/538d975f00017e8d06470405.jpg);
    width:647px; 
    height:405px;
    top:2px; 
    left:324px;
}
.stepB a{
    top:308px; 
    left:146px;
}
.stepB span{ 
    top:196px; 
    right:285px; 
}
.stepC{ 
    background:url(http://img.mukewang.com/538d977c0001ef5f06540257.jpg); 
    width:654px; 
    height:257px;
    top:294px; 
    left:318px;
}
.stepC a{
    top:155px; 
    left:400px; 
}
.stepC span{ 
    top:44px; 
    right:35px; 
}
.stepD{ 
    background:url(http://img.mukewang.com/538d97990001692305580348.jpg); 
    width:558px; 
    height:348px;
    top:78px; 
    left:155px;
}
.stepD a{
    top:246px; 
    left:304px;
}
.stepD span{ 
    top:135px; 
    right:35px; 
}
.stepE{ 
   background:url(http://img.mukewang.com/538d97b70001f47d03970342.jpg);
    width:397px; 
    height:342px;
    top:79px; 
    left:250px;
}
.stepE a{
    top:245px; 
    left:153px;
}

四、JavaScript控制引导单元的显示

       首先对引导单元的逻辑顺序进行分析,通过编写JS,实现对各个引导单元的显示顺序进行控制。它们之间的逻辑关系如下图所示:

 

<script type="text/javascript">
window.onload = function(){
    var oMask = document.getElementById('mask');
    var oSearch = document.getElementById('searchTip');
    var aStep = oSearch.getElementsByTagName('div');
    var aA = oSearch.getElementsByTagName('a');
    var aClose = oSearch.getElementsByTagName('span');

        //下一步按钮
    for(var i=0;i<aStep.length;i++) {
        aA[i].index = i; //为每一个按钮增加一个index属性,为后面引用做好准备
        aA[i].onclick = function(){
            this.parentNode.style.display="none";
            //aStep[this.index+1].style.display="block";

            if(this.index<aStep.length-1){ //如上,如果不加这个判断,到了最后一个会报错
                aStep[this.index+1].style.display="block";
            }
            else if(this.index==aStep.length-1){//如果到了最后一个,结束整个操作
                oMask.style.display="none";
                this.style.display=oSearch.style.display="none";
            }
        }
    }
    //关闭按钮
    for(var i=0;i<aClose.length;i++){
        aClose[i].onclick=function(){
            oMask.style.display=oSearch.style.display="none";
        }
    }
}
</script>

  还有另外一种交互实现方式--jQuery

  对JavaScript源码实现的引导单元的显示效果,用jQuery进行简化。

<script src="js/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){
        $('#mask,#searchTip,#searchTip div:eq(0)').show();
        $('#searchTip div a').click(function(){
            var current=$(this).parent();
            current.hide();
            current.next().show();
        })

        $('#searchTip div span,#searchTip div a:last').click(function(){
            $('#mask,#searchTip').hide();
        })
    })
</script>

五、只为新手引导--Cookie的设定

      介绍cookie的添加和读取。

     cookie是一些数据,存储于你电脑上的文本文件中。当web服务器向游览器发送web页面时,在连接关闭后,服务端不会记录用户的信息。Cookie的作用就是用于解决“如何记录客户端的用户信息”:①当用户访问web页面时,它的名字可以记录在cookie中;②在用户下一次访问该页面,可以在cookie中读取用户访问记录。逻辑结构如下:

<script type="text/javascript">
window.onload = function(){
    var oMask = document.getElementById('mask');
    var oSearch = document.getElementById('searchTip');
    var aStep = oSearch.getElementsByTagName('div');
    var aA = oSearch.getElementsByTagName('a');
    var aClose = oSearch.getElementsByTagName('span');

    //读取cookie
    var res=document.cookie.substring(5);
    alert("当前cookies="+"("+res+")");
     
    如果没有cookie,执行以下操作
    //判断是否来过
    if(res!="www.open.com.cn"){
        alert("没有登录过");
        //mask父框 第一单元显示出来
        oMask.style.display = oSearch.style.display = aStep[0].style.display = 'block';

        //下一步按钮
    for(var i=0;i<aStep.length;i++) {
        aA[i].index = i; //为每一个按钮增加一个index属性,为后面引用做好准备
        aA[i].onclick = function(){
            this.parentNode.style.display="none";
            //aStep[this.index+1].style.display="block";

            if(this.index<aStep.length-1){ //如上,如果不加这个判断,到了最后一个会报错
                aStep[this.index+1].style.display="block";
            }
            else if(this.index==aStep.length-1){//如果到了最后一个,结束整个操作
                oMask.style.display="none";
                this.style.display=oSearch.style.display="none";
            }
        }
    }
    //关闭按钮
    for(var i=0;i<aClose.length;i++){
        aClose[i].onclick=function(){
            oMask.style.display=oSearch.style.display="none";
        }
    }
    //添加cookie
    var oDate=new Date();
    oDate.setDate(oDate.getDate()+30);
    document.cookie="name=www.open.com.cn;expires="
    //如果没有来过,添加cookie
    var oDate = new Date();
    oDate.setDate(oDate.getDate()+30);
    document.cookie="name=www.open.com.con;expires="+oDate;
    }
}
</script>

或者,用jQuery方法如下:

<script type="text/javascript">
    $(function(){
        //读取cookie
        var res=document.cookie.substring(5);
        alert(res);

        //如果没有cookie,执行以下动作
        if(res!="www.open.com.cn"){
            alert(res)
        $('#mask,#searchTip,#searchTip div:eq(0)').show();
        $('#searchTip div a').click(function(){
            var current=$(this).parent();
            current.hide();
            current.next().show();
        })

        $('#searchTip div span,#searchTip div a:last').click(function(){
            $('#mask,#searchTip').hide();
        })

        //添加cookie
        var oDate=new Date();
        oDate.setDate(oDate.getDate()+30);
        document.cookie="name=www.open.com.cn;expires="+oDate;
        }
    })
</script>

六、总结

       “新手指引”效果,注意JS的设置,学习cookie的写法,在未连接服务器时,在本地测试时,可以使用火狐游览器进行模拟。

       在游览器的显示效果如下:

参考博客:《慕课网》----如何实现“新手引导” 效果   https://www.imooc.com/video/140

      

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在前端开发中,SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,它可以通过代码来描述图形,并且可以无损地进行放大或缩小而不失真。对于前端开发者来说,掌握SVG的技术和应用是非常重要的。在引用中提到了一个高大上的SVG效果,可能是指在网页中使用SVG来实现某种特效或动画效果。 关于前端SVG新手引导的问题,引用中给出了一段代码示例,该代码使用了一个名为steps.js的文件,并在HTML中引入了这个文件。在HTML中,使用了一个div标签来包裹文本内容,并且在其中嵌入了一个SVG图标。此外,还有一个"开启引导"的按钮,点击后会触发guide()函数。 所以,前端SVG新手引导实现可以通过编写相关的代码来实现。可以使用SVG图形和动画特性,结合JavaScript和CSS等技术来实现引导效果。具体的实现方式可以根据具体需求和设计来确定,例如通过创建SVG图形元素、设置动画效果等来引导用户进行操作或提供相关提示信息。同时,也可以借助第三方库或框架来简化开发过程,如在引用中提到的Awesome Vuejs Resource中可能有一些相关的资源供参考。 总之,前端SVG新手引导是一种通过SVG图形和动画来引导用户的交互设计方式,开发者可以根据具体需求和技术选型来实现相应的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值