当前位置: 首页 > wzjs >正文

国内 响应式网站用wordpress建wiki

国内 响应式网站,用wordpress建wiki,淘宝商城的网站建设,前端微信小程序开发教程背景介绍 最近,公司需要开发一款在线图像压缩工具,其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此,我们设计了一个对比组件,它允许用户通过拖动滑块,动态调整两张图像的显示区域,从而清晰…

背景介绍

最近,公司需要开发一款在线图像压缩工具,其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此,我们设计了一个对比组件,它允许用户通过拖动滑块,动态调整两张图像的显示区域,从而清晰地看到压缩前后的差异。

目标效果

  • 两张图片堆叠放置,一张始终可见,另一张可调整可见范围。
  • 通过滑块拖动,控制上层图片的显示区域。
  • 适配 PC 和移动端,提供流畅的交互体验。

效果如图:

开发思路

结构设计

  1. 创建一个外层容器,用于包裹两张图片和滑块。
  2. 底层图片(原始图像)始终可见。
  3. 顶层图片(优化后图像)放置在上方,并使用 clip-path 控制其显示范围。
  4. 滑块(拖动条) 用于调整顶层图片的可见区域。
<div class="image-change-block"><div class="desc-container"><div class="before-desc">BEFORE (827 KB)</div><div class="after-desc">AFTER (94 KB)</div></div><img src="after.jpg" class="new-img" /><div class="clip-container"><img src="before.jpg" class="old-img" /></div><div class="handle-container"><div class="bar-btn" id="barBtn"></div><div class="bar-line" id="barLine"></div></div>
</div>

样式布局

  • 两张图片:底层图片 position: absolute; 覆盖整个容器,顶层图片使用 clip-path 或 width 控制显示区域。
  • 滑块样式:自定义 div + 伪元素 作为滑块,并放在 absolute 位置。
.image-change-block {position: relative;max-width: 44rem;overflow: hidden;border-radius: 1.25rem;
}.desc-container {top: 1.25rem;position: absolute;display: flex;align-items: center;justify-content: space-between;flex-wrap: wrap;width: 100%;padding: 0 1.25rem;gap: 0.3125rem;
}.after-desc,
.before-desc {background-color: #000000;opacity: 0.6;color: #fff;border-radius: 0.25rem;z-index: 10;font-size: var(--global--font-size-sm);padding: 0.3125rem 1.5rem;
}.old-img,
.new-img {width: 100%;height: 100%;object-fit: cover;display: block;
}.clip-container {position: absolute;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;
}.old-img {position: absolute;top: 0;left: 0;width: 100%;height: 100%;clip-path: inset(0 50% 0 0);transition: clip-path 0.01s ease;
}.handle-container {position: absolute;top: 0;left: 0;height: 100%;width: 100%;pointer-events: none;
}.bar-btn {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 2rem;height: 2rem;border-radius: 50%;pointer-events: all;cursor: ew-resize;z-index: 2;
}.bar-line {position: absolute;top: 0;left: 50%;height: 100%;width: 3px;background-color: var(--theme-green-color);z-index: 1;
}.bar-btn::before {width: 28px;height: 28px;content: "";cursor: ew-resize;background: #00d4c9;position: absolute;left: 50%;top: 50%;transform: translate(-45%, -50%);display: block;border-radius: 50%;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);z-index: 1;
}.bar-btn::after {content: "";background: var(--theme-green-color);width: 3px;height: 100%;position: absolute;left: 50%;top: 0;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

交互逻辑

封装一个兼容 PC 和移动端的拖拽对比函数,通过传入对应的 dom 实现鼠标或手指拖动滑块时图像的对比。

initClip({barBtn: document.querySelector(`.bar-btn`),barLine: document.querySelector(`.bar-line`),clipContainer: document.querySelector(`.clip-container`),oldImg: document.querySelector(`.old-img`),
});/*** 初始化通过剪裁实现图像对比的功能* @param {Object} doms - 包含所需DOM元素的对象*  - barBtn: 滑动按钮元素*  - barLine: 滑动线条元素*  - clipContainer: 剪裁容器元素*  - oldImg: 被剪裁的图片元素*/
function initClip(doms) {// 解构赋值获取所需的DOM元素const { barBtn, barLine, clipContainer, oldImg } = doms;// 定义变量以跟踪鼠标或触摸是否在拖动let isDragging = false;let isMDragging = false;/*** 更新图片剪裁位置* @param {number} x - 鼠标或触摸在剪裁容器上的x坐标*/function updateImageClip(x) {// 计算剪裁容器的宽度const containerWidth = clipContainer.offsetWidth;// 计算并限制剪裁的百分比const percent = Math.min(Math.max(x / containerWidth, 0), 1);// 更新图片的剪裁路径oldImg.style.clipPath = `inset(0 ${100 - percent * 100}% 0 0)`;// 更新滑动按钮和线条的位置barBtn.style.left = `${percent * 100}%`;barLine.style.left = `${percent * 100}%`;}// 添加鼠标按下事件监听器到滑动按钮barBtn.addEventListener("mousedown", (e) => {// 开始拖动并阻止默认行为isDragging = true;e.preventDefault();});// 添加鼠标抬起事件监听器到文档document.addEventListener("mouseup", () => {// 结束拖动isDragging = false;});// 添加鼠标移动事件监听器到文档document.addEventListener("mousemove", (e) => {// 如果正在拖动,则更新图片剪裁if (isDragging) {const x = e.clientX - clipContainer.getBoundingClientRect().left;updateImageClip(x);}});// 添加点击事件监听器到剪裁容器clipContainer.addEventListener("click", (e) => {// 点击时更新图片剪裁const x = e.clientX - clipContainer.getBoundingClientRect().left;updateImageClip(x);});// 添加触摸开始事件监听器到滑动按钮barBtn.addEventListener("touchstart", (e) => {// 开始拖动并阻止默认行为isMDragging = true;e.preventDefault();});// 添加触摸结束事件监听器到文档document.addEventListener("touchend", () => {// 结束拖动isMDragging = false;});// 添加触摸移动事件监听器到文档document.addEventListener("touchmove", (e) => {// 如果正在拖动,则更新图片剪裁if (isMDragging) {const touch = e.touches[0];const x = touch.clientX - clipContainer.getBoundingClientRect().left;updateImageClip(x);}});
}

总结

这个滑块对比组件利用 clip-path 来裁剪图像,并结合鼠标和触摸事件监听,实现了流畅的交互体验。它不仅适用于图像压缩前后的对比,还可以扩展到滤镜效果、照片修复等其他图像对比场景。在实际开发中,我们可以根据 UI 需求,进一步优化滑块的样式、动画效果,以及提升移动端的操作体验。

原文链接

图像滑块对比功能的开发记录


文章转载自:

http://tUMYRaiG.wtnyg.cn
http://yPgBChpi.wtnyg.cn
http://m3YFDviH.wtnyg.cn
http://dlTfO51L.wtnyg.cn
http://ECyD9jID.wtnyg.cn
http://yt6i8Aaq.wtnyg.cn
http://1ng3hTW3.wtnyg.cn
http://CwSmMYTE.wtnyg.cn
http://mMW7hsle.wtnyg.cn
http://nzWEIJId.wtnyg.cn
http://ChNLQmCT.wtnyg.cn
http://ylITXJHd.wtnyg.cn
http://SXqoWHIB.wtnyg.cn
http://jPkqcaV2.wtnyg.cn
http://me144Npr.wtnyg.cn
http://r4fMkeT1.wtnyg.cn
http://K5tYHQyV.wtnyg.cn
http://JDrEbqXH.wtnyg.cn
http://ErJUDL6a.wtnyg.cn
http://Kkd5C8Ye.wtnyg.cn
http://LcRL1Sk8.wtnyg.cn
http://B17ZiwrF.wtnyg.cn
http://xEgyqwJ1.wtnyg.cn
http://wBGgt79Y.wtnyg.cn
http://Ohd9JAgO.wtnyg.cn
http://O6o6sfq0.wtnyg.cn
http://eghdoarv.wtnyg.cn
http://Hr8ieEjs.wtnyg.cn
http://siibYkhx.wtnyg.cn
http://qNWM8xVZ.wtnyg.cn
http://www.dtcms.com/wzjs/683742.html

相关文章:

  • 如何规划企业网站盐城网站关键词优化
  • 微信引流推广网站建设春雨直播正版下载
  • 什么是网站主题asp网站木马扫描
  • 网站建设比较牛的企业app开发成本预算表
  • 班级网站 模板青岛网站设计怎么选
  • 知识网站湖南省建设监理协会网站
  • 用什么做网站好可以在自己家做外卖的网站
  • 网站建设佰首选金手指四在国外做电商网站
  • 网站开发者都是英文怎样开发呢wordpress刷关键
  • 全国网站建设公司做网站要学会什么
  • 适合新手做的网站静态网站建设珠海 新盈科技
  • 潍坊网站建设价格公司网站站群是什么
  • 如何建设企业网站安徽建设工程造价信息网
  • 搜狗收录大连网站推广优化
  • 专业外贸网站建设_诚信_青岛无人在线观看高清视频 单曲
  • 小白怎么做网站赚钱个人租车网站源码
  • 用什么网站做微信推送成都专业网站推广公司
  • 做网站的流程天噜啦更换域名解析
  • 怎么上传做 好的网站开发公司员工内部销售激励方案
  • 微信做明天展现网站要多少钱免费企业网站建设哪种
  • 网站建设拿什么框架北京城建集团官网
  • 建网站要花费多少钱网站的技术分析
  • 设计师常用网站杭州搜索引擎推广
  • 全面解析网站建设及报价ghost 博客wordpress
  • 昆明网站建设SEO公司内容展示型网站特点
  • 某些网站字号设置样式个人网站如何做移动端
  • 域名解析后如何建设网站网站导航栏的作用
  • 天津免费做网站网站建设单位有哪些方面
  • 服装鞋帽 网站建设如何搭建免费网站
  • 青州网站建设优化推广wordpress文章静态