js實現(xiàn)可以點擊收縮或張開的懸浮窗
本文實例為大家分享了js實現(xiàn)懸浮窗的具體代碼,供大家參考,具體內(nèi)容如下

說明:點擊”+“按鈕,懸浮窗收縮/展開
思路
1、在html中定義一個div塊,定一個id;一個按鈕,點擊時用。
2、寫一個js,包含收縮以及展開的函數(shù);為按鈕添加點擊事件。
3、想要讓懸浮窗好看點,可設(shè)置對應(yīng)的參數(shù)。
步驟
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);
//根據(jù)狀態(tài)flag執(zhí)開展開收縮
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);
//根據(jù)狀態(tài)flag執(zhí)開展開收縮
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>
小結(jié)到此。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
把多個JavaScript函數(shù)綁定到onload事件處理函數(shù)上的方法
下面小編就為大家?guī)硪黄讯鄠€JavaScript函數(shù)綁定到onload事件處理函數(shù)上的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
js根據(jù)屬性刪除對象數(shù)組里的相應(yīng)對象
這篇文章主要介紹了js根據(jù)屬性刪除對象數(shù)組里的相應(yīng)對象,需要的朋友可以參考下2023-07-07
JavaScript中const、var和let區(qū)別淺析
在JavaScript中有三種聲明變量的方式:var、let、const。但是有朋友不清楚這三種聲明變量的區(qū)別,下面腳本之家小編給大家詳細介紹下js中const、var和let的區(qū)別,感興趣的朋友一起看看吧2016-10-10
bootstrap動態(tài)調(diào)用select下拉框的實例代碼
今天小編就為大家分享一篇bootstrap動態(tài)調(diào)用select下拉框的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法
本篇文章主要介紹了快速理解 JavaScript 中的 LHS 和 RHS 查詢的用法,有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

