js实现可以点击收缩或张开的悬浮窗


Posted in Javascript onSeptember 18, 2017

本文实例为大家分享了js实现悬浮窗的具体代码,供大家参考,具体内容如下

js实现可以点击收缩或张开的悬浮窗

说明:点击”+“按钮,悬浮窗收缩/展开

思路

1、在html中定义一个div块,定一个id;一个按钮,点击时用。

2、写一个js,包含收缩以及展开的函数;为按钮添加点击事件。

3、想要让悬浮窗好看点,可设置对应的参数。

步骤

html

<div id="area">
    <div id="small_menu">
      <ul>
        <li><a href="#">item one</a></li>
        <li><a href="#">item two</a></li>              
        <li><a href="#">item three</a></li>
        <li><a href="#">item four</a></li>
        <li><a href="#">item five</a></li>
      </ul>         
    </div>    
    <div id="on" onclick="xuanfu();"><p>+</p></div> 
  </div>

js

var menubox = document.getElementById("area"); //area为菜单栏的id
  var cli_on = document.getElementById("on"); //on为按钮
  var flag = false, timer = null, initime = null, r_len = 0;

  if(menubox.style.right=== 0){
    flag = true;
    }
  else{
    flag = false;
    }
  cli_on.onclick = function () {
    //为on按钮绑定click事件
    clearTimeout(initime);
    //根据状态flag执开展开收缩
    if (flag) {
      r_len = 0;
      timer = setInterval(slideright, 10);
    } else {
      r_len = -160;
      timer = setInterval(slideleft, 10);
    }
  }
  //展开
  function slideright() {
    if (r_len <= -160) {
      clearInterval(timer);
      flag = !flag;
      return false;
    }else{
      r_len -= 5;
      menubox.style.right = r_len + 'px';
    }
  }
  //收缩
  function slideleft() {
    if (r_len >= 0) {
      clearInterval(timer);
      flag = !flag;
      return false;
    } else {
      r_len += 5;
      menubox.style.right = r_len + 'px';
    }
  }

完整代码

含css,可直接用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>悬浮窗</title>
</head>
<style type="text/css">
#area{
 position:fixed;
 width:160px;
 right:-160px;
 top:27%;}
#small_menu ul {
 list-style: none;
}
#area #on{
 position: absolute;
 top: 40%;
 right: 100%;
 width: 30px;
 height: 30px;
 cursor: pointer;
 border-radius: 15px;
 background-color: rgba(13, 143, 143, 0.2);
 }
#area #on p{
 font-size:30px;
 text-align:center;
 margin-top:-6px;
 color:#01E290;
 }
#area #small_menu {
 width:100%;
 } 
#area #small_menu ul li {
 width:100%;
 height: 44px;
 text-align:left;
 background-color: rgba(2, 27, 38, 0.62);
 border-top: 1px solid #043B46;
 line-height: 44px;
}
#area #small_menu ul li a{
 text-decoration: none; 
 margin-left:30px;
 color: #bfbfbf;
 font-size:16px;
 font-family: 'Microsoft Yahei';
 }
#area #small_menu li.active {
 width: 156px; 
 background-color: rgba(2, 27, 38, 0.87);
 border-left: 4px solid #00ffff;
 border-top: 0px;
}
#area #small_menu li.active a{
 color: #00ffff;
 }

#area #small_menu ul li:hover {
 width: 156px;
 background-color: rgba(2, 27, 38, 0.87);
 border-left: 4px solid #00ffff;

}
#area #small_menu ul li:hover a{
 color: #00ffff; 
 } 
</style>
<body>
 <div id="area">
  <div id="small_menu">
   <ul>
    <li><a href="#">item one</a></li>
    <li><a href="#">item two</a></li>       
    <li><a href="#">item three</a></li>
    <li><a href="#">item four</a></li>
    <li><a href="#">item five</a></li>
   </ul>     
  </div>  
  <div id="on" onclick="xuanfu();"><p>+</p></div> 
 </div>
<script>
//嵌套在页面中,文档初始化时加载。

 var menubox = document.getElementById("area"); //area为菜单栏的id
 var cli_on = document.getElementById("on"); //on为按钮
 var flag = false, timer = null, initime = null, r_len = 0;

 if(menubox.style.right=== 0){
  flag = true;
  }
 else{
  flag = false;
  }
 cli_on.onclick = function () {
  //为on按钮绑定click事件
  clearTimeout(initime);
  //根据状态flag执开展开收缩
  if (flag) {
   r_len = 0;
   timer = setInterval(slideright, 10);
  } else {
   r_len = -160;
   timer = setInterval(slideleft, 10);
  }
 }
 //展开
 function slideright() {
  if (r_len <= -160) {
   clearInterval(timer);
   flag = !flag;
   return false;
  }else{
   r_len -= 5;
   menubox.style.right = r_len + 'px';
  }
 }
 //收缩
 function slideleft() {
  if (r_len >= 0) {
   clearInterval(timer);
   flag = !flag;
   return false;
  } else {
   r_len += 5;
   menubox.style.right = r_len + 'px';
  }
 } 

</script>
</body>

</html>

小结到此。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jquery给input和textarea设定ie中的focus
May 29 Javascript
JS限制Textarea文本域字符个数的具体实现
Aug 02 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
JavaScript判断用户是否对表单进行了修改的方法
Mar 18 Javascript
jQuery判断一个元素是否可见的方法
Jun 05 Javascript
javascript 闭包详解
Jul 02 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
微信小程序访问node.js接口服务器搭建教程
Apr 25 Javascript
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
webpack构建的详细流程探底
Jan 08 Javascript
Vue实现浏览器打印功能的代码
Apr 17 Javascript
javascript流程控制语句集合
Sep 18 #Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 #Javascript
Angular中的$watch方法详解
Sep 18 #Javascript
jQuery实现的表格前端排序功能示例
Sep 18 #jQuery
node.js中使用Export和Import的方法
Sep 18 #Javascript
inner join 内联与left join 左联的实例代码
Sep 18 #Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
Sep 18 #Javascript
You might like
德生S2000电路分析
2021/03/02 无线电
超级简单的发送邮件程序
2006/10/09 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
js评分组件使用详解
2017/06/06 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
效能监察建议书
2014/05/19 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
债务纠纷代理词
2015/05/25 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP