【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>
相关推荐
JIngJaneIL22 分钟前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码29 分钟前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_39 分钟前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy1 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌1 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight1 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm
LYFlied1 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
开发者小天1 小时前
react中useEffect的用法,以及订阅模式的原理
前端·react.js·前端框架
前端白袍2 小时前
Vue:如何实现一个具有复制功能的文字按钮?
前端·javascript·vue.js