今天想要分享一些按鈕被 hover 時的效果,
我的參考來源來自以下兩個 Youtube 頻道:
Online Tutorials
DarkCode
:hover
::before、::after、position: absolute
transition
z-index

HTML
<a class="btn btn1" href="#">Button</a>
<a class="btn btn2" href="#">Button</a>
<a class="btn btn3" href="#">Button</a>
<a class="btn btn4" href="#">Button</a>
CSS
body{
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}
/* btn 共用樣式 */
.btn{
  display: inline-block;
  text-decoration: none;
  padding: 10px 15px;
  color: #008891;
  position: relative;
  overflow: hidden;
  margin: 0 10px;
}
/* btn1 */
.btn1{
  border: 1px solid #008891;
}
.btn1:hover{
  color: #fff;
}
.btn1::before{
  content:'';
  position: absolute;
  width: 100%;
  height: 0%;
  background-color: #008891;
  left: 0;
  top: 0;
  border-radius: 0 0 50% 50%;
  z-index: -1;
  transition: .5s;
}
.btn1:hover:before{
  height: 180%;
}
/* btn2 */
.btn2{
  transition: color .8s .2s;
}
.btn2:hover{
  color: #fff;
}
.btn2::before{
  content:'';
  position: absolute;
  left: 0;
  bottom: 0;
  top: 95%;
  width: 100%;
  background-color: #008891;
  transition: 1s;
  z-index: -1;
}
.btn2:hover:before{
  top: 0;
}
/* btn3 */
.btn3:hover{
  color: #fff;
  background-color: #008891;
  transition: .3s .8s;
}
.btn3::before,
.btn3::after{
  content:'';
  position: absolute;
  width: 10%;
  height: 20%;
  border-color: #008891;
  border-style: solid;
  transition: 1s;
}
.btn3::before{
  top: 0;
  left: 0;
  border-width: 1px 0 0 1px;
}
.btn3::after{
  bottom: 0;
  right: 0;
  border-width: 0 1px 1px 0;
}
.btn3:hover::before,
.btn3:hover::after{
  width: 100%;
  height: 100%;
}
/* btn4 */
.btn4::before{
  content:'';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  border: 1px solid #008891;
  z-index: -2;
}
.btn4:hover{
  color: #008891;
}
.btn4::after{
  content:'';
  position: absolute;
  width: 10px;
  height: 100px;
  background-color: #fff;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) rotate(-45deg);
  z-index: -1;
  transition: .5s;
}
.btn4:hover::after{
  transform: translate(-50%, -50%) rotate(45deg);
}
btn1 - btn4 這樣的命名::before、::after 真的是非常非常好用的東西,這四個按鈕都有用到它們,搭配 position: absolute 的用法更是超常出現transition 就可以製造出各種效果z-index 的應用,要讓東西有前後之分,否則 ::before 或是 ::after 會蓋到字大概就是這樣的一些小範例,
當然還有其他百百種 hover 的動畫,
沒事翻翻網路學個幾招也是滿好玩的啦~
大家中秋節快樂啊!
以上就是今天的內容,如果有講不對的地方再請各位留言讓我知道,謝謝。
明天要講的是圖文互動卡片。