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 相关文章推荐
超级兔子让浮动层消失的前因后果
Mar 09 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
Oct 21 Javascript
Angular2之二级路由详解
Aug 31 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 similar_text 字符串的相似性比较函数
2010/05/26 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
PHP基本语法总结
2014/09/06 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
python判断完全平方数的方法
2018/11/13 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
在python shell中运行python文件的实现
2019/12/21 Python
Django跨域请求原理及实现代码
2020/11/14 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
领班岗位职责范文
2014/02/06 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
检讨书范文
2015/01/27 职场文书
债务纠纷代理词
2015/05/25 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
Python保存并浏览用户的历史记录
2022/04/29 Python