【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>
相关推荐
我爱加班、、17 小时前
Websocket能携带token过去后端吗
前端·后端·websocket
AAA阿giao17 小时前
从零拆解一个 React + TypeScript 的 TodoList:模块化、数据流与工程实践
前端·react.js·ui·typescript·前端框架
杨超越luckly17 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
hedley(●'◡'●)18 小时前
基于cesium和vue的大疆司空模仿程序
前端·javascript·vue.js·python·typescript·无人机
qq5_81151751518 小时前
web城乡居民基本医疗信息管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
百思可瑞教育18 小时前
构建自己的Vue UI组件库:从设计到发布
前端·javascript·vue.js·ui·百思可瑞教育·北京百思教育
百锦再18 小时前
Vue高阶知识:利用 defineModel 特性开发搜索组件组合
前端·vue.js·学习·flutter·typescript·前端框架
CappuccinoRose18 小时前
JavaScript 学习文档(二)
前端·javascript·学习·数据类型·运算符·箭头函数·变量声明
这儿有一堆花18 小时前
Vue 是什么:一套为「真实业务」而生的前端框架
前端·vue.js·前端框架
全栈前端老曹18 小时前
【MongoDB】深入研究副本集与高可用性——Replica Set 架构、故障转移、读写分离
前端·javascript·数据库·mongodb·架构·nosql·副本集