CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大

下面是CSS实现圆形放大镜狙击镜效果的攻略:

1. 使用CSS实现圆形放大镜狙击镜效果的基本步骤

1.1 HTML部分

首先,需要在HTML中创建图像容器以及用于显示放大结果的空间容器,例如:

<div class="image-container">
  <img src="example.jpg" alt="example" id="zoom-img">
  <div class="zoom-container"></div>
</div>

在图片容器中,我们使用一个<img>标签来加载要放大的图片,同时,使用一个<div>标签来作为放大结果的容器。id="zoom-img"是我们指向图片元素的依据,class="image-container"class="zoom-container"是我们使用CSS样式对元素进行样式设置的依据。

1.2 CSS部分

接下来,使用CSS对HTML中的元素进行样式设置。具体步骤如下:

  • .image-container设置position: relative;,以便后续使用绝对定位(absolute)设置放大镜和放大框的位置,同时,设置宽度和高度,以适应图片尺寸。例如:.image-container { position: relative; width: 500px; height: 500px; }
  • .zoom-container设置position: absolute;,以便将其置于图像容器的上层,并设置宽度和高度,作为放大效果的容器。例如:.zoom-container { position: absolute; width: 200px; height: 200px; }
  • 通过设置圆角半径border-radius属性为50%来将zoom-container变成圆形。例如:.zoom-container { border-radius: 50%; }
  • 将放大框(即圆形)隐藏起来并设置其border和box-shadow属性以生成放大镜的效果。例如:.zoom-container { display: none; border: 5px solid #ccc; box-shadow: 0 0 5px rgba(0,0,0,0.5); }
  • 为放大镜绑定相应的事件。对鼠标移动的响应事件,放大镜会根据鼠标坐标变化而移动;对鼠标按下和松开的相应事件,放大框会出现和消失。例如:
.image-container:hover .zoom-container { display: block; }
.image-container:hover img { opacity: 0.3; }
.zoom-container { pointer-events: none; }
.image-container:hover .zoom-container { pointer-events: auto; }
.image-container:hover .zoom-container {
  top: -100px;
  left: -100px;
  background-position: -100px -100px;
}

以上就是CSS实现圆形放大镜狙击镜效果的基本步骤和样式设置方法。

2. 示范代码和说明

2.1 示例1

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>圆形放大镜狙击镜效果示例1</title>
    <style type="text/css">
        .image-container {
            position: relative;
            width: 500px;
            height: 500px;
        }
        .image-container:hover .zoom-container {
            display: block;
        }
        .image-container:hover img {
            opacity: 0.3;
        }
        .zoom-container {
            position: absolute;
            border: 5px solid #ccc;
            box-shadow: 0 0 5px rgba(0,0,0,0.5);
            width: 200px;
            height: 200px;
            border-radius: 50%;
            display: none;
            pointer-events: none;
            background-image: url(example.jpg);
            background-repeat: no-repeat;
        }
        .image-container:hover .zoom-container {
            pointer-events: auto;
        }
    </style>
</head>
<body>
    <div class="image-container">
        <img src="example.jpg" alt="example" id="zoom-img">
        <div class="zoom-container"></div>
    </div>
</body>
</html>

以上代码实现了一个基本的圆形放大镜狙击镜效果示例。鼠标经过图片时,会出现圆形放大镜,放大结果为原图的一小部分。

2.2 示例2

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>圆形放大镜狙击镜效果示例2</title>
    <style type="text/css">
        .image-container {
            position: relative;
            width: 500px;
            height: 500px;
        }
        .image-container:hover .zoom-container {
            display: block;
        }
        .image-container:hover img {
            opacity: 0.5;
        }
        .zoom-container {
            position: absolute;
            border: 5px solid #427AA1;
            width: 150px;
            height: 150px;
            border-radius: 50%;
            display: none;
            pointer-events: none;
            background-repeat: no-repeat;
            background-position: center center;
            background-size: 600px 600px;
            box-shadow: 0px 0px 5px 1px rgba(66,122,161,.5);
            transform-origin: 50% 50%;
        }
        .image-container:hover .zoom-container {
            pointer-events: auto;
        }
    </style>
</head>
<body>
    <div class="image-container">
        <img src="example.jpg" alt="icon" id="zoom-img">
        <div class="zoom-container"></div>
    </div>
    <script>
        const $zoomContainer = document.querySelector('.zoom-container');
        $zoomContainer.style.backgroundImage = `url(example.jpg)`;
        const img = new Image();
        img.onload = () => {
            $zoomContainer.style.backgroundSize = `${img.width * 2}px ${img.height * 2}px`;
        }
        img.src = 'example.jpg';
        document.querySelector('.image-container').addEventListener('mousemove', (e) => {
            const zoomContainerSize = parseInt(getComputedStyle($zoomContainer).width, 10);
            const imageSize = parseInt(getComputedStyle(document.querySelector('#zoom-img')).width, 10);
            const halfContainerSize = zoomContainerSize / 2;
            const halfImageSize = imageSize / 2;
            const zoomX = (e.clientX - e.target.getBoundingClientRect().left) / imageSize * 100;
            const zoomY = (e.clientY - e.target.getBoundingClientRect().top) / imageSize * 100;
            $zoomContainer.style.left = `${e.clientX - halfContainerSize}px`;
            $zoomContainer.style.top = `${e.clientY - halfContainerSize}px`;
            $zoomContainer.style.backgroundPosition = `${zoomX}% ${zoomY}%`;
            $zoomContainer.style.transform = `scale(2)`;
        });
        document.querySelector('.image-container').addEventListener('mouseleave', (e) => {
            const $zoomContainer = document.querySelector('.zoom-container');
            $zoomContainer.style.transform = `scale(1)`;
            $zoomContainer.style.display = `none`;
            const $img = document.querySelector('#zoom-img');
            $img.style.opacity = 1;
        })
    </script>
</body>
</html>

以上代码实现了更加复杂和高级的圆形放大镜狙击镜效果,具体特点有:

  • 放大器半径变小
  • 放大器和放大结果滤镜的字体色值变成蓝色,样式更加美观
  • 将放大框的大小固定为150x150
  • 通过background-image属性设置放大镜放大的是原图指定的一小部分,并通过background-size将其放大至原图的两倍
  • 放大结果可以随鼠标位置而相应变化
  • 鼠标离开图片范围时,放大器消失

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)

    引入jquery.guide.js插件 在html文件中引入jquery和jquery.guide.js插件的js文件,同时在head中添加相关的css样式文件,如下所示: “`html jquery.guide.js Demo jquery.guide.js Demo Click the button to trigger the guide popup…

    css 2023年6月9日
    00
  • jQuery插件zTree实现的基本树与节点获取操作示例

    首先,我们需要了解以下知识点: zTree:一款基于 jQuery 的多功能树插件,官方网站为 http://www.treejs.cn 基本树的实现方式:通过在 HTML 中定义一个包含 id 属性的 元素,zTree 就会自动将其转换为一棵树。 节点的获取操作:可以使用 zTree 提供的一些方法获取节点,如:getNodes、getSelectedNo…

    css 2023年6月10日
    00
  • CSS表格样式:圆角,隔行,变色的具体实现

    实现CSS表格样式包括圆角、隔行、以及变色的步骤如下: 1. 圆角表格样式 使用CSS的border-radius属性可以实现表格的圆角效果。 示例代码如下: table { border-collapse: collapse; } table, td, th { border: 1px solid #999; border-radius: 6px; pad…

    css 2023年6月9日
    00
  • Firefox中A元素包含Select时点击Select不能选择option bug

    “Firefox中A元素包含Select时点击Select不能选择option bug”攻略 问题描述 在 Firefox 浏览器中,当一个 a 标签元素包含一个 select 元素时,点击 select 元素不能够弹出下拉选项框,但是点击 select 元素旁边的空白区域却可以触发弹出下拉选项框。 解决方案 方案一:使用 onclick 事件替代 href…

    css 2023年6月11日
    00
  • Dreamweaver中CSS怎么制作径向圆形渐变?

    以下是关于“Dreamweaver中CSS怎么制作径向圆形渐变”的完整攻略,包含两个示例说明。 步骤一:创建CSS样式 首先,需要创建一个CSS样式。可以按照以下步骤操作: 在Dreamweaver中,打开CSS样式面板。可以通过菜单栏的“窗口”>“CSS样式”来打开。 点击“新建样式表”按钮,创建一个新的CSS样式表。 在CSS样式表中,创建一个新的…

    css 2023年5月18日
    00
  • CSS网页布局入门教程10:带当前标识的标签式横向导航

    下面我将为你详细讲解“CSS网页布局入门教程10:带当前标识的标签式横向导航”的完整攻略。 1. 什么是带当前标识的标签式横向导航? 带当前标识的标签式横向导航是一种常见的网页布局方式,它通常用于网站顶部的导航栏中。这种导航栏将多个链接以标签页的形式展现出来,用户可以通过点击标签页来跳转到对应页面。而带当前标识则是指,当前所处于的标签页将被特别标识出来,以帮…

    css 2023年6月9日
    00
  • ie6不支持hover ie6 标签(除a标签)不支持伪类:hover解决方案

    首先,我们需要了解一下IE6的特性。IE6不支持使用:hover选择器来设定除了a标签以外的标签的样式。这意味着我们需要采用其他的解决方案来解决这个问题。 其中一种解决方案是通过使用JavaScript来实现hover效果。具体步骤如下: 引入jQuery库 在网页头部引入jQuery库: <script src="https://cdnjs…

    css 2023年6月9日
    00
  • 通过CSS禁用页面内容选中和复制操作

    为了禁用页面内容选中和复制操作,我们可以采取以下两种方法: 1. 通过CSS的user-select属性来禁用选中操作 CSS的user-select属性可以控制用户是否可以选中页面中的文本,通过将其属性值设置为none可以禁用选中操作,代码如下: * { -webkit-user-select: none; /*webkit浏览器*/ -moz-user-…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部