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


猜你喜欢
- 对于python,一切事物都是对象,程序中存储的所有数据都是对象,对象基于类创建计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、
- 一、值的类型 早在介绍JS的数据类型的时候就提到过基本类型和引用类型
- 1.触发器概述触发器是SQL Server数据库应用中一个重要工具,是一种特殊类型的存储过程,应用非常广泛。一般存储过程主要通过存储过程名而
- 掩码数组数据很大形况下是凌乱的,并且含有空白的或者无法处理的字符,掩码式数组可以很好的忽略残缺的或者是无效的数据点。掩码式数组由一个正常数组
- 想做个和IBM公司一样的网站LOGO,试了半天也没有做出来,郁闷之下,只好求高手帮助!先在这里谢谢了!方法一1、写上IBM,调节字号颜色2、
- 有。试试下面这个程序:saveip.asp<%Server.Scripttimeout = 1000On 
- 如何用WSH获取机器的IP配置信息?我们用VBSCRIPT转换了: Option Explicit Dim&n
- 一、增强的可扩展性 Oracle9i Real Application Clusters是Oracle的下一代并行服务器系列产品。Oracl
- JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。当然解决方案也有很多: 1.document.domain+iframe的
- 最近项目遇到一个坑爹的事情,一个源码必须使用PHP5.3,但是现在Ubuntu上自带的版本是5.4,降级之后会出各种奇怪的问题,最后没办法,
- Ubuntu16.04自带python2.7与python3.5,某个项目编译却要求python版本大于等于3.7,遂考虑在原系统基础上再安
- 本文实例讲述了Python学习笔记之迭代器和生成器用法。分享给大家供大家参考,具体如下:迭代器和生成器迭代器每次可以返回一个对象元素的对象,
- 摘要在机器视觉中,对于图像的处理有时候因为放置的原因导致ROI区域倾斜,这个时候我们会想办法把它纠正为正确的角度视角来,方便下一步的布局分析
- 绘制双变量联合分布图有时我们不仅需要查看单个变量的分 布,同时也需要查看变量之间的联系, 往往还需要进行预测等。这时就需要用到双变量联合分布
- 由于个人能力有限,文章中难免会出现错误或遗漏的地方,敬请谅解!同时欢迎你指出,以便我能及时修改,以免误导下一个看官。最后希望本文能给你带来一
- ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数
- 效果图:二维码用了 qrcode.vuenpm install qrcode.vue --save复制内容用了 vue-clipboard2
- 执行文件和目标导入模块在同一目录直接import比如我要在ma_main.py中导入env包中的make_env.py文件, 从而读取其中的
- 方法说明:同步版的 fs.realpath() 。语法:fs.realpathSync(path, [cache])由于该方法属于fs模块,
- 如何在Mac中配置Python虚拟环境1.安装virtualenvpip3 install virtualenv2.安装virtualenv