成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CSS 穿墻術!太強了

開發 前端
今天給大家分享 CSS 中一個神奇的屬性:filter[1],為什么說它神奇?正如我標題所說的,我突然發現它能幫我們輕松實現 穿墻特效。

大家好,我是 ??ConardLi??,今天給大家分享 CSS 中一個神奇的屬性:filter[1],為什么說它神奇?正如我標題所說的,我突然發現它能幫我們輕松實現 穿墻特效,類似這種的??

圖片

gif錄制略有失真

看起來就跟我們在科幻電影里看到的經過一個穿梭門時的效果一樣,真的很酷!然而這個效果對于開發者來說毫無難度,因為只設置了兩個屬性

從這個例子引出的 CSS 中超級牛逼的 ??filter?? 屬性,到底還有哪些牛逼屬性呢?一起來了解一下!

filter 支持的屬性

借用了一下 MDN 上的例子,??filter?? 一共支持以下這些屬性:

filter: blur(5px);
filter: brightness(0.4);
filter: contrast(200%);
filter: drop-shadow(16px 16px 20px blue);
filter: grayscale(50%);
filter: hue-rotate(90deg);
filter: invert(75%);
filter: opacity(25%);
filter: saturate(30%);
filter: sepia(60%);

這些屬性既可以單獨用,也可以組合使用,例如:

filter: contrast(175%) brightness(3%);

ps: 屬性組合使用時可能有奇效!

案例

本文就介紹一些神奇的案例吧,大概率不會講清楚每個屬性的原理,因為我也不是很清楚

blur

??blur?? 屬性平時用的還是挺多的,主要是做高斯模糊的,最近幾年特別火的毛玻璃效果就可以通過這個實現:

<style>
.blur {
width: 400px;
height: 400px;
border-radius: 10px;
background: rgba(255, 255, 255, 0.5);
position: relative;
}

.blur::before {
content: "";
position: absolute;
inset: 0 0 0 0;
background: inherit;
filter: blur(10px);
}
</style>

<div class="blur"/>

效果如下:

圖片毛玻璃

其實這種毛玻璃效果并不是太好,可能達不到 UI 的要求,想要效果好的毛玻璃,可以用 ??backdrop-filter?? 實現,但后者沒有前者兼容性好

圖片

blur

圖片

backdrop-filter

brightness

??brightness??? 屬性是用來修改亮度的。值可以是百分比,也可以是數值(??0.5 = 50%???),默認值是 ??1???,但不能是負數。當值越接近 ??0???,畫面越黑,當等于 ??0?? 時,整個畫面幾乎就成純黑的了;值理論上可以趨于無限大,當大到一定值時,畫面就幾乎成純白了

能用來干啥呢?有一個非常常見的效果想必大家都看過:

圖片

不知道你們當時看到這個效果時,腦海里有沒有想過該如何實現?哈哈,其實一個屬性就夠了!

<style>
.brightness {
width: 100px;
height: 100px;
border-radius: 8px;
cursor: pointer;
background: #333;
font-size: 45px;
}

.brightness:hover .icon {
filter: brightness(1.3);
}
</style>

<div class="brightness">
<img src="apple.png" class="icon"/>
</div>

contrast

??contrast?? 可以用來調整圖像的對比度,這個詞有些專業,設計師是經常接觸的,用簡單易懂的話來講,對比度 = 圖像中 最白的色值 / 最黑的色值,按照這個公式又可以理解為:

  • 對比度越大,白色越強(亮)、黑色越弱(暗),圖像越白;
  • 對比度越小,白色越弱(暗)、黑色越強(白),圖像越黑;

??contrast()??? 的值可以寫百分比,也可以寫數值(??0.5 = 50%???),默認值是 ??1??,該值可以無限大,那樣畫面就會更亮,但不能為負數

簡單了解了概念,實戰一下看看效果:

圖片圖片

可以看到,值大于 0 且小于 1 時,畫面被蒙上了灰色的蒙層;值大于 1 時,畫面中很多光亮元素更亮了,而很多暗黑元素就更黑了

這個屬性看起來沒啥用,既不能讓圖像更有畫面感,又不能讓圖像更精致,是吧?我也這么覺得!但要知道 ??contrast??? 和 ??brightness?? 兩個屬性跟 UI 設計是強相關的,這讓我想到了 PS 里的一個圖像調整,我切換到英文版的 PS 給大家看看:

圖片

正好就對應了 PS 中圖像調整的兩個設置屬性值

大家都知道,在講到 前端性能優化 時,其實能夠感知到的最大優化就是在于 圖片,其它的優化點的 ROI 幾乎都沒圖像優化來得高

那么有沒有可能:用 PS 降低圖像的亮度、對比度,以此來降低圖片的質量,再用 ??contrast??? 和 ??brightness?? 來提升圖像的亮度、對比度,以此來恢復圖片原有效果呢?

先來看看降低圖片的亮度和對比度能否降低質量。為此我特地找了個高達 ??4M?? 的高清圖:

圖片

高清原圖

然后再用 PS 適當降低其亮度和對比度,一定要選擇 "舊版",因為只有這種模式下的亮度、對比度的優化規則跟我們 CSS 的類似

圖片

看一下修改后的圖片大小

圖片

對比度 -55

可以看到隨便調整了一些屬性,圖片大小大約減少了 ??1M??

那能否再恢復成原來圖片的效果和質量呢?

在控制臺微調屬性:

filter: brightness(1.2) contrast(1.7);

得到結果如下:

圖片

可以看到幾乎是沒啥差別,而且肉眼看上去圖像的損耗我覺得也是可接受范圍內的,反而覺得還比原圖更有畫面感,可能這就是對比度的魔力吧!

這僅僅是降低了一點點對比度的效果,圖片體積下降了 ??25%??? 左右,先不討論到底能夠極致優化多少圖片的大小,但至少 ??25%?? 的優化空間已經很 nice 了

另外上文提到了 filter 的有些屬性組合使用會有奇效,其中就包括 ??contrast???,它和 ??blur?? 一起用就能實現本文開頭提到的 穿墻效果

<style>
body {
width: 100vw;
background-color: black;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}

.container {
width: 100px;
height: 100px;
border: 4px solid aquamarine;
background-color: #222;
overflow: hidden;
border-radius: 50%;
font-size: 36px;
filter: blur(6px) contrast(6); /* 主要靠這行代碼 */
display: flex;
justify-content: center;
align-items: center;
}

.box {
width: 1em;
height: 1em;
transform: translate(0px, 0px);
background-color: aquamarine;
animation: move 2s linear infinite;
}

@keyframes move {
from {
transform: translateX(-100px);
}

to {
transform: translateX(100px);
}
}
</style>

<div class="container">
<div class="box"></div>
</div>

這樣就實現了:

圖片

再次感嘆 CSS 牛逼

drop-shadow

??drop-shadow??? 能夠給圖像設置陰影效果,使用方式其實跟 ??box-shadow??? 一樣,區別就是:??drop-shadow??? 能夠識別圖像中的透明元素,給圖像內容的每個邊打上引用;??box-shadow?? 只能給元素整個輪廓加陰影效果。用一張圖來展示它倆的區別:

圖片

grayscale

國內但凡遇上一些社會性的天災人禍,影響比較大的,很多網站都會將頁面置灰,表示哀悼。那時候有很多人在分析 "網頁置灰" 這個功能該如何實現,其實用 filter 的 ??grayscale?? 實現是最簡單快速的了

咱們隨便找個網頁,就拿網易云舉例吧,先看正常頁面的效果:

圖片

我們給它的 ??body?? 加上置灰屬性:

body {
filter: grayscale(1);
}

頁面置灰的效果就完成了

圖片

hue-rotate

??hue-rotate?? 用于調整元素的色相,色相的概念可以在 HSL 中看到,即:

  • H:色相
  • S:飽和度
  • L:亮度

那改變色相就如下圖的過程一樣:

圖片

??hue-rotate??? 的值的單位是角度(??deg???),每 ??360deg?? 一個變換周期

這有啥用呢?直播間的點贊,狂按時會有很多的漂浮物出來,比如:

圖片

我們可以通過修改 ??filter: hue-rotate(0deg)?? 的值來改變每個愛心的顏色

這里我又想到了另外一個 CSS 屬性,那就是 ??counter-reset???,用其初始化一個計數器,然后用 ??counter??? 函數拿到當前計數賦值給 ??hue-rotate??,這樣是不是就能實現顏色自動變化了?(當然了我還沒實驗過,只是在寫這篇文章時的一些想法)

invert

??invert?? 是用來翻轉圖像的,其實我也無法很好地解釋什么叫翻轉圖像,不過可以借另一個例子來給大家解釋

圖片熱成像

圖中左側是抖音最近很火的熱成像特效,可以把拍到的東西都以熱成像的效果呈現出來,右側是我們加了 ??filter: invert(1)?? 實現的效果,差不多可以看清熱成像之前的樣子是如何的

所以,相信大家都知道了,??invert?? 跟我們手機里的 顏色翻轉 的功能是一模一樣的,給大家演示一下

圖片

有時候用上 ??invert??? 這個濾鏡會有意想不到的效果哦,例如我??之前的文章??里,給我自己畫的抖音Logo加了翻轉效果,又成了一個嶄新的 Logo,話說抖音不打算請我去設計一下么?

其余

其它未提到的屬性,要不就是比較簡單,一看就知道怎么用了;要不就是平時不怎么用,比較冷門;大家感興趣的可以去 MDN 自行查看,或者自己試一下

最后

本文由一個比較有意思的效果開頭,然后去了解了相關的其它屬性,從中又延伸出來很多其它知識點,爆出了很多的想法和思考。這就是我自己的完整思路,所以寫文章出來也是這個順序和邏輯

完了,我是切圖仔的身份已經沒法隱藏了,本文好多地方需要用到 PS,得虧還記得些內容,不然這篇文章都寫不出來

希望本文對大家有所幫助~

責任編輯:龐桂玉 來源: code秘密花園
相關推薦

2015-08-28 09:19:20

智能路由器

2025-01-22 14:02:35

2024-01-30 09:21:29

CSS文字效果文字裝飾

2010-09-26 13:44:32

2025-01-13 13:47:13

2025-02-08 08:00:00

JavaDeepSeekIDEA

2021-03-04 09:31:42

開源技術 項目

2022-06-08 08:01:28

模板字面量類型

2021-08-05 16:25:37

Windows 11Windows微軟

2023-12-10 20:33:50

Redis搜索全文

2021-02-03 20:19:08

Istio流量網格

2020-12-31 11:28:09

GitLabCICD

2025-06-09 01:22:00

2022-01-26 07:18:57

ES6WeakSetMap

2025-05-14 01:00:00

Spring工具工廠類

2025-04-02 04:55:00

2023-03-06 08:03:10

Python可視化工具

2022-06-06 12:18:44

配置可視化Nginx

2024-02-01 12:43:00

模型訓練

2023-10-17 08:55:08

數據庫數據業務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜影院在线 | 欧美激情a∨在线视频播放 成人免费共享视频 | 久久久久国产精品一区 | 国产精品久久777777 | 欧美自拍第一页 | www4虎| 国产在线观看 | 国产日韩欧美 | 中文字字幕一区二区三区四区五区 | 狠狠色狠狠色综合日日92 | 国产精品毛片一区二区三区 | 中文字幕亚洲一区 | 色综合美女 | 日韩毛片免费看 | 久久网国产 | 成人性视频在线 | 91久操视频| 国产一级特黄真人毛片 | 久久久国产一区二区三区四区小说 | 欧美自拍视频 | 狠狠操狠狠搞 | 一级美国黄色片 | 久久国产区| 天天舔天天| 一本在线 | 日韩高清成人 | 视频在线日韩 | 日韩在线一区二区三区 | 国产精品久久久久久久久免费桃花 | 操操日| 毛片av免费在线观看 | 免费骚视频 | 欧美激情啪啪 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 激情亚洲 | 日韩成人影院 | av在线一区二区三区 | 玖草资源 | 亚洲精品一区二区另类图片 | 99riav3国产精品视频 | 欧美激情国产精品 |