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 相关文章推荐
JavaScript 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
javascript 动态设置已知select的option的value值的代码
Dec 16 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
原生js和css实现图片轮播效果
Feb 07 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
js 毫秒转天时分秒的实例
Nov 17 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
Sep 13 Javascript
css配合JavaScript实现tab标签切换效果
Oct 11 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
微信小程序时间戳转日期的详解
Apr 30 Javascript
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
第1次亲密接触PHP5(2)
2006/10/09 PHP
用PHP 4.2书写安全的脚本
2006/10/09 PHP
获取远程文件大小的php函数
2010/01/11 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
python实现批量监控网站
2016/09/09 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
教师党员公开承诺书
2014/03/25 职场文书
材料物理专业求职信
2014/09/01 职场文书
单位工资证明范本
2015/06/12 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python