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 iframe内的函数调用实现方法
Jul 19 Javascript
jquery 学习之二 属性(类)
Nov 25 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
使用JSLint提高JS代码质量方法分享
Dec 16 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
jquery操作select常见方法大全【7种情况】
May 28 jQuery
新手快速入门JavaScript装饰者模式与AOP
Jun 24 Javascript
js实现随机点名器精简版
Jun 29 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
表单复选框向PHP传输数据的代码
2007/11/13 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
python操作列表的函数使用代码详解
2017/12/28 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
浅析python标准库中的glob
2020/03/13 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
python 调用Google翻译接口的方法
2020/12/09 Python
Python jieba库分词模式实例用法
2021/01/13 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
清明节网上祭英烈活动总结
2014/04/30 职场文书
团日活动总结报告
2014/06/25 职场文书
个人授权委托书
2014/09/15 职场文书
信息简报范文
2015/07/21 职场文书
《司马光》教学反思
2016/02/22 职场文书
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python