零基础用HTML编辑网页制作一个可以左右拖动的图片对比区

酷伟小哥_3144

酷伟小哥_3144

2026-08-25

293人浏览

原创

核心是用原生的oninput事件实时控制clip-path: inset(0 calc(100% - x%) 0 0)裁剪图片,兼容ie10+,需处理safari触摸、图片加载占位及宽高比适配。

零基础用html编辑网页制作一个可以左右拖动的图片对比区

用 input[type="range"] 控制图片对比滑块位置

左右拖动的核心不是靠 JS 手动监听鼠标,而是用原生 <input type="range"> 绑定宽度变化。它天然支持拖拽、键盘方向键、触摸滑动,兼容性好(IE10+),且无需额外事件防抖或边界判断。

关键点:滑块的 value 值映射为对比分界线的 left 百分比(0–100),同时控制左侧图片的 clip-path 或容器宽度。

  • <input type="range" min="0" max="100" value="50"> 是基础控件,value 初始设为 50 表示居中
  • 不要用 onchange——它只在松手后触发;改用 oninput 实现实时响应
  • 把 input 放在图片容器外层,避免遮挡或干扰点击区域

用 clip-path 实现左侧图片裁剪(现代方案)

比起用两个重叠 <img> + 绝对定位 + 宽度缩放,clip-path 更简洁、无重绘抖动、不破坏语义结构。只需一个 <img>,用 inset(0 calc(100% - X%) 0 0) 动态裁剪右侧部分。

Wechat HTML Publisher
Wechat HTML Publisher

直接上传HTML富文本到微信公众号草稿箱。支持完整的HTML格式,无需Markdown转换。

下载

注意:Chrome/Firefox/Edge 支持良好,Safari 15.4+ 才完全支持 inset() 的百分比参数;若需兼容旧 Safari,得 fallback 到 width 控制。

  • HTML 中只放一张完整图片:<img src="before-after.jpg" alt="对比图">
  • CSS 设置:clip-path: inset(0 calc(100% - 50%) 0 0); —— 这里 50% 对应初始滑块位置
  • JS 更新时,直接拼接字符串:img.style.clipPath = `inset(0 calc(100% - ${value}%) 0 0)`;

处理移动端触摸拖拽失效问题

默认情况下,<input type="range"> 在 iOS Safari 上可能响应迟钝或无法拖动,尤其嵌套在 <div> 里时。根本原因是 Safari 对 touch-action 的默认限制。<ul> <li>给 <code>input 加 CSS:touch-action: auto;(不是 pan-x,后者会禁用垂直滚动)

  • 确保父容器没有 overflow: hidden 或 pointer-events: none 意外拦截事件
  • 如果仍卡顿,加一行 hack:input { -webkit-appearance: none; },再自定义滑块样式(否则 Safari 会降级为不可拖动的按钮)
  • 图片加载完成前避免布局跳变和裁剪错位

    图片未加载完时,<img> 高度为 0,clip-path 计算会出错,导致拖动后分界线偏移或消失。

    • 给 <img> 设固定宽高或 aspect-ratio:aspect-ratio: 16/9;(推荐)
    • 监听 img.onload 后再启用滑块:input.disabled = false;,初始设 disabled
    • 或者用 img { display: block; min-height: 200px; background: #eee; } 占位,避免闪动

    真正麻烦的是图片宽高比不一致时的适配——要么统一裁剪(用 object-fit: cover),要么让容器按图片原始比例撑开(需要 JS 读取 naturalWidth/naturalHeight)。这点容易被忽略,但一上线就暴露。

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    html网页 html入门 html

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    5775

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    3272

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    2950

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    2959

    5

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2023.08.11

    4779

    6

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    2023.08.11

    2921

    3

    html转txt
    html转txt

    html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.31

    2709

    3

    html文本框代码怎么写
    html文本框代码怎么写

    html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

    2023.09.01

    2408

    6

    HTML嵌入CSS样式的方法
    HTML嵌入CSS样式的方法

    HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.20

    2448

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    JavaScript基础精讲视频教程
    JavaScript基础精讲视频教程

    共36课时 | 9.5万人学习

    JS抽象类和事件设计模式视频教程
    JS抽象类和事件设计模式视频教程

    共25课时 | 5.9万人学习