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 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
javascript实现3D切换焦点图
Oct 16 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
angular内置provider之$compileProvider详解
Sep 27 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
node.js express框架实现文件上传与下载功能实例详解
Oct 15 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 Javascript
vue3获取当前路由地址
Feb 18 Vue.js
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
php查看session内容的函数
2008/08/27 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
python实现读取命令行参数的方法
2015/05/22 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
三字经教学反思
2014/04/26 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
交通安全主题班会
2015/08/12 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL