懸浮窗,點選收縮/展開
阿新 • • 發佈:2018-11-29
懸浮窗,點選收縮/張開
效果圖
說明:點選”+“按鈕,懸浮窗收縮/展開
思路
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>