最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實(shí)現(xiàn)可移動(dòng)模態(tài)框

 更新時(shí)間:2022年07月05日 17:30:23   作者:yanbabyo  
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)可移動(dòng)模態(tài)框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS實(shí)現(xiàn)可移動(dòng)模態(tài)框的具體代碼,供大家參考,具體內(nèi)容如下

點(diǎn)擊增加彈出模態(tài)框。

這個(gè)模態(tài)框可以移動(dòng)的。

由于我寫(xiě)的項(xiàng)目是egg.js前后端分離,需要獲取數(shù)據(jù)庫(kù)內(nèi)容,所以以下代碼中的{{uh.username}}自己根據(jù)實(shí)際情況進(jìn)行修改。

1.首先在前端頁(yè)面中添加以下代碼:

<div class="content-top">
? ? ? ? <button type="submit" class="open">增加</button>
? ? </div>
? ? <div class="model-box">
? ? ? ? <div class="content">
? ? ? ? ? ? <div class="title">
? ? ? ? ? ? ? ? <span>增加</span>
? ? ? ? ? ? ? ? <i class="close">×</i>
? ? ? ? ? ? </div>
? ? ? ? ? ? <form method="POST" action="/add" style="height: 250px;">
? ? ? ? ? ? ? ? <div class="form-input">
? ? ? ? ? ? ? ? ? ? <label for="username" >用戶(hù)名</label>
? ? ? ? ? ? ? ? ? ? <input type="text" name="username" value={{uh.username}}>{{ uh.username }}
? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? <div class="form-input">
? ? ? ? ? ? ? ? ? ? <label for="username">密碼</label>
? ? ? ? ? ? ? ? ? ? <input type="password" name="password" value={{uh.password}}>{{ uh.password }}
? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? <div class="form-input">
? ? ? ? ? ? ? ? ? ? <button type="submit">提交</button>
? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? </form>
? ? ? ? </div>
</div>

2.css樣式

* {
? ?padding: 0;
? ?margin: 0;
}
.content-top button {
? ?/* 取消按鈕自帶的輪廓 */
? ?outline: 0;
? ?width: 100px;
? ?height: 40px;
? ?color: #409eff;
? ?/* 圓角屬性 */
? ?border-radius: 4px;
? ?border: 1px solid #b3d8ff;
? ?background-color: #ecf5ff;
? ?/* 過(guò)渡 */
? ?transition: all 0.3s;
? ?cursor: pointer;
}
.content-top button:hover {
? ?color: #fff;
? ?border-color: #409eff;
? ?background-color: #409eff;
}
.model-box button {
? ?/* 取消按鈕自帶的輪廓 */
? ?outline: 0;
? ?width: 100px;
? ?height: 40px;
? ?color: #409eff;
? ?/* 圓角屬性 */
? ?border-radius: 4px;
? ?border: 1px solid #b3d8ff;
? ?background-color: #ecf5ff;
? ?/* 過(guò)渡 */
? ?transition: all 0.3s;
? ?/* 鼠標(biāo)變小手 */
? ?cursor: pointer;
}
.model-box button:hover {
? ?color: #fff;
? ?border-color: #409eff;
? ?background-color: #409eff;
}
/* 模態(tài)框 start */
.model-box {
? ?/* 隱藏模態(tài)框 */
? ?display: none;
? ?position: fixed;
? ?top: 50px;
? ?left: 80px;
? ?width: 100%;
}
.model-box .content {
? ?position: absolute;
? ?top: 5px;
? ?/* calc方法可以自動(dòng)計(jì)算數(shù)值 */
? ?left: calc(50% - 210px);
? ?width: 420px;
? ?border-radius: 5px;
? ?padding: 0 20px;
? ?/* 盒子陰影 */
? ?box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
? ?background-color: #fff;
}
.model-box .content .title {
? ?/* 彈性布局 */
? ?display: flex;
? ?/* 讓子元素水平與兩端對(duì)齊 */
? ?justify-content: space-between;
? ?height: 60px;
? ?line-height: 60px;
? ?/* 鼠標(biāo)移入呈現(xiàn)移動(dòng)光標(biāo) */
? ?cursor: move;
}
.model-box .content .title span {
? ?font-size: 18px;
? ?color: #333;
}
.model-box .content .title i {
? ?/* i標(biāo)簽?zāi)J(rèn)是斜體 這個(gè)屬性可以變正 */
? ?font-style: normal;
? ?font-size: 24px;
? ?color: #909399;
? ?cursor: pointer;
}
/* 鼠標(biāo)移入變色 */
.model-box .content .title i:hover {
? ?color: #409eff;
}
.model-box .content form .form-input {
? ?margin: 5px 0;
}
/* 因?yàn)閘abel元素的for屬性和input元素id屬性設(shè)置了相同的屬性值 所以就可以通過(guò)label元素選中 輸入框 布局已完成 ?*/
.model-box .content form .form-input label {
? ?font-size: 14px;
? ?color: #606266;
? ?cursor: pointer;
}
.model-box .content form .form-input input {
? ?/* 取消輸入框默認(rèn)的輪廓 */
? ?outline: 0;
? ?width: 100%;
? ?height: 30px;
? ?padding: 0 8px;
? ?margin-top: 12px;
? ?border: 1px solid #dcdfe6;
? ?border-radius: 4px;
}
.model-box .content form .form-input input:hover {
? ?border-color: #c0c4cc;
}
/* 輸入框獲取焦點(diǎn)變色 */
.model-box .content form .form-input input:focus {
? ?border-color: #409eff;
}
.model-box .content form .form-input button {
? ?/* 讓按鈕浮動(dòng)到右側(cè) */
? ?float: right;
? ?margin-top: 10px;
}

3.js部分

// 添加頁(yè)面加載事件
window.addEventListener("load", () => {
?? ?// 獲取打開(kāi)按鈕
?? ?const open = document.querySelector(".open");
?? ?// 獲取關(guān)閉按鈕
?? ?const close = document.querySelector(".close");
?? ?// 獲取整個(gè)大的模態(tài)框
?? ?const fillScreen = document.querySelector(".model-box");

?? ?// 獲取模態(tài)框可移動(dòng)的頭部區(qū)域
?? ?const header = document.querySelector(".title");

?? ?// 獲取模態(tài)框珠主區(qū)域
?? ?const modelBox = document.querySelector(".content");

?? ?//element.addEventListener() 方法為指定元素添加事件句柄
?? ?// 打開(kāi)功能
?? ?if(open){
?? ?open.addEventListener("click", () => {
?? ??? ?// 點(diǎn)擊打開(kāi)按鈕 改變display屬性值
?? ??? ?fillScreen.style.display = "block";
?? ?});
? ?}

?? ?// 關(guān)閉功能
?? ?if(close){
?? ?close.addEventListener("click", () => {
?? ??? ?fillScreen.style.display = "none";
?? ?});
? ? }
?? ?// 移動(dòng)功能 為header添加鼠標(biāo)按下事件
?? ?if(header){
?? ?header.addEventListener("mousedown", (event) => {
?? ??? ?// 讓模態(tài)框移動(dòng) 需要知道鼠標(biāo)在header區(qū)域的光標(biāo)位置 計(jì)算方式 是先算出鼠標(biāo)光標(biāo)在整個(gè)瀏覽器區(qū)域的位置 再算出模態(tài)框距離瀏覽器邊緣位置的大小 相減
?? ??? ?// event.pageX可以獲取鼠標(biāo)光標(biāo)距離瀏覽器邊緣位置的大小
?? ??? ?// modelBox.offsetLeft 可以獲取到模態(tài)框區(qū)里瀏覽器左邊框的距離
?? ??? ?const x = event.pageX - modelBox.offsetLeft;
?? ??? ?const y = event.pageY - modelBox.offsetTop;
?? ??? ?console.log(x, y);
?? ??? ?// 在按下事件內(nèi)添加移動(dòng)事件
?? ??? ?document.addEventListener("mousemove", move);
?? ??? ?// 做鼠標(biāo)彈起事件?
?? ??? ?function move(event) {
?? ??? ??? ?// 算出移動(dòng)時(shí)的模態(tài)框的位置距離 并賦值 原理和上面求x,y一樣
?? ??? ??? ?// css屬性值需要單位?
?? ??? ??? ?modelBox.style.left = event.pageX - x + "px";
?? ??? ??? ?modelBox.style.top = event.pageY - y + "px";
?? ??? ?}
?? ??? ?//onmouseup 當(dāng)松開(kāi)鼠標(biāo)按鈕時(shí)運(yùn)行腳本 ? ?removeEventListener移除由 addEventListener() 方法添加的 "mousemove" 事件
?? ??? ?document.addEventListener("mouseup", () => {
?? ??? ??? ?document.removeEventListener("mousemove", move);
?? ??? ?});
?? ?});
}
});

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

通州市| 临海市| 尚志市| 襄汾县| 辽宁省| 蓝田县| 海丰县| 建水县| 连云港市| 东乌珠穆沁旗| 沧源| 东至县| 达州市| 宜兰县| 湖口县| 北流市| 蒙山县| 太康县| 卢氏县| 金山区| 怀仁县| 丰台区| 堆龙德庆县| 依兰县| 拜城县| 钟山县| 巩义市| 彰化市| 正阳县| 玛纳斯县| 双流县| 蛟河市| 曲水县| 淅川县| 家居| 武平县| 区。| 平阳县| 凤山县| 揭东县| 汉中市|