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 相关文章推荐
超级简单的图片防盗(HTML),好用
Apr 08 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
JavaScript仿flash遮罩动画效果
Jun 15 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
JavaScript实现跟随滚动缓冲运动广告框
Jul 15 Javascript
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
Oct 09 Javascript
详解js根据百度地图提供经纬度计算两点距离
May 13 Javascript
VuePress 中如何增加用户登录功能
Nov 29 Javascript
javascript实现拖拽碰撞检测
Mar 12 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 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
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP实现事件机制的方法
2015/07/10 PHP
php数据访问之查询关键字
2016/05/09 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
node和vue实现商城用户地址模块
2018/12/05 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
python 多进程通信模块的简单实现
2014/02/20 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
python实发邮件实例详解
2019/11/11 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
新教师工作感言
2014/02/16 职场文书
大学生励志演讲稿
2014/04/25 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
爱国主义电影观后感
2015/06/18 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python