创意代码之图片悬停效果

1,098 阅读2分钟

“我正在参加 码上掘金体验活动,详情:show出你的创意代码块

前言

一直看着掘金主页点头像会加速旋转,自己也想写一个类似这种的特效,就是鼠标放图片上时图片会悬停,就是那种戳一下动一下的效果,本文会先分解实现的步骤,使用到知识点都会有案例,那么我们开始吧。

一.运行效果&在线体验地址

二.主要实现点解析

1.实现思路:

主要实现是使用了css中hover选择器和transform属性,transform可以将元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜,即当在鼠标移到链接/图片上时可以该元素添加的一些特殊样式,比如移动到超链接时,超链接会变色,所以要实现图片悬停的效果。

2.我们先来看看只用transform属性去实现一个倾斜的Hello World框

image.png 代码:

 <style>
        div
        {
            margin:30px;
            width:200px;
            height:100px;
            background-color:aqua;
            transform:rotate(9deg);
            //兼容以下浏览器
            //9deg的意思是倾斜9度
            -ms-transform:rotate(9deg); /* Internet Explorer */
            -moz-transform:rotate(9deg); /* Firefox */
            -webkit-transform:rotate(9deg); /* Safari 和 Chrome */
            -o-transform:rotate(9deg); /* Opera */
        }
    </style>
</head>
<body>
<div>Hello World</div>
</body>

3.再来看看只用hover选择器实现鼠标移动到超链接上时,超链接会相应的变色效果

image.png 代码:

<style>
    a:hover
    {
        background-color:aqua;
    }
</style>
</head>
<body>
<a href="http://www.baidu.com/">这是一个超链接的hover选择器效果</a>
</body>

4.最后是hover选择器和transform属性的结合,也就是文中要实现的悬停效果

代码:

* {
margin:0;
padding:0;
list-style:none;
}
body {
background:#1F1F1F;
}
.img {
width: 220px;
height: 220px;
margin: 0 auto;
background: no-repeat url("https://p26-passport.byteacctimg.com/img/user-avatar/2a8d6ccfbc571fc588cf3c40657b0986~300x300.image") left top;
-webkit-background-size: 220px 220px;
-moz-background-size: 220px 220px;
background-size: 220px 220px;
-webkit-border-radius: 110px;
border-radius: 110px;
-webkit-transition: -webkit-transform 2s ease-out;
-moz-transition: -moz-transform 2s ease-out;
-o-transition: -o-transform 2s ease-out;
-ms-transition: -ms-transform 2s ease-out;
}
.img:hover {
//360度旋转 当鼠标移动到图片上时会有一个360度旋转的效果
-webkit-transform: rotateZ(360deg);
-moz-transform: rotateZ(360deg);
-o-transform: rotateZ(360deg);
-ms-transform: rotateZ(360deg);
transform: rotateZ(360deg);
}

三.遇到的问题&解决办法

之前没有考虑到CSS3的一些属性Google浏览器和火狐浏览器是不支持的,怎么写运行了都不对,还是后面突然记起来兼容性这个问题,加上浏览器兼容就行了

结束语

确实很长时间没有去写前端的js,css代码了,一些东西比如样式的调整和浏览器兼容性问题都忘记了,有时间还恶补一下比较好。