JS实现拖动模糊框特效
作者:hthththtt 时间:2023-08-06 05:18:51
本文实例为大家分享了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