CSS 輻射漸變背景 radial-gradient

MDN參考資料瀏覽器

核心概念

三要素

1. 中心點

就是橢圓或者圓的中心bash

2. 邊緣

就是橢圓或者圓的邊緣。爲何要用邊緣,而不用寬高呢,由於後面的幾個關鍵概念,用的都是這個邊緣。ide

3. 漸變顏色

跟線性漸變同樣,一組顏色設定表示漸變過程。沒什麼好講的,後面將統一用[red, #fff 99%, blue]這個漸變組合,表示從紅色變換到白色,最後以一個1%藍色結束,方便查看邊緣。flex

用法

background-image:radial-gradient(形狀 尺寸 at 中心位置,初始顏色,顏色+);
複製代碼

以最簡單的用法radial-gradient(red, blue)來講,實際上是下面的簡寫spa

radial-gradient(ellipse farthest-corner at center center, red 0, blue 100%)
複製代碼

表明的意思是:橢圓輻射 邊緣在最遠的角 中心點位置在圖片中心,紅色開始,藍色結束3d

最簡單用法

其中藍色橢圓邊緣是我加上去的,實際看不見,附代碼:code

.radial {
  background: gold;
  background-image:
    radial-gradient( red, blue)
  ;
  background-size: 400px 200px;
  background-position: center center;
  background-repeat: no-repeat;
  height: 300px;
}
複製代碼

語法解析

1. 形狀

ellipse | circlecdn

默認是ellipse橢圓。blog

2. 尺寸

  1. closest-side | closest-corner | farthest-side | farthest-corner
  2. 寬度,高度

第一種,預設值

第一種是用系統的四種預設值圖片

四種預設尺寸

默認值是farthest-corner。 經過上圖咱們能夠看到

  • closest-side 表示其邊緣正好貼合最近的兩個邊(左邊和上邊)
  • closest-corner 表示其邊緣正好貼合最近的那個角(左上角)
  • farthest-side 表示其邊緣正好貼合最遠的兩個邊(右邊和下邊)
  • 默認值 farthest-corner表示其邊緣正好貼合最遠的角(右下角)

附代碼:

.App {
  display: flex;
  flex-wrap: wrap;
}
.radial {
  border: 1px solid gray;
  box-sizing: border-box;
  background: gold;
  background-size: 400px 200px;
  background-position: center center;
  background-repeat: no-repeat;
  height: 300px;
  width: 50%
}

.closest-side {
  background-image:
    radial-gradient(closest-side at 100px 50px, red, #fff 99%, blue)
  ;
}
.closest-corner {
  background-image:
    radial-gradient(closest-corner at 100px 50px, red, #fff 99%, blue)
  ;
}
.farthest-side {
  background-image:
    radial-gradient(farthest-side at 100px 50px, red, #fff 99%, blue)
  ;
}
.farthest-corner {
  background-image:
    radial-gradient(farthest-corner at 100px 50px, red, #fff 99%, blue)
  ;
}
複製代碼

第二種 固定值

第二種是用寬高來設置,就像設置普通元素width,height那樣使用,沒什麼好講的。

設置寬高

代碼

radial-gradient(ellipse 100px 70px at 100px 50px, red, #fff 99%, blue)
複製代碼
radial-gradient(ellipse 80% 50%  at 100px 50px, red, #fff 99%, blue)
複製代碼

爲何使用coner也能夠肯定橢圓的形狀?

closest-corner 和 farthest-corner 這兩個預設尺寸,很奇怪,只知道中心點,和邊緣的一個點(最遠角或最近角),按道理來講,是能畫無數個橢圓的,那瀏覽器究竟是怎麼肯定橢圓尺寸的呢?這個真的真的真的想了很久,最後我猜想的是:瀏覽器先按照closest-side肯定橢圓的寬高比例,再進行縮放到角上。

3. 中心位置

就是肯定橢圓中心的位置,基本上你可用於position的值類型,均可以用做這裏

4. 漸變顏色組合

沒什麼好講的,就是一組顏色和位置構成一個漸變。

注意

1. 漸變是個background-image

只要是漸變(linear-gradient或者radial-gradient),就會被處理成一張圖片,因此能夠用於背景圖片的設置,基本均可以用於這裏,例如背景圖片尺寸,位置,repeat等等。

最後,來加很是簡單的背景

一塊桌布

桌布
代碼

.radial {
  border: 1px solid gray;
  box-sizing: border-box;
  background-repeat: no-repeat;
  width: 400px;
  height: 400px;
  background-image:
    repeating-radial-gradient(circle at left -200px, rgba(255, 0, 0, .5) 0 10px, transparent 0 20px),
    repeating-radial-gradient(circle at right -200px, rgba(0, 255, 0, .5) 0 10px, transparent 0 20px)
  ;
}
複製代碼

一個月亮

一個月亮

代碼:

.radial {
  border: 1px solid gray;
  box-sizing: border-box;
  background-repeat: no-repeat;
  width: 400px;
  height: 400px;
  background-color: #000;
  background-image:
    radial-gradient(circle 300px at -90px -90px, #000 0 85%, transparent),
    radial-gradient(circle 200px at left top, #fff 0 99.9%, transparent)
    
  ;
  background-size: 300px 300px, 200px 200px;
}
複製代碼
相關文章
相關標籤/搜索