实现鼠标 hover 元素中心点放大效果

对于之前实现鼠标 hover 元素从隐藏到出现的方法常用的有两种:

1.通过display:none;或者 visibility:hidden;来实现元素的隐藏,而通过设置被 hover 元素 display:block;或者 visibility:visible;来实现元素的重新显示。
2.通过设置宽或者高为 0 来实现元素隐藏,而通过重新设置被 hover 元素的宽高来实现元素的显示。

第一种方式无法实现动态的显示效果,而第二种方式可以实现较美观的动态效果,只需设置 transition:all .3s;即可。

但是,通过实践发现:若要实现从中心平滑放大的效果,第二种方式怎么也做不到那种平滑的效果。

通过第二种方式传统定位实现的,hover图片放大,不是从中心点放大,而是以左上角为起始位置向右下角方向延伸放大,这不是我们想要的效果。

那么,以此为基础作出假设若要实现从中心点的放大是不是只要将被 hover 的元素,居中就行了呢?

然而通过强制修改被 hover 元素的定位,在 hover 中将其设置居中,并不能实现想要的效果,元素依然从左上角向右下角延伸放大,只是在放大的过程的有一个位置的跳跃,跳跃到中间罢了,过渡非常生硬。

那么,如何才能实现鼠标 hover 元素中心点 “平滑” 放大效果呢?

传统的改变宽高的方式是行不通的,这时候需要用到 transform 属性,通过设置 transform: scale(1.2); 来实现中心放大的效果,当然其中的数值可以自己设置。


下面我分别给两个图片设置定位,一个是左上角定位,一个是居中定位(实现效果如下图)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .div_1{
            display: inline-block;
            width: 500px;
            height: 500px;
            border: 1px solid blue;
            position: relative;
        }
        .img1{
            width: 400px;
            height: 320px;
            position: absolute;
            left: 0;
            top: 0;
            transition: all .4s;
            cursor: pointer;
        }
        .img1:hover{
            zoom:1;
            transform: scale(1.2);
        }
        .div_2{
            display: inline-block;
            width: 500px;
            height: 500px;
            border: 1px solid yellow;
            position: relative;
        }
        .img2{
            width: 400px;
            height: 320px;
            position: absolute;
            top: 0;right: 0;bottom: 0;left: 0;
            margin: auto;
            transition: all .4s;
            cursor: pointer;
        }
        .img2:hover{
            zoom:1;
            transform: scale(1.2);
        }
    </style>
</head>
<body>
    <div class="div_1">
        <img class="img1" src="hy.jpg" alt="">
    </div>
    <div class="div_2">
        <img class="img2" src="hy.jpg" alt="">
    </div>
</body>
</html>
原始状态
左上角中心放大
居中中心放大

以上纯属个人学习总结,如有疏漏或者不足之处还望指正,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,805评论 1 92
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,349评论 25 708
  • 當愛情降臨時 1 他那麼看著她,野蠻而溫情 他們白色花瓣的黎明 想象中的日出 愉快而正式的物換星移 他帶走一切 也...
    桑子简书阅读 197评论 0 0
  • 仗剑盛唐游,白衣风猎猎。 胸怀天下山,痛饮杯中月。 醉酒携秦弓,赋诗诣汉阙。 惜哉失武皇,不得展韬略。
    衙斋掾吏阅读 478评论 6 8
  • 我对房子总是有一种纠结了,未结婚之前曾经梦想有一套小小的房子,让在外漂泊的我有一个自己的家,家里有我喜欢淡花窗帘,...
    酷雪冰凌阅读 432评论 11 12