【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>
相关推荐
wuhen_n13 分钟前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
大鱼前端14 分钟前
为什么我说CSS-in-JS是前端“最佳”的糟粕设计?
前端
不爱吃糖的程序媛17 分钟前
Capacitor:跨平台Web原生应用开发利器,现已全面适配鸿蒙
前端·华为·harmonyos
AC赳赳老秦19 分钟前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
CHU72903520 分钟前
淘宝扭蛋机抽盒小程序前端功能解析:解锁趣味抽盒新体验
前端·小程序
-凌凌漆-30 分钟前
【npm】npm的-D选项介绍
前端·npm·node.js
鹿心肺语1 小时前
前端HTML转PDF的两种主流方案深度解析
前端·javascript
Lee川1 小时前
CSS盒模型实战:用代码透视 `border-box`与 `content-box`的天壤之别
css
海石1 小时前
去到比北方更北的地方—2025年终总结
前端·ai编程·年终总结
一个懒人懒人1 小时前
Promise async/await与fetch的概念
前端·javascript·html