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实现图片广告轮换效果代码
Jul 07 Javascript
使用javascript过滤html的字符串(注释标记法)
Jul 08 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
javascript中style.left和offsetLeft的用法说明
Mar 07 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
javascript匀速动画和缓冲动画详解
Oct 20 Javascript
简述JS浏览器的三种弹窗
Jul 15 Javascript
js实现3D照片墙效果
Oct 28 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 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
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
javascrpt密码强度校验函数详解
2020/03/18 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
python下10个简单实例代码
2017/11/15 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
自定义django admin model表单提交的例子
2019/08/23 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
Keras搭建自编码器操作
2020/07/03 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
《火烧云》教学反思
2014/04/12 职场文书