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 相关文章推荐
JavaScript获得选中文本内容的方法
Dec 02 Javascript
JS中==与===操作符的比较
Mar 21 Javascript
Array.prototype.slice.apply的使用方法
Mar 17 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
浅析jQuery 3.0中的Data
Jun 14 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
微信小程序 location API实例详解
Oct 02 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
Mar 04 Javascript
学习node.js 断言的使用详解
Mar 18 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 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分页代码学习示例分享
2014/02/20 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
php文件包含的几种方式总结
2019/09/19 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
Python函数返回值实例分析
2015/06/08 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
西式婚礼主持词
2014/03/13 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
银行内勤岗位职责
2014/04/09 职场文书
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA