JS实现拖动模糊框特效

作者:hthththtt 时间:2023-08-06 05:18:51 

本文实例为大家分享了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>

来源:https://blog.csdn.net/hthththtt/article/details/108181361

标签:js,拖动,模糊
0
投稿

猜你喜欢

  • Python的matplotlib绘图如何修改背景颜色的实现

    2023-10-05 08:12:43
  • Vue watch原理源码层深入讲解

    2024-04-30 10:40:58
  • Python简单生成随机姓名的方法示例

    2023-04-26 19:35:58
  • MySQL优化之使用连接(join)代替子查询

    2024-01-25 18:26:33
  • Git如何修改已提交的commit注释

    2023-10-04 02:17:54
  • python如何调用现有的matlab函数

    2023-04-28 22:07:09
  • python中单例常用的几种实现方法总结

    2022-02-28 19:37:55
  • 设计可以量化吗?

    2009-06-12 12:12:00
  • 解决linux下使用python打开terminal时报错的问题

    2022-10-06 10:46:25
  • python中WSGI是什么,Python应用WSGI详解

    2021-04-08 06:07:45
  • Mysql查看版本号的几种方式

    2024-01-15 17:14:21
  • TypeScript与JavaScript项目里引入MD5校验和

    2024-05-28 15:40:03
  • HTML5中 b 和 i 标签将语义化

    2008-03-16 13:43:00
  • IDEA导入Git项目的方法

    2023-01-25 23:09:09
  • 在PHP程序中运行Python脚本(接收数据及传参)的方法详解

    2023-11-24 10:14:48
  • python网络编程学习笔记(五):socket的一些补充

    2022-02-03 23:22:48
  • Python argparse库的基本使用步骤

    2023-12-14 08:02:29
  • vue打包之后生成一个配置文件修改接口的方法

    2024-05-29 22:45:27
  • 详解MySQL的用户密码过期功能

    2024-01-21 01:29:40
  • 怎样用cmd命令行运行Python文件

    2023-07-15 00:25:11
  • asp之家 网络编程 m.aspxhome.com