iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
0
自我挑戰組

30天的css animation修練系列 第 25

實作 css animation - 切分按鈕效果

這次要來寫的是切分按鈕效果的效果
一樣把基本架構寫好

<div class="centered">
  <a class="split-btn">
    <span class="split-ani">看我把你切兩半</span>
     <span class="split-ani">看我把你切兩半</span>
  </a>
</div>

接下來設定基本的 css

.centered {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  overflow:hidden;
}

.split-btn {
  color: #ff6565;
  font-family: "微軟正黑體";
  font-weight: bold;
  display: block;
  text-align: center;
  width: 9em;
  height: 2rem;
  cursor: pointer;
  border: #ff6565 2px solid;
  padding: 0.5em;
  overflow:hidden;
}

.split-btn span {
  position: absolute;
  width: 100%;
  left: 0;
  font-size: 1.4rem;
}

接下來針對文字設定形狀的遮罩,
讓第一組 span 隱藏下半部,第二組 span 隱藏上半部

.split-btn span:nth-of-type(1) {
  -webkit-clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%);
  clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%); 
}

.split-btn span:nth-of-type(2) {
  -webkit-clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%);
  clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%);
}

最後把動畫效果寫進來
這邊需要注意的是
在第二組 span 的動畫效果上增加 reverse來進行動畫反轉的效果
如此一來,就不需要再重新設定(連動畫都可以用同一組 非常方便!)

.split-ani{
  animation:split 2s linear infinite;
}

.split-ani:nth-of-type(2){
  animation:split 2s reverse linear infinite;
}

@keyframes split{
  0%{
    transform:translateX(100%);}
  40%{
    transform:translateX(0%);}
  80%{
    transform:translateX(0%);}
  100%{
    transform:translateX(-100%);}
}

到這邊就完成了
一樣附上本次的 codepen 如下
https://codepen.io/UHU/pen/OBerPB


上一篇
實作 css animation - 按紐填色動畫應用
下一篇
實作 css animation - 翻書動態效果
系列文
30天的css animation修練30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言