JS實(shí)現(xiàn)拖動(dòng)模糊框特效
本文實(shí)例為大家分享了JS實(shí)現(xiàn)拖動(dòng)模糊框特效的具體代碼,供大家參考,具體內(nèi)容如下
需求:
在圖片上拖動(dòng)按鈕,圖片蒙層慢慢覆蓋,當(dāng)蒙層邊緣碰到左右下角文字時(shí),文字隱藏。
技術(shù):
監(jiān)聽(tīng)器,鼠標(biāo)坐標(biāo)獲取
效果圖
源碼分享:
HTML
<h1>Image Comparison Slider</h1> <nav> <!--底層圖--> <img src="img/img-original.jpg" alt=""> <!--蒙版使用背景圖--> <div id="img"> <h3 id="leftBottom">Modified</h3> <!--拖動(dòng)按鈕--> <button id="btn"> <span class="iconfont icon-zuojiantou"></span> <span class="iconfont icon-youjiantou"></span> </button> </div> <h3 id="rightBottom">Original</h3> </nav>
CSS樣式
<style> * { margin: 0; padding: 0; color: #E8F6F5; } body { background-color: #566B89; padding-top: 1px; } nav { width: 1200px; height: 675px; overflow-x: hidden; position: relative; margin: 100px auto 0; } h1 { text-align: center; margin-top: 100px; font-weight: 400; } nav>img { position: absolute; } #img { width: 600px; /*初始狀態(tài)顯示一半蒙層*/ height: 675px; background: url("img/img-modified.jpg"); /*這里容器大小與圖片一致,若想改變大小,設(shè)置背景大小屬性 background-size: 圖片寬 圖片高;*/ position: relative; animation: start 1s ease-in-out; } #img img { width: 100%; height: 100%; } @keyframes start { 0% { width: 0; } 50% { width: 650px; } 100% { width: 600px; } } #btn { position: absolute; right: -25px; top: calc(50% - 25px); width: 56px; height: 56px; line-height: 56px; border: none; outline: none; border-radius: 50%; background-color: pink; font-size: 0; text-align: center; color: white; cursor: pointer; } .iconfont { font-size: 20px; } h3 { font-weight: 400; color: white; } #leftBottom,#rightBottom { position: absolute; width: 100px; bottom: 50px; } #leftBottom { left: 50px; } #rightBottom { right: 50px; } </style>
JS部分
<script> let img = document.querySelector("#img"); let btn = document.querySelector("#btn"); let nav = document.querySelector("nav"); let leftBottom = document.querySelector("#leftBottom"); let rightBottom = document.querySelector("#rightBottom"); btn.onmousedown = function (e) { let clientx = e.clientX; // 點(diǎn)擊獲取鼠標(biāo)初始X坐標(biāo) nav.onmousemove = function () { let e = arguments[0] || window.event; let X = e.clientX; // 移動(dòng)時(shí)獲取鼠標(biāo)移動(dòng)時(shí)的X坐標(biāo) let imgW = parseInt(getComputedStyle(img,null).width); img.style.width = `${ imgW + X - clientx}px`; // 圖片寬度 = 移動(dòng)時(shí)的X坐標(biāo) - 點(diǎn)擊時(shí)的初始坐標(biāo) 也就是 圖片寬度 + 鼠標(biāo)X坐標(biāo)的偏移量 clientx = X ; // 將最新的位置的X坐標(biāo) 賦值給 點(diǎn)擊初始坐標(biāo) 也就是 更新 X坐標(biāo)初始值 if (imgW < 150){ leftBottom.style.display = "none"; }else { leftBottom.style.display = "block"; } if (imgW > 1050){ rightBottom.style.display = "none"; }else { rightBottom.style.display = "block"; } } }; document.onmouseup = function () { nav.onmousemove = null; } </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS拖動(dòng)鼠標(biāo)畫(huà)出方框?qū)崿F(xiàn)鼠標(biāo)選區(qū)的方法
- angularjs創(chuàng)建彈出框?qū)崿F(xiàn)拖動(dòng)效果
- JS+CSS實(shí)現(xiàn)可拖動(dòng)的彈出提示框
- 原生js實(shí)現(xiàn)可拖動(dòng)的登錄框效果
- js實(shí)現(xiàn)簡(jiǎn)單模態(tài)框?qū)嵗?/a>
- AngularJs 彈出模態(tài)框(model)
- JS實(shí)現(xiàn)圖片點(diǎn)擊后出現(xiàn)模態(tài)框效果
- Vue.js彈出模態(tài)框組件開(kāi)發(fā)的示例代碼
- 原生js實(shí)現(xiàn)簡(jiǎn)單的模態(tài)框示例
- js實(shí)現(xiàn)類bootstrap模態(tài)框動(dòng)畫(huà)
- JavaScript實(shí)現(xiàn)可拖動(dòng)模態(tài)框
相關(guān)文章
JavaScript輸入分鐘、秒倒計(jì)時(shí)技巧總結(jié)(附代碼)
這篇文章主要介紹了JavaScript輸入分鐘、秒倒計(jì)時(shí)的代碼實(shí)現(xiàn),通過(guò)css和js代碼展示了邏輯過(guò)程,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08微信小程序onShareTimeline()實(shí)現(xiàn)分享朋友圈
這篇文章主要給大家介紹了關(guān)于微信小程序onShareTimeline()實(shí)現(xiàn)分享朋友圈的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01JS實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)功能,涉及javascript事件響應(yīng)及頁(yè)面元素遍歷、動(dòng)態(tài)構(gòu)造等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08詳談js使用in和hasOwnProperty獲取對(duì)象屬性的區(qū)別
下面小編就為大家?guī)?lái)一篇詳談js使用in和hasOwnProperty獲取對(duì)象屬性的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04微信小程序?qū)崿F(xiàn)天氣預(yù)報(bào)功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)天氣預(yù)報(bào)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07vue渲染大量數(shù)據(jù)時(shí)卡頓卡死解決方法
這篇文章主要介紹了vue渲染大量數(shù)據(jù)時(shí)發(fā)生卡頓卡死問(wèn)題時(shí)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08JS前端認(rèn)證授權(quán)技巧歸納總結(jié)
這篇文章主要為大家介紹了JS前端認(rèn)證授權(quán)技巧歸納總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03詳解JavaScript中Generator函數(shù)的使用
Generator 是 ES6 新增的一種函數(shù)類型,這篇文章主要來(lái)和大家詳細(xì)聊聊Generator函數(shù)的具體用法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-06-06原生JS綁定滑輪滾動(dòng)事件兼容常見(jiàn)瀏覽器
滑輪滾動(dòng)頁(yè)面的事件在網(wǎng)頁(yè)特效中進(jìn)場(chǎng)遇到,下面通過(guò)示例為大家介紹下原生JS綁定滑輪滾動(dòng)事件并兼容瀏覽器2014-06-06微信小程序canvas實(shí)現(xiàn)刮刮樂(lè)效果
這篇文章主要為大家詳細(xì)介紹了微信小程序canvas實(shí)現(xiàn)刮刮樂(lè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07