首页
学习
活动
专区
圈层
工具
发布

js实现图片左右滑动并点击时候放大

基础概念

图片左右滑动并点击放大是一种常见的网页交互效果,通常用于展示图片库或轮播图。这种效果可以通过JavaScript结合CSS来实现。

相关优势

  1. 用户体验:用户可以通过简单的滑动操作浏览多张图片,点击放大则提供了更详细的查看体验。
  2. 节省空间:在有限的页面空间内展示更多内容。
  3. 动态交互:增强了网页的动态感和互动性,吸引用户注意力。

类型与应用场景

  • 轮播图:适用于首页展示、产品介绍等。
  • 图片库:适用于摄影作品集、新闻图片等。
  • 移动端应用:在移动设备上尤其受欢迎,因为触摸滑动操作非常自然。

实现方法

HTML结构

代码语言:txt
复制
<div class="slider">
  <img src="image1.jpg" alt="Image 1">
  <img src="image2.jpg" alt="Image 2">
  <img src="image3.jpg" alt="Image 3">
</div>

CSS样式

代码语言:txt
复制
.slider {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
}

.slider img {
  width: 100%;
  scroll-snap-align: start;
}

JavaScript代码

代码语言:txt
复制
document.querySelectorAll('.slider img').forEach(img => {
  img.addEventListener('click', function() {
    // 创建一个全屏的图片查看器
    const viewer = document.createElement('div');
    viewer.style.position = 'fixed';
    viewer.style.top = '0';
    viewer.style.left = '0';
    viewer.style.width = '100%';
    viewer.style.height = '100%';
    viewer.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
    viewer.style.display = 'flex';
    viewer.style.justifyContent = 'center';
    viewer.style.alignItems = 'center';
    viewer.style.zIndex = '1000';

    const fullImg = document.createElement('img');
    fullImg.src = this.src;
    fullImg.style.maxWidth = '90%';
    fullImg.style.maxHeight = '90%';

    viewer.appendChild(fullImg);
    document.body.appendChild(viewer);

    // 关闭查看器
    viewer.addEventListener('click', function() {
      document.body.removeChild(viewer);
    });
  });
});

可能遇到的问题及解决方法

1. 图片滑动不流畅

原因:可能是由于图片过大或者浏览器性能问题。

解决方法

  • 压缩图片大小。
  • 使用懒加载技术,只在图片进入视口时加载。

2. 点击放大后图片显示不全

原因:可能是CSS样式设置不当。

解决方法

  • 确保.slider img的宽度设置为100%,并且使用了max-widthmax-height来防止图片过大。

3. 在移动设备上触摸滑动无效

原因:可能是缺少对触摸事件的支持。

解决方法

  • 添加对touchstart, touchmove, touchend事件的处理,确保滑动效果在移动设备上也能正常工作。

通过以上方法,可以实现一个基本的图片左右滑动并点击放大的功能,并解决一些常见问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS实现点击图片放大&长按保存图片

在实际操作中呢,会涉及到上传图片,在页面布局时,可能图片不是一张,考虑到布局的美观等因素,显示图片的位置变得很小,如果想查看上传的图片是否清晰,内容是否完整,可能就需要放大才能实现,下面就和大家分享一下我封装的一类...,完美的实现了图片的缩放功能。...中 添加放大后背景视图的颜色和透明度 使用动画放大展示ImageView 添加恢复ImageView原始尺寸的tap点击事件 完成之后将背景视图删掉 三:实现源码分析 根据实现思路分析,一步步进行编码实现...添加恢复ImageView原始尺寸的tap点击事件 //添加点击事件同样是类方法 -> 作用是再次点击回到初始大小UITapGestureRecognizer *tapGestureRecognizer...调用封装类函数 //浏览大图点击事件-(void)scanBigImageClick:(UITapGestureRecognizer *)tap{ NSLog(@"点击图片"); UIImageView

8.3K20
  • Android 使用ViewPager实现左右循环滑动图片

    ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1....private ImageView[] tips; /** * 装ImageView数组 */ private ImageView[] mImageViews; /** * 图片资源...设置监听,主要是设置点点的背景 viewPager.setOnPageChangeListener(this); //设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动...(ViewPager)container).removeView(mImageViews[position % mImageViews.length]); } /** * 载入图片进去...2张图片的时候,滑动存在BUG问题的修改如下 destroyItem(View container, int position, Object object)方法中不removeView @Override

    4.3K30

    css+js实现左右滑动卡片组件

    最近的一个活动页面需要做一个可以左右滑动的抽签效果,故通过用css的transform属性和js结合来模拟可以无限滚动的效果。...而对于用户这一操作是无感知的,认为已经滑动到了新的位置。 3.滑动过程实现 a....目标位移与帧位移 为了做出滑动后到停留位置的缓动效果,所以当用户左右滑动屏幕时,会记录滑动距离,计算出卡片该到的目标位移位置,目标位移位置是有规则的,因为这里有10张卡片均分宽度,位置必须是(100%/...目标位移代码片段 onDocumentMouseUp : function(e){ //如果是点击事件 不设置移动 if (!...下图是chrome cpu6倍减速调试效果,没有触发layout,FPS基本维持在60左右。

    34.4K102

    Android实现轮播图点击图片放大效果

    最近项目中需要实现轮播图显示商品图片,当用户点击商品图片的时候,需要图片放大显示,当然用户还能进行多张图片的滑动切换,放大,缩小图片等操作,实现起来相对还是比较简单的,话不多说,咱们是用代码说话的,直接上代码...实现步骤: 1.效果图的展示 2.项目中添加相关的依赖 3.主界面实现轮播图的效果 4.点击轮播图进入图片放大展示页面 5.图片放大展示页面所需的适配器 6.获取fragment需要展示图片的...imageView) { Glide.with(context).load((String) path).into(imageView); } } } 4.点击轮播图进入图片放大展示页面...Bug解决 在测试的过程中,对放大的图片进行缩放的时候,遇到下面的Bug: java.lang.IllegalArgumentException: pointerIndex out of range...[170zt045a8.png] 在这里插入图片描述 在做多点触控放大缩小,操作自己所绘制的图形时发生这个异常,如果是操作图片的放大缩小多点触控不会出现这个错误 这个bug是Android系统原因

    6K10

    Android实现轮播图点击图片放大效果

    最近项目中需要实现轮播图显示商品图片,当用户点击商品图片的时候,需要图片放大显示,当然用户还能进行多张图片的滑动切换,放大,缩小图片等操作,实现起来相对还是比较简单的,话不多说,咱们是用代码说话的,直接上代码...实现步骤: 1.效果图的展示 2.项目中添加相关的依赖 3.主界面实现轮播图的效果 4.点击轮播图进入图片放大展示页面 5.图片放大展示页面所需的适配器 6.获取fragment需要展示图片的...imageView) { Glide.with(context).load((String) path).into(imageView); } } } 4.点击轮播图进入图片放大展示页面...Bug解决 在测试的过程中,对放大的图片进行缩放的时候,遇到下面的Bug: java.lang.IllegalArgumentException: pointerIndex out of range...在这里插入图片描述 在做多点触控放大缩小,操作自己所绘制的图形时发生这个异常,如果是操作图片的放大缩小多点触控不会出现这个错误 这个bug是Android系统原因 。

    5K20

    图片轮播(左右切换)--JS原生和jQuery实现

    图片轮播(左右切换)--js原生和jquery实现 左右切换的做法基本步骤跟 上一篇文章  淡入淡出 类似,只不过修改了一些特定的部分 ?...)跟淡入淡出式就不一样了 淡入淡出只需要显示或者隐藏对应序号的图片就行了,直接通过display来设定 左右切换式则是采用图片li 浮动,父层元素ul 总宽为总图片宽,并设定为有限banner宽度下隐藏超出宽度的部分...然后当想切换到某序号的图片时,则采用其ul 定位 left样式设定相应属性值实现 比如显示第一张图片初始定位left为0px, 要想显示第二张图片则需要left:-400px 处理 实现  demo js原生大概也就是模拟jq的实现思路 1.全局变量等 var curIndex = 0, //当前index imgArr = getElementsByClassName...5.接下来就是切换的函数实现了,比如要切换到序号为num的图片 //左右切换处理函数 function changeTo(num){ //设置image var

    87.4K20

    微信小程序图片放大预览效果的实现,轮播图点击放大预览

    近期很多刚学习小程序的同学,想做哪种图片点击放大,然后可以左右滑动预览的效果。我也特意去研究下,发现直接用微信程序自己的api就可以很方便的实现。今天就来教大家如何实现小程序图片点击放大的效果。...我再给大家描述下吧 一个页面有3张图片,点击其中任意一张都可以放大预览。然后在预览的时候,左右滑动,还可以看另外两张图片。...1-2,实现图片放大效果的核心方法如下。 ? 上图是官方的示例。我们来看下实际中是如何使用的。 1-3,把image.js的完整代码贴出来。...然后定义一个方法,在点击图片时实现图片放大预览的效果。 其实代码就这么多,我们就可以轻松的实现小程序图片的点击放大效果了。 是不是很简单。...,外加一个点击事件 2-3,js代码的实现 其实和我们上面多图片实现的代码一样 Page({ data: { imgList: [ "https://ss0.bdstatic.com

    8K30

    在开发中实现点击 WebView 中的图片,调用原生控件放大展示

    现在有很多时候,我们的 App 都进行了混合开发,而最简单,最常用的就是有些网页采用了 WebView 进行展示,这就需要我们了解和懂得如何实现 WebView 和 JS 进行交互。...今天我们就来学习一下,如何点击 WebView 中的网页图片,调用原生控件进行放大展示。 其实实现这种交互非常简单,就是通过 JS 调用原生控件。...通过点击加上的 onClick 事件,通过 JS 调用原生控件,展示放大即可。 效果图 这是在线网址展示的效果图 ? 这是本地 html 文件展示出的效果图 ?...实现方法 html 文件 我们先写一个简单的 html 文件,里面放两张图片。源代码非常简单。...函数的功能就是注册监听,遍历所有的img标签,并添加onClick函数,函数的功能是在图片点击的时候调用本地java接口并传递url过去 mWebView.loadUrl

    3.2K50

    js 实现点击触发复制口令到剪贴板,并跳转

    vue3 项目,想要使用 js 实现点击触发跳转时,复制口令到剪贴板,注意这里,仅仅是复制到剪贴板。...、touchstart)事件的同步代码中调用,如果在 setTimeout、promise、事件监听等 内或者后面都会导致执行失败 摇一摇等非用户手势触发的点击这些都属于自动点击,则不会复制成功,会报错...copied) { console.warn('[copyAndOpenApp] 复制失败,但仍尝试打开 APP') } // 拼接 scheme 并打开 APP const scheme...copied) { console.warn('[copyCommand] 复制失败,但仍尝试打开 APP') } } 以上方法,如果仅复制口令,则使用  copyCommand,如果还要实现复制口令并打开...会用户手势触发的点击,执行复制方法就会报这个错

    76410
    领券