CSS 畫圖基礎:實際案例應用與動畫效果

更新日期: 2024 年 11 月 12 日

CSS 不僅可以用來設置網頁樣式,還能創造出各種圖形和動畫效果。

透過設定圓形、邊框、旋轉效果和關鍵影格,我們可以實現更豐富的視覺效果。

以下將介紹幾個基礎的 CSS 畫圖技巧,包括繪製圓形、四分之一圓形、旋轉效果,以及模擬雲朵和閃電的動畫效果。

基本圓形繪製

範例:繪製一個圓形

CSS 可以透過 border-radius 設置元素的圓角,當元素的寬度與高度相等並且 border-radius 設為 50% 時,該元素就會顯示為一個圓形。

HTML 和 CSS 代碼如下:

<div class="box">
  <div class="item"></div>
</div>
* {
  padding: 0;
  margin: 0;
}

.box {
  width: 200px;
  height: 200px;
  background: #000;
  position: absolute;
  inset: 0;
  margin: auto;
  border-radius: 50%;
}

此代碼創建了一個 200px × 200px 的黑色圓形。

繪製四分之一圓形

範例:設置四分之一圓形的 border-radius

要繪製四分之一圓形,可以只讓元素的一個角變圓,這樣保留了其他三個角的直線。

設置 border-radius 如下:

.box {
  width: 200px;
  height: 200px;
  background: #000;
  position: absolute;
  inset: 0;
  margin: auto;
  border-radius: 200px 0 0 0;
}

這段代碼中的 border-radius: 200px 0 0 0; 表示僅對左上角設定圓角半徑為 200px,而其餘三個角的圓角半徑設為 0。

這樣的設置會讓左上角變為圓滑的弧形,而其餘角則保持直線,從而形成四分之一圓的效果。

這是因為 border-radius 可以針對四個角進行單獨的圓角設置,順序為:左上角、右上角、右下角和左下角。

在這裡,左上角的圓角半徑設定為 200px,剛好等於元素的寬度或高度,這使得左上角形成四分之一圓的弧形,而其他角則保持直線邊緣,最終呈現出四分之一圓的形狀。

使用動畫製作旋轉效果

透過 @keyframestransform: rotate 可以實現簡單的旋轉動畫。

將旋轉效果應用於一個圓形,可以產生動態效果。

範例:簡單的旋轉動畫

HTML 和 CSS 代碼如下:

<div class="box"></div>
.box {
  width: 150px;
  height: 150px;
  position: absolute;
  inset: 0;
  margin: auto;
  border-radius: 50%;
  border-left: 10px solid #000;
  border-right: 10px solid #000;
  animation: rotate 1s infinite;
}

@keyframes rotate {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(360deg);
  }
}

此代碼會讓 .box 元素以 1 秒的周期順時針旋轉,並持續播放。

增加內圈旋轉效果

我們還可以在旋轉的外圓內添加一個小的內圈,使旋轉效果更具層次感:

<div class="box1"></div>
<div class="box2"></div>
.box1 {
  width: 150px;
  height: 150px;
  position: absolute;
  inset: 0;
  margin: auto;
  border-radius: 50%;
  border-left: 10px solid #000;
  border-right: 10px solid #000;
  animation: rotate 1s infinite;
}

.box2 {
  width: 0;
  height: 0;
  border-bottom: 20px solid #000;
  border-top: 20px solid #000;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
  position: absolute;
  inset: 0;
  margin: auto;
  border-radius: 50%;
  animation: rotate 1s infinite;
}

這樣可以在 .box1 外圈的基礎上,添加一個不完全的內圈,並且同時進行旋轉,產生有趣的效果。

使用 steps 設定逐格動畫

若希望旋轉呈現逐格動畫的效果,可以在 animation 中使用 steps 函數:

.box2 {
  animation: rotate 1s infinite steps(5, end);
}

這樣會將旋轉分為 5 個明顯的步驟,形成卡頓的逐格效果。

繪製雲朵效果

使用 CSS 可以製作雲朵形狀。這裡我們使用多個圓形來模擬雲的不同部分,並將這些圓形擺放成雲朵的形狀。

<div class="box">
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="circle"></div>
</div>
* {
  padding: 0;
  margin: 0;
}

.box {
  width: 50px;
  height: 50px;
  position: absolute;
  inset: 0;
  margin: auto;
}

.circle {
  width: 100px;
  height: 100px;
  background: #81c7d4;
  position: absolute;
  border-radius: 50%;
}

.circle:first-child {
  top: -50px;
  left: -50px;
}

.circle:nth-child(2) {
  top: -52px;
  left: 20px;
}

.circle:nth-child(3) {
  bottom: -52px;
  left: -90px;
}

.circle:nth-child(4) {
  bottom: -72px;
  left: -10px;
}

.circle:nth-child(5) {
  bottom: -53px;
  right: -100px;
}

此代碼利用多個圓形的相對位置擺放,組合成一個雲朵效果。可以依據需要調整圓形的位置和大小,來達到不同的雲朵形狀。

模擬閃電動畫效果

在雲朵基礎上添加閃電動畫效果,可以讓雲朵看起來更具動態感。

透過 ::before::after 生成閃電形狀,並使用 @keyframes 來創建閃爍效果。

.box::before,
.box::after {
  width: 0;
  height: 0;
  position: absolute;
  content: "";
  animation: lightColor 3s infinite;
}

.box::before {
  border-bottom: #e9cd4c solid 50px;
  border-left: transparent solid 20px;
  bottom: -120px;
}

.box::after {
  border-top: #e9cd4c solid 50px;
  border-right: transparent solid 20px;
  bottom: -159px;
  left: 15px;
}

@keyframes lightColor {
  0%, 49.99% {
    opacity: 0;
  }
  50%, 100% {
    opacity: 1;
  }
}

這段代碼的 @keyframes 使用了 49.99% 的不透明度控制,以確保閃電效果在動畫過程中能瞬間切換,以避免重疊閃電時出現較深的顏色。

總結

透過 CSS 的 border-radius@keyframesposition 等屬性,我們可以簡單實現各種圖形與動畫效果。

以上介紹了圓形、四分之一圓形的基礎繪製方法,以及模擬雲朵和閃電的動畫技巧。

透過這些方法,可以製作生動的圖案並賦予動畫效果,進而豐富網頁的視覺效果。

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *