JS与CSS3实现图片响应鼠标移动放大效果示例

JS与CSS3实现图片响应鼠标移动放大效果示例的完整攻略如下:

1.需求分析

在讲解代码实现之前,我们需要对需求进行分析。这个效果的需求描述为:当鼠标移动到图片上时,图片放大。而当鼠标移出图片时,图片复原。因此,我们需要使用JS和CSS3分别实现这个效果。

2.使用CSS3实现响应鼠标移动的放大效果

使用CSS3实现该效果非常简单,只需要使用transform属性就可以轻松实现。以下是实现的步骤:

1.首先,需要创建一个图片元素,并使用CSS3进行样式设置,如下所示:

img {
    width: 200px;
    height: 200px;
    transition: all 0.5s ease-in-out;
}

其中,transition属性用于设置过渡效果。all表示所有的属性都设置了过渡效果;0.5s表示过渡时间为0.5秒;ease-in-out指定了过渡函数。

2.接下来,在hover时,设置transform属性的值,如下所示:

img:hover {
    transform: scale(1.2);
}

这里,scale属性用于设置放大倍数。当鼠标移动到图片上时,transform属性设置为scale(1.2),表示放大倍数为1.2。

3.最后,在鼠标移开图片时,将transform属性设置为原始值,即:

img:hover {
    transform: scale(1.2);
}

当鼠标移开图片时,transform属性设置为缩放倍数为1,图片就会恢复原始大小了。

3.使用JS实现响应鼠标移动的放大效果

JS实现响应鼠标移动的放大效果,需要先获取鼠标在图片上的位置,再设置图片大小,最后用一些动画函数来实现动画效果。以下是步骤:

1.获取鼠标在图片上的位置,如下所示:

let x = e.clientX - img.offsetLeft;
let y = e.clientY - img.offsetTop;

这里,e.clientXe.clientY分别表示鼠标在窗口中的位置。img.offsetLeftimg.offseTop则表示图片左侧和上侧的距离。通过计算,可以得到鼠标在图片上的位置。

2.设置图片大小:

img.style.transform = 'translate(-50%, -50%) scale(1.2)';
img.style.width = imgWidth * 1.2 + 'px';
img.style.height = imgHeight * 1.2 + 'px';
img.style.left = x - imgWidth * 0.1 + 'px';
img.style.top = y - imgHeight * 0.1 + 'px';

这里,translate(-50%,-50%)表示将图片的中心点作为参考点;scale(1.2)表示放大倍数为1.2;imgWidthimgHeight表示图片的原始宽度和高度。计算后,可以设置图片的大小和位置。

3.使用动画函数实现动画效果:

let id = setInterval(frame, 10);
function frame() {
    if (cur == 100) {
        clearInterval(id);
    } else {
        cur++;
        img.style.opacity = cur / 100;
    }
}

这里,使用setInterval函数和clearInterval函数来实现动画效果。frame函数每10毫秒执行一次,对图片的透明度进行调整,从而达到渐变效果。当透明度达到100时,动画停止。

4.示例说明

以上就是JS与CSS3实现图片响应鼠标移动放大效果的完整攻略。下面,我们举两个例子来说明实现方法。

示例1:使用CSS3实现

下面是一个使用CSS3实现的图片放大效果:

<!DOCTYPE html>
<html>
<head>
    <title>图片放大效果</title>
    <style>
        img {
            width: 200px;
            height: 200px;
            transition: all 0.5s ease-in-out;
        }
        img:hover {
            transform: scale(1.2);
        }
    </style>
</head>
<body>
    <img src="example.jpg" alt="example">
</body>
</html>

在鼠标移动到图片上时,图片会放大。

示例2:使用JS实现

下面是一个使用JS实现的图片放大效果:

<!DOCTYPE html>
<html>
<head>
    <title>图片放大效果</title>
    <style>
        img {
            width: 200px;
            height: 200px;
            position: relative;
        }
    </style>
</head>
<body>
    <img src="example.jpg" alt="example" id="img">
    <script>
        let img = document.getElementById('img')
        let imgWidth = img.offsetWidth;
        let imgHeight = img.offsetHeight;
        img.addEventListener('mousemove', function (e) {
            let x = e.clientX - img.offsetLeft;
            let y = e.clientY - img.offsetTop;
            img.style.transform = 'translate(-50%, -50%) scale(1.2)';
            img.style.width = imgWidth * 1.2 + 'px';
            img.style.height = imgHeight * 1.2 + 'px';
            img.style.left = x - imgWidth * 0.1 + 'px';
            img.style.top = y - imgHeight * 0.1 + 'px';

            let cur = 0;
            let id = setInterval(frame, 10);
            function frame() {
                if (cur == 100) {
                    clearInterval(id);
                } else {
                    cur++;
                    img.style.opacity = cur / 100;
                }
            }
        })
        img.addEventListener('mouseout', function () {
            img.style.transform = 'translate(-50%, -50%)';
            img.style.width = imgWidth + 'px';
            img.style.height = imgHeight + 'px';
            img.style.left = '50%';
            img.style.top = '50%';

            let cur = 100;
            let id = setInterval(frame, 10);
            function frame() {
                if (cur == 0) {
                    clearInterval(id);
                } else {
                    cur--;
                    img.style.opacity = cur / 100;
                }
            }
        })
    </script>
</body>
</html>

当鼠标移动到图片上时,图片会根据鼠标位置进行放大,并且渐变变得不透明。当鼠标移开时,图片会恢复原始状态,并渐变变得透明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS与CSS3实现图片响应鼠标移动放大效果示例 - Python技术站

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

相关文章

  • 像素密度与CSS3的viewport在移动端Web响应式布局中的运用

    一、像素密度与CSS3的viewport在移动端Web响应式布局中的运用 在移动端Web响应式布局中,屏幕大小与分辨率是非常重要的概念。其中像素密度(Pixel Density)就是指屏幕上每英寸所包含的像素数,通常也称为“PPI”(Pixels Per Inch)。而对于响应式布局,实现元素的自动适配和缩放则需要依靠CSS3的viewport视口概念。 C…

    css 2023年6月10日
    00
  • Python PyQt5学习之样式设置详解

    Python PyQt5学习之样式设置详解 在使用 PyQt5 进行 UI 开发时,样式设置是一个很重要的部分。通过样式设置,我们可以控制组件的外观,让 UI 更加美观、个性化。本篇文章将详细介绍 PyQt5 中的样式设置,包括样式表、样式类、QStylePainter 等。 样式表 样式表是 PyQt5 中最常用、最方便的样式设置方式之一。在 PyQt5 …

    css 2023年6月11日
    00
  • 使用CSS3制作饼状旋转载入效果的实例

    使用 CSS3 制作饼状旋转载入效果的实例,可以通过以下步骤实现: 创建 HTML 结构 首先,需要创建一个 HTML 结构,包含一个 div 元素作为载入效果的容器,以及一个 span 元素作为载入效果的饼状图。 <div class="loader"> <span></span> </div&…

    css 2023年5月18日
    00
  • css :not的多个条件的写法详解

    CSS :not的多个条件的写法详解 CSS中的:not伪类可以选取除了指定选择器之外的所有元素,但是它也可以用于多个条件的选择中。 基本语法 :not伪类的基本语法如下: :not(selector) 其中,selector为要排除的元素选择器,可以是类名、ID名、标签名等。 多个条件的写法 :not可以配合其他选择器一起使用,来实现对多个条件的排除。以下…

    css 2023年6月10日
    00
  • css利用A标签的背景可能作出很有意思的效果

    针对这个问题,我可以给出以下完整攻略: CSS利用 A标签的背景 可以作出很有意思的效果 1. 利用 background-image 设置背景图片 可以通过 background-image 属性设置 A 标签的背景图片。通过精心的设计,可以为网站增添一些浪漫或者复古的气息,使得用户体验更加丰富多彩。 下面是一个设置背景图片的例子: a { backgro…

    css 2023年6月9日
    00
  • Vue中的transition封装组件的实现方法

    实现 Vue 中的 transition 封装组件,需要用到 Vue 的过渡系统,即 transition 组件。下面我将使用完整的 markdown 格式文本给出实现方法的攻略,包括过渡组件的用法、封装组件的方法和示例说明。 1. 过渡组件的用法 过渡组件是 Vue 提供的一个组件,用于在元素从一个状态到另一个状态之间,应用过渡效果。Vue 的过渡组件有以…

    css 2023年6月10日
    00
  • html中table为每个单元格设置不同颜色和宽度

    要在HTML中为每个单元格设置不同颜色和宽度,需要使用CSS。以下是详细的步骤: 第一步:创建HTML表格 在HTML中使用<table>标签创建表格,并使用<tr>标签创建每一行,<td>标签创建每个单元格。以下是一个简单的例子: <table> <tr> <td>Row 1, Cel…

    css 2023年6月9日
    00
  • css选择器优先级深入理解

    CSS选择器优先级深入理解 在CSS中,选择器的优先级是指当多个样式规则应用到同一个元素时,浏览器会按照一定的优先级规则来决定应用哪个样式。了解CSS选择器优先级对于编写高效、可靠的CSS样式至关重要。 优先级规则 CSS选择器优先级从高到低排列如下: !important声明:优先级最高的选择器是使用!important声明的,可以覆盖所有其他声明。 内联…

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