前端(vue)入門到精通課程,老師在線輔導:聯(lián)系老師
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用
(學習視頻分享:vuejs入門教程、編程基礎視頻)
同學們大家好,作者又來輸出內(nèi)容了,本文的主要內(nèi)容是布爾運算??赡懿簧傩』锇閭兊谝环磻窃蹅?Javascript
中的 true
和 false
,是的沒錯,它們都是布爾值,但是布爾運算卻遠不止如此。作者將為同學們介紹布爾運算在計算機圖形學以及前端開發(fā)中的應用。為什么突然想分享布爾運算呢?這源自于作者維護的 Varlet 組件庫
最近收到了一個組件 PR (是一個 Result
結果組件,用于展示一些結果信息),它的組件動畫可以算是布爾運算比較不錯的應用了,我們先看組件效果。
數(shù)學中的布爾運算
作者的數(shù)學水平還停留在九年義務教育水平,作者沒有自信能夠講清楚,就不誤人子弟了,對這方面感興趣可以去查下維基百科。
程序員眼里的布爾運算
布爾運算是一種數(shù)學運算,它可以用來對邏輯值(true
或 false
)進行操作,布爾運算包括與(AND)、或(OR)、非(NOT)、異或(XOR)和否定(NAND)。這些運算符可以用于構建邏輯表達式,并通過計算得出一個邏輯值。例如,如果你想要確定兩個條件(A 和 B)是否都為真,你可以使用與(AND)運算符,這樣就可以得出表達式“A AND B”的邏輯值。
圖形學中的布爾運算
在圖形學中,布爾運算可用來對幾何形狀進行操作,并得出一個新的幾何形狀。例如,可以使用布爾運算來執(zhí)行幾何圖形的交集運算,即找出兩個圖形重疊部分的形狀。也可以使用布爾運算來執(zhí)行并集運算,即將兩個圖形合并為一個圖形。布爾運算還可以用來執(zhí)行差集運算,即從一個圖形中減去另一個圖形。這些操作有助于創(chuàng)建復雜的圖形,并為計算機圖形學提供了基礎。在前端開發(fā)中,我們也可以利用這種思想去構造許多圖形和動畫效果。在 PPT 以及一類圖形設計軟件中也有著廣泛的運用。
(PS: 圖片來自于互聯(lián)網(wǎng),如有版權問題聯(lián)系我,必刪,僅用作圖解之用)
前端開發(fā)時常用的套路
上面介紹了很多思想,接下來作者將介紹如何將這些思想應用到我們的工作中。
通過多個圖形組合成新的圖形
我們將多個 DIV
(下文統(tǒng)稱作圖形) 進行拼合,可以得到一個全新的圖形,我們可以通過絕對定位的方式使多個圖形進行堆疊。
三個小球變成了一朵小云彩~
通過另外一個圖形實現(xiàn)剪除效果
我們可以利用一個特殊的圖形,并把它設置成和背景一樣的顏色,比如下文的例子是白色(為了讓小伙伴們看清楚先設置成了灰色),使其可以與背景融為一體,并提高它的層級,以起到遮擋作用??雌饋砭拖袷菆D像翦除一樣。
修剪之后好多了。然后再如法炮制另外一朵云,給個偏移再加點透明度,透明度的使用也同樣重要,作者一直認為前端一半是技術,一半是藝術,細節(jié)決定了結果。
附上推演動畫。
通過 overflow: hidden 實現(xiàn)剪除效果
我們可以通過將容器設置為 overflow: hidden
,然后將容器內(nèi)的元素通過偏移推出容器外,來達到剪除效果,比如我想做一個葉子的形狀,我可以使用兩個球,并將他們推出容器,這樣我們就得到了兩個一半的葉子。
然后我們對得到的形狀進行組合,組合成一個完整的葉子。
然后依舊是復制,旋轉,加透明度。
我們將每片葉子的左半部分的元素背景染上顏色可以更直觀的看清楚目前得到的圖案的結構
依舊附上推演動畫。
通過讓元素動起來,實現(xiàn)動態(tài)的剪除效果
這里就要聊一下關于文章開頭提到的 Result
組件了,它的動畫實現(xiàn)原理本質上也是通過上文提到的利用圖形進行遮擋剪除。
這是第一塊擋板,它是老實孩子,老老實實待在家里。它的層級很特殊,它能擋住深綠色的部分,但是擋不住淺綠色的部分。這是因為利用了子元素絕對定位始終可以對父元素進行覆蓋的原理,這里就不展開了。有興趣的小伙伴可以去看源代碼。
這是第二塊擋板,注意這個第二塊擋板是帶了幀動畫的,它會一邊旋轉,一邊位移,在它瘋狂走位之后,憑借著與第一塊擋板的配合遮擋,外環(huán)的顏色看起來像是慢慢被填充起來了一樣。
然后就是對勾的動畫,這個動畫沒什么難度,就是兩根棍子改變了下尺寸,這里就不贅述了。
(學習視頻分享:vuejs入門教程、編程基礎視頻)