最近在做公司的登入頁,UE同學希望第三方登入的圖示在hover的時候有一個圓形的縮放效果(原話是波紋效果-_-||),效果參考騰訊新聞和網易新聞的分享按鈕。
看了一下這兩個頁面的原始碼,主要是用了transform:scale()
和transition
,自己的最終的實現效果如下:
<a href="" class="third-party third-party-weixin">
<i></i>
<span></span>
</a>
複製程式碼
外層的a標籤用於整體容器和跳轉,內層的i標籤使用偽元素::before和::after分別作為背景色和前景色,這兩個偽元素均絕對定位,垂直水平居中,::after設定縮放屬性transform:scale(0)
,過渡動畫屬性transition: all .3s
,正常情況下::before可見,當hover的時候::after設定縮放屬性transform:scale(1)
,兩個相鄰絕對定位元素在不設定z-index的情況下,文件流在後的元素在上,並且在有過渡動畫屬性transition
的情況下實現了縮放動畫效果。
span標籤用於展示logo,可以是圖片或者web字型,只要透明就可以,這裡用了圖片。 CSS(此處使用的是sass)如下:
.third-party {
position: relative;
// 為了相容firefox必須要變成block或inline-block
display: inline-block;
width: 48px;
height: 48px;
margin: {
left: 6%;
right: 6%;
}
&:hover {
i {
&::after {
transform: scale(1);
}
}
}
span {
// position: relative是為了相容firefox和IE
position: relative;
display: block;
width: 48px;
height: 48px;
background-size: 30px;
background-position: center;
background-repeat: no-repeat;
}
i {
position: absolute;
top: 0;
left: 0;
width: 48px;
height: 48px;
&::before {
content: '';
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
&::after {
content: '';
transition: all .3s;
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
transform: scale(0);
}
}
&.third-party-weixin {
span {
background-image: url(../images/login/weixin-64.png);
}
i {
&::before {
background-color: #20a839;
}
&::after {
background-color: #30cc54;
}
}
}
}
複製程式碼
這樣這個簡單的圓形縮放動畫就完成啦。
PS: ScreenToGif錄GIF真好用,推薦一下。