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 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
Oct 11 Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 Javascript
JS动态修改iframe高度和宽度的方法
Apr 01 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
封装微信小程序http拦截器过程解析
Aug 13 Javascript
javascript/jquery实现点击触发事件的方法分析
Nov 11 jQuery
JS实现随机点名器
Apr 12 Javascript
jquery更改元素属性attr()方法操作示例
May 22 jQuery
vue+element实现图片上传及裁剪功能
Jun 29 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python程序变成软件的实操方法
2019/06/24 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
Pytorch之finetune使用详解
2020/01/18 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
应届生自荐信
2014/06/30 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
爱晚亭导游词
2015/02/09 职场文书
基层党支部承诺书
2015/04/30 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技