JS实现拖动模糊框特效


Posted in Javascript onAugust 25, 2020

本文实例为大家分享了JS实现拖动模糊框特效的具体代码,供大家参考,具体内容如下

需求:

在图片上拖动按钮,图片蒙层慢慢覆盖,当蒙层边缘碰到左右下角文字时,文字隐藏。

技术:

监听器,鼠标坐标获取

效果图

JS实现拖动模糊框特效

源码分享:

HTML

<h1>Image Comparison Slider</h1>
 <nav>
<!--底层图--> <img src="img/img-original.jpg" alt=""> 
<!--蒙版使用背景图--> <div id="img">
   <h3 id="leftBottom">Modified</h3>
<!--拖动按钮--> <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; /*初始状态显示一半蒙层*/
   height: 675px;
   background: url("img/img-modified.jpg"); /*这里容器大小与图片一致,若想改变大小,设置背景大小属性 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; // 点击获取鼠标初始X坐标
   nav.onmousemove = function () {
    let e = arguments[0] || window.event;
    let X = e.clientX; // 移动时获取鼠标移动时的X坐标
    let imgW = parseInt(getComputedStyle(img,null).width);
    img.style.width = `${ imgW + X - clientx}px`; // 图片宽度 = 移动时的X坐标 - 点击时的初始坐标 也就是 图片宽度 + 鼠标X坐标的偏移量
    clientx = X ; // 将最新的位置的X坐标 赋值给 点击初始坐标 也就是 更新 X坐标初始值
    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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用jquery实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
javascript获取url上某个参数的方法
Nov 08 Javascript
jquery easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
面向切面编程(AOP)的理解
May 01 Javascript
jQuery替换textarea中换行的方法
Jun 10 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 Javascript
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
PHP读取远程txt文档到数组并实现遍历
Aug 25 #Javascript
JS轮播图的实现方法2
Aug 25 #Javascript
JS轮播图的实现方法
Aug 24 #Javascript
js 函数性能比较方法
Aug 24 #Javascript
JavaScript实现简单验证码
Aug 24 #Javascript
JavaScript经典案例之简易计算器
Aug 24 #Javascript
原生js实现拖拽移动与缩放效果
Aug 24 #Javascript
You might like
第三节 定义一个类 [3]
2006/10/09 PHP
php GeoIP的使用教程
2011/03/09 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
Python制作爬虫抓取美女图
2016/01/20 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python----数据预处理代码实例
2019/03/20 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
python如何写个俄罗斯方块
2020/11/06 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
初中军训感想300字
2014/03/05 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
go开发alertmanger实现钉钉报警
2021/07/16 Golang
python识别围棋定位棋盘位置
2021/07/26 Python
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js