首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[分享]css3放大镜效果

发布于 2024-11-11 15:52:01
0
18

CSS3放大镜效果是一种非常有趣的效果,它可以让用户在网页上放大需要查看的细节部分。下面我们介绍一下如何实现这个效果:/ HTML结构 / / CSS样式 / .container { : r...

CSS3放大镜效果是一种非常有趣的效果,它可以让用户在网页上放大需要查看的细节部分。下面我们介绍一下如何实现这个效果:

/* HTML结构 */
<div class="container">
  <img src="image.jpg" class="image">
  <div class="zoom"></div>
</div>

/* CSS样式 */
.container {
  position: relative;
}
.image {
  display: block;
  width: 350px;
  height: 350px;
}
.zoom {
  position: absolute;
  top: 0;
  left: 0;
  width: 175px;
  height: 175px;
  border: 3px solid #999;
  box-shadow: 0 0 5px rgba(0,0,0,.5);
  visibility: hidden;
  overflow: hidden;  
}
.container:hover .zoom {
  visibility: visible;
}

/* JS */
let container = document.querySelector('.container');
let image = document.querySelector('.image');
let zoom = document.querySelector('.zoom');
let ratio = 2;
container.addEventListener('mousemove', e => {
  let boundingRect = container.getBoundingClientRect();
  let x = e.clientX - boundingRect.left;
  let y = e.clientY - boundingRect.top;
  let zoomX = x * ratio - zoom.offsetWidth / 2;
  let zoomY = y * ratio - zoom.offsetHeight / 2;
  if (zoomX < 0) zoomX = 0;
  if (zoomY < 0) zoomY = 0;
  if (zoomX > image.offsetWidth - zoom.offsetWidth) {
    zoomX = image.offsetWidth - zoom.offsetWidth;
  }
  if (zoomY > image.offsetHeight - zoom.offsetHeight) {
    zoomY = image.offsetHeight - zoom.offsetHeight;
  }
  zoom.style.backgroundPosition = `-${zoomX}px -${zoomY}px`;
}); 

在HTML中,我们需要一个容器,这个容器中包含一个图片和一个放大镜。图片使用标签来实现,并设置了宽度和高度。放大镜使用一个标签来实现,并设置了样式。

在CSS中,我们使用了一些CSS3的样式来实现这个效果。其中,position属性用于设置元素的定位方式。visibility属性用于设置元素的可见性。overflow属性用于设置元素内容的溢出如何处理。box-shadow属性用于设置元素的阴影效果。

在JavaScript中,我们使用了document.querySelector()方法来获取元素。addEventListener()方法用于添加事件监听器。getBoundingClientRect()方法用于获取元素的位置信息。e.clientX和e.clientY属性用于获取鼠标在页面中的坐标。zoom.style.backgroundPosition属性用于设置放大镜中显示的图片位置。

通过上述代码,我们可以实现CSS3放大镜效果。这是一种非常实用和有趣的效果,可以让用户更加方便地获取网页上的信息。

评论
一个月内的热帖推荐
91云脑
Lv.1普通用户

62849

帖子

14

小组

291

积分

赞助商广告
站长交流