js 面向對象 飄窗


<div id="roll">
<div id="rollClose">X</div>
<div class="roll-content">
<p>xxxxxxxxxxxx</p>
<p>舉報電話:xxxxxxxxxxxx</p>
<p>舉報郵箱:xxxxxxxxxxxx</p>
<p>舉報信箱:xxxxxxxxxxxx</p>
<p>舉報地址:xxxxxxxxxxxx</p>
</div>
</div>
<style>

roll {

width: 400px;
padding: 20px;
position: fixed;
background: rgba(22, 124, 118, 1);
color: #FFFFFF;
border-radius: 6px;
z-index: 99999999;

}

.roll-content p {
margin: 0;
padding: 0;
font-size: 16px;
line-height: 30px;
}

.roll-content p:first-child {
/* margin-left: -12px; */
}

rollClose {

position: absolute;
cursor: pointer;
top: 6px;
right: 12px;

}
</style>
<script>

class floatingW{
constructor(roll, rollClose, speed = 20, x=0, y=0){
this.interval = null; // 定義保存setInterval的變量
this.roll = roll; // 定義保存飄窗對象
this.rollClose = rollClose; // 定義保存關閉按鈕的對象
this.isClose = false; // 定義是否關閉的變量
this.speed = speed; // 定義飄窗的速度
this.statusX = 1; // 定義,left屬性值變化的幅度
this.statusY = 1; // 定義寒屯,top屬性值變化的幅度
this.x = x; // 定義初始狀態(tài)下left屬性的值
this.y = y; // 定義初始狀態(tài)下top屬性的值
// 定義飄窗可以移動的寬度
this.winW = document.documentElement.clientWidth - this.roll.offsetWidth;
// 定義飄窗可以移動的高度
this.winH = document.documentElement.clientHeight - this.roll.offsetHeight;
}
// 飄動
Move(){
this.interval = setInterval(this.__Go.bind(this), this.speed)
}
// 停止
stop(){
clearInterval(this.interval);
}
__Go(){
// 設置div的left屬性值
this.roll.style.left = this.x + 'px';
// 設置div的top屬性值
this.roll.style.top = this.y + 'px';
// 如果statusX=1則每次減少1px,否則加1px
this.x = this.x + (this.statusX ? -1 : 1)
//如果left屬性值小于0身冬,也就是div要超出左邊界了饱普,就將statusX設置為0
if (this.x < 0) { this.statusX = 0 }
//如果top屬性值大于winW医吊,也就是div要超出右邊界了踩麦,就將statusX設置為1
if (this.x > this.winW) { this.statusX = 1 }

  this.y = this.y + (this.statusY ? -1 : 1)
  if (this.y < 0) { this.statusY = 0 }
  if (this.y > this.winH) { this.statusY = 1 }
}
// 關閉
Close(){
  this.isClose = true
  this.roll.style.display = 'none'
  this.stop()
}

}
let roll = document.getElementById("roll");
let rollClose = document.getElementById("rollClose");

let floatingWindow = new floatingW(roll, rollClose);
floatingWindow.Move();
roll.onmouseover = function(){floatingWindow.stop();}
roll.onmouseout = function(){
if(!floatingWindow.isClose)
floatingWindow.Move();
}
rollClose.onclick = function () { floatingWindow.Close() };
</script>

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末佛猛,一起剝皮案震驚了整個濱河市制妄,隨后出現(xiàn)的幾起案子祠锣,更是在濱河造成了極大的恐慌酷窥,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伴网,死亡現(xiàn)場離奇詭異蓬推,居然都是意外死亡,警方通過查閱死者的電腦和手機澡腾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門沸伏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人动分,你說我怎么就攤上這事毅糟。” “怎么了澜公?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵姆另,是天一觀的道長。 經(jīng)常有香客問我坟乾,道長迹辐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任甚侣,我火速辦了婚禮明吩,結果婚禮上,老公的妹妹穿的比我還像新娘殷费。我一直安慰自己印荔,他們只是感情好低葫,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躏鱼,像睡著了一般氮采。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上染苛,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天鹊漠,我揣著相機與錄音,去河邊找鬼茶行。 笑死躯概,一個胖子當著我的面吹牛,可吹牛的內容都是我干的畔师。 我是一名探鬼主播娶靡,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼看锉!你這毒婦竟也來了姿锭?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤伯铣,失蹤者是張志新(化名)和其女友劉穎呻此,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腔寡,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡焚鲜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了放前。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忿磅。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凭语,靈堂內的尸體忽然破棺而出葱她,到底是詐尸還是另有隱情,我是刑警寧澤似扔,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布吨些,位于F島的核電站,受9級特大地震影響虫几,放射性物質發(fā)生泄漏锤灿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一辆脸、第九天 我趴在偏房一處隱蔽的房頂上張望但校。 院中可真熱鬧,春花似錦啡氢、人聲如沸状囱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亭枷。三九已至袭艺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叨粘,已是汗流浹背猾编。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留升敲,地道東北人答倡。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像驴党,于是被迫代替她去往敵國和親瘪撇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容