【CSS】实现鼠标悬停图片放大的几种方法

1.背景图片放大

使用css设置背景图片大小100%,同时设置位置和过渡效果,然后使用:hover设置当鼠标悬停时修改图片大小,实现悬停放大效果。

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
    <style>
        .box{
            border: 5px solid black;
            width: 400px;
            height: 400px;
            margin: 100px auto;
            background-image: url(./1.png);
            /* 设置背景大小为100% */
            background-size: 100%;
            /* 设置背景图片位置 */
            background-position: 50% 50%;
            /* 添加过渡效果 */
            transition: all 1s;
        }
        .box:hover{
            /* 鼠标悬停时放大 */
            background-size: 120%;
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

2.img图片放大

在div中添加img元素,给div添加弹性布局保证图片始终位于居中位置,当鼠标悬停于img时修改图片大小。

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
    <style>
        .box {
            border: 5px solid black;
            width: 400px;
            height: 400px;
            margin: 100px auto;
            /* 设置溢出隐藏 */
            overflow: hidden;
            /* 使用弹性布局保证图片居中 */
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .box img {
            /* 设置大小 */
            width: 100%;
            height: 100%;
            /* 给图片添加过渡效果 */
            transition: all 1s;
        }

        .box img:hover {
            /* 鼠标悬停放大 */
            width: 120%;
            height: 120%;
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="./1.png" alt="">
    </div>
</body>

</html>

3.使用transform: scale(1)

使用这一方法与img放大类似,不过好处是不用手动设置图片居中,transform: scale(1);会在原位置上放大。

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
    <style>
        .box {
            border: 5px solid black;
            width: 400px;
            height: 400px;
            margin: 100px auto;
            /* 设置溢出隐藏 */
            overflow: hidden;
        }

        .box img {
            width: 100%;
            height: 100%;
            /* 设置放大比例 */
            transform: scale(1);
            /* 给图片添加过渡效果 */
            transition: all 1s;
        }

        .box img:hover {
            /* 修改放大比例 */
            transform: scale(1.2);
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="./1.png" alt="">
    </div>
</body>

</html>
相关推荐
码途潇潇11 小时前
JavaScript 中 ==、===、Object.is 以及 null、undefined、undeclared 的区别
前端·javascript
之恒君11 小时前
Node.js 模块加载 - 4 - CJS 和 ESM 互操作避坑清单
前端·node.js
be or not to be11 小时前
CSS 背景(background)系列属性
前端·css·css3
前端snow11 小时前
在手机端做个滚动效果
前端
webkubor11 小时前
🧠 2025:AI 写代码越来越强,但我的项目返工却更多了
前端·机器学习·ai编程
Sun_小杰杰哇11 小时前
Dayjs常用操作使用
开发语言·前端·javascript·typescript·vue·reactjs·anti-design-vue
戴维南11 小时前
TypeScript 在项目中的实际解决的问题
前端
晴殇i11 小时前
package.json 中的 dependencies 与 devDependencies:深度解析
前端·设计模式·前端框架
pas13611 小时前
25-mini-vue fragment & Text
前端·javascript·vue.js
何贤11 小时前
2025 年终回顾:25 岁,从“混吃等死”到别人眼中的“技术专家”
前端·程序员·年终总结