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 最近浏览过的商品的功能实现代码
May 14 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 Javascript
Jquery ajax基础教程
Nov 20 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
ionic 自定义弹框效果
Jun 27 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 Javascript
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
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中循环语句的用法介绍
2012/01/30 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
2015/07/01 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
对python使用http、https代理的实例讲解
2018/05/07 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
Python语言异常处理测试过程解析
2020/01/08 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
初中物理教学反思
2014/01/14 职场文书
入学申请自荐信范文
2014/02/26 职场文书
运动会加油稿100字
2014/09/19 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
python用字节处理文件实例讲解
2021/04/13 Python
Python如何把不同类型数据的json序列化
2021/04/30 Python
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
Go遍历struct,map,slice的实现
2021/06/13 Golang
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL
MySQL transaction事务安全示例讲解
2022/06/21 MySQL