亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

??
通過濾鏡實現(xiàn)圓角圓弧
使用 filter: contrast() 配合 filter: blur() 實現(xiàn)波浪效果
SVG 濾鏡,讓使用更簡單
總結(jié)一下
? ? ????? CSS ???? ?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.

?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.

Oct 18, 2022 pm 08:21 PM
css ??

? ????? CSS ??? ???? ?? ???? ??? ??? ?? ???? ???? ?? ??? ?? ??? ?? ????? ??? ??? ?? ? ????. ?? ???? ??? ??? ????.

?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.

【?? ?? ??: css video tutorial, web front-end

?? ?? ???? ???????.

???, ??? ?? ????. ??? ??? ????. :

div?{
????width:?200px;
????height:?40px;
????background-color:?#000;
}

?? ? ????? ?? ?? ?? ???? ???? ??? ??? ?? ????

?? border-radius? ???? ???. :border-radius 而已:

div?{
????width:?200px;
????height:?40px;
??+?border-radius:?40px;
????background-color:?#000;
}

好,那如果,不再是直線,而是一條曲線,希望曲線兩端,帶有圓角,像是這樣,又該怎么辦呢:

?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.

到這,基本上觸及了傳統(tǒng) CSS 的天花板,想通過一個屬性搞定這個效果是不太可能了。

當(dāng)然,有這樣一種方式,通過首尾兩端,利用兩個偽元素,實現(xiàn)兩個圓形,疊加上去:

emm,這也是一個可行的方案,主要是定位會稍微有點點麻煩。那么除了這個方式以及直接使用 SVG 外,還有沒有其他方法能夠?qū)崿F(xiàn)帶圓角的曲線?

有!在 CSS 中,我們還可以通過 filter: contrast() 配合 filter: blur() 這對組合來實現(xiàn)這個圖形。

filter: contrast() 配合 filter: blur() 的奇妙化學(xué)作用

神奇的濾鏡!巧妙實現(xiàn)內(nèi)凹的平滑圓角 一文中,其實已經(jīng)介紹過這個組合的另類用法。

經(jīng)常閱讀我的文章的小伙伴,對 filter: contrast() 配合 filter: blur() 的組合一定不陌生,上經(jīng)典的一張圖:

單獨將兩個濾鏡拿出來,它們的作用分別是:

  • filter: blur(): 給圖像設(shè)置高斯模糊效果。

  • filter: contrast(): 調(diào)整圖像的對比度。

但是,當(dāng)他們“合體”的時候,產(chǎn)生了奇妙的融合現(xiàn)象。

仔細(xì)看兩圓相交的過程,在邊與邊接觸的時候,會產(chǎn)生一種邊界融合的效果,通過對比度濾鏡把高斯模糊的模糊邊緣給干掉,利用高斯模糊實現(xiàn)融合效果。

當(dāng)然,重點來了,blur 與 contrast 濾鏡的組合不僅能用于這種融合效果,其特殊的性質(zhì)使得它們的組合可以將直角變成圓角!

先看看之前的一個例子:

首先,我們只需要實現(xiàn)這樣一個圖形:

<div>
????<div>
????????<div></div>
????</div>
</div>
.g-container?{
????position:?relative;
????width:?300px;
????height:?100px;
????
????.g-content?{
????????height:?100px;
????????
????????.g-filter?{
????????????height:?100px;
????????????background:?radial-gradient(circle?at?50%?-10px,?transparent?0,?transparent?39px,?#000?40px,?#000);
????????}
????}
}

得到這樣一個簡單的圖形:

看到這里,肯定會疑惑,為什么這個圖形需要用 3 層 div 嵌套的方式?不是一個 div 就足夠了嗎?

是因為我們又要運(yùn)用 filter: contrast()filter: blur() 這對神奇的組合。

我們簡單改造一下上述代碼,仔細(xì)觀察和上述 CSS 的異同:

.g-container?{
????position:?relative;
????width:?300px;
????height:?100px;
????
????.g-content?{
????????height:?100px;
????????filter:?contrast(20);
????????background-color:?white;
????????overflow:?hidden;
????????
????????.g-filter?{
????????????filter:?blur(10px);
????????????height:?100px;
????????????background:?radial-gradient(circle?at?50%?-10px,?transparent?0,?transparent?29px,?#000?40px,?#000);
????????}
????}
}

我們給 .g-content 添加了 filter: contrast(20)background-color: white,給 .g-filter 添加了 filter: blur(10px)

div?{
????position:?relative;
????width:?250px;
????height:?250px;
????filter:?contrast(20);
????background-color:?#fff;
????overflow:?hidden;
}
div::before?{
????content:?"";
????position:?absolute;
????top:?0;
????left:?0;
????bottom:?0;
????right:?0;
????filter:?blur(7px);
????border:?25px?solid?transparent;
????border-bottom:?25px?solid?#000;
????border-radius:?50%;
}
???, ?? ??? ? ?? ??? ??? ????, ??? ?? ??? ?? ?? ???? ?? ??? ?????

?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.

? ???? ?? ????? ???? CSS? ???? ??????. ???? ????. ??? ??? ? ??? ??? ???? ?? ????.

??, ??? ? ??? ? ?? ?? ??? ???? ? ?? ?? ???? ?? ???? ??? ????:

emm, ??? ?? ?? ??? ??????. ?? ?? ??? ?? ???? ??? ?????. ???? ? ??? SVG? ?? ???? ? ?? ???? ?? ??? ?? ?? ??? ?????

?????! CSS??? filter: Contrast()? filter: Blur()? ??? ?? ? ???? ?? ?? ????.

filter: Contrast() filter: Blur() ??? ??? ??? ??


??? ??! ???? ???? ?? ???? ???? ?? ???? ??? ?? ? ??? ?? ??? ??????. ? ?? ?? ?? ???? filter:contrast()? filter:blur()? ??? ??? ????. ??? ???? ?????: ??????????? ???? ??? ???? ?? ??? ??? ????. ??
  • ??filter: Blur(): ???? ???? ?? ??? ?????. ??
  • ??filter: Contrast(): ???? ??? ?????. ??
????? ??? '???? ?' ??? ?? ??? ??????. ????? ?? ?? ??? ?? ?? ?????. ????? ?? ??? ?? ?? ??? ?????. ?? ??? ???? ???? ??? ??? ????? ???? ???? ??? ???? ??? ?????. ??. ??????, ??? ??? ?? ???? ??? ?? ??? ??? ??? ?? ??? ??? ? ?? ?? ??? ??? ??? ???? ?? ??? ?? ???? ?? ? ??? ????! ???????? ?? ???????. ?????? ??? ?? ???? ???? ???. ??
div?{
????position:?relative;
????width:?400px;
????height:?160px;
????background:?linear-gradient(90deg,?#945700?0%,?#f49714?100%);
????
????&::before,
????&::after?{
????????content:?"";
????????position:?absolute;
????????top:?0;
????????right:?0;
????????bottom?:0;
????}
????&::before?{
????????width:?10px;
????????background-?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.:?radial-gradient(circle?at?-5px?10px,?transparent?12px,?#fff?13px,?#fff?0px);
????????background-size:?20px?20px;
????????background-position:?0?15px;
????}
????&::after?{
????????width:?15px;
????????background-?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.:?radial-gradient(circle?at?15px?10px,?#fff?12px,?transparent?13px,?transparent?0px);
????????background-size:?20px?40px;
????????background-position:?0?15px;
????}
}
div?{
????background:?radial-gradient(circle?at?20px?0,?transparent,?transparent?20px,?#000?21px,?#000?40px);
????background-size:?80px?100%;
}
????? ?? ??? ???? ?????. ??????????? ?? ? ? ???? 3?? div ???? ????? ??? ??? ????. div?? ???? ???? ????filter:contrast()? filter:blur()? ?? ?? ??? ?? ???? ?? ?????. ????? ??? ??? ???? ? CSS?? ???? ???? ?? ?? ???????. ??
<div>
????<div></div>
</div>
?? filter: Contrast(20) ? background-color: white? ??????. >, .g-filter? filter: Blur(10px)? ??????. ???????? ?? ????, ??? ?? ??? ?????. ?????????? ?? ??? ???? ???? ??? ??? ????? ????, ???? ??? ?? ???? ????????, ?????. ????Gif? ?? ?? ???? ??? ????: ?????????? ??? ??? ??? ?????: ??CodePen ?? - ???? ??? ?? ??? ???????

通過濾鏡實現(xiàn)圓角圓弧

到這里,你應(yīng)該知道如何通過直角圓弧得到圓角圓弧了。就是借助 filter: contrast() 配合 filter: blur() 的組合。

直接上代碼:

div?{
????position:?relative;
????width:?250px;
????height:?250px;
????filter:?contrast(20);
????background-color:?#fff;
????overflow:?hidden;
}
div::before?{
????content:?"";
????position:?absolute;
????top:?0;
????left:?0;
????bottom:?0;
????right:?0;
????filter:?blur(7px);
????border:?25px?solid?transparent;
????border-bottom:?25px?solid?#000;
????border-radius:?50%;
}

效果如下:

通過 Gif 看,更加直觀:

CodePen Demo -- Arc with rounded corners

使用 filter: contrast() 配合 filter: blur() 實現(xiàn)波浪效果

好了,有了上面的鋪墊,我們再來看一個有意思的。使用 filter: contrast() 配合 filter: blur() 實現(xiàn)波浪效果。

在之前,我們?nèi)绻胧褂眉?CSS,實現(xiàn)下述的波浪效果,是非常的困難的:

這種波浪效果,通常會使用在優(yōu)惠券等切圖中:

在之前,我們是怎么去做的呢?如果不切圖,使用純 CSS 的話,需要使用兩層漸變進(jìn)行疊加,大概是這樣,感受一下:

?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.

其代碼也比較復(fù)雜,需要不斷的調(diào)試漸變,使兩個徑向漸變吻合:

div?{
????position:?relative;
????width:?400px;
????height:?160px;
????background:?linear-gradient(90deg,?#945700?0%,?#f49714?100%);
????
????&::before,
????&::after?{
????????content:?"";
????????position:?absolute;
????????top:?0;
????????right:?0;
????????bottom?:0;
????}
????&::before?{
????????width:?10px;
????????background-?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.:?radial-gradient(circle?at?-5px?10px,?transparent?12px,?#fff?13px,?#fff?0px);
????????background-size:?20px?20px;
????????background-position:?0?15px;
????}
????&::after?{
????????width:?15px;
????????background-?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.:?radial-gradient(circle?at?15px?10px,?#fff?12px,?transparent?13px,?transparent?0px);
????????background-size:?20px?40px;
????????background-position:?0?15px;
????}
}

那么,如果使用 filter: contrast() 配合 filter: blur() 的話,整個過程將會變得非常簡單。

我們只需要實現(xiàn)這樣一個圖形:

這個圖形使用漸變是容易得到的:

div?{
????background:?radial-gradient(circle?at?20px?0,?transparent,?transparent?20px,?#000?21px,?#000?40px);
????background-size:?80px?100%;
}

按照上文介紹的技巧,只需要應(yīng)用上 filter: contrast() 配合 filter: blur(),就能將銳利的直角轉(zhuǎn)化成圓角。我們嘗試一下:

<div>
????<div></div>
</div>
.g-container?{
????position:?relative;
????margin:?auto;
????height:?200px;
????padding-top:?100px;
????filter:?contrast(20);
????background-color:?#fff;
????overflow:?hidden;
}

.g-inner?{
????position:?relative;
????height:?200px;
????background:?radial-gradient(circle?at?20px?0,?transparent,?transparent?20px,?#000?21px,?#000?40px);
????background-size:?80px?100%;
????filter:?blur(10px)
}

可以寫在 1 個 DIV 里面(通過元素和它的偽元素構(gòu)造父子關(guān)系),也可以用 2 個,都可以,問題不大。

得到如下所示的波浪圖形:

我們希望它波浪的地方的確是波了,但是我們不希望的地方,它也變成了圓角:

這是 filter: blur() 的一個問題,好在,我們是可以使用 backdrop-filter() 去規(guī)避掉這個問題的,我們簡單改造下代碼:

.g-container?{
????position:?relative;
????width:?380px;
????padding-top:?100px;
????filter:?contrast(20);
????background-color:?#fff;
????overflow:?hidden;
????
????&::before?{
????????content:?"";
????????position:?absolute;
????????top:?0;
????????left:?0;
????????bottom:?0;
????????right:?0;
????????backdrop-filter:?blur(10px);
????????z-index:?1;
????}
}
.g-inner?{
????position:?relative;
????width:?380px;
????height:?100px;
????background:?radial-gradient(circle?at?20px?0,?transparent,?transparent?20px,?#000?21px,?#000?40px);
????background-size:?80px?100%;
}

這樣,我們就實現(xiàn)了一份完美的波浪效果:

部分同學(xué)可能對上面的 padding-top 100px 有所疑惑,這個也是目前我所發(fā)現(xiàn)的一個 BUG,暫未解決,不影響使用,你可以嘗試將 padding-top: 100px 替換成 height: 100px。

基于這種方式實現(xiàn)的波浪效果,我們甚至可以給它加上動畫,讓他動起來,也非常的好做,簡單改造下代碼:

.g-inner?{
????position:?relative;
??-?width:?380px;
??+?width:?480px;
????height:?100px;
????background:?radial-gradient(circle?at?20px?0,?transparent,?transparent?20px,?#000?21px,?#000?40px);
????background-size:?80px?100%;
??+?animation:?move?1s?infinite?linear;?
}

@keyframes?move?{
????100%?{
????????transform:?translate(-80px,?0);
????}
}

通過一個簡單的位移動畫,并且使之首尾幀一致,看上去就是連續(xù)的:

完整的代碼,你可以戳這里:CodePen Demo -- Pure CSS Wave

SVG 濾鏡,讓使用更簡單

這就結(jié)束了嗎?沒有!上述雙濾鏡的組合固然強(qiáng)大,確實還是有一點麻煩。

再補(bǔ)充一種 SVG 濾鏡的方案。這里,對于大部分場景,我們可以借助 SVG 濾鏡,在 CSS 中一行引入,實現(xiàn)同樣的功能。

看這樣一個 DEMO,我們有這樣一個三角形:

我們想通過它得到一個圓角三角形:

借助 SVG 濾鏡,其實也可以快速達(dá)成,省去了上面還需要疊加一個 filter: contrast() 的煩惱:

<div></div>
<svg>
????<filter>
??????<fegaussianblur></fegaussianblur>
??????<fecomponenttransfer>
??????????<fefunca></fefunca>
??????</fecomponenttransfer>
????</filter>
</svg>
div?{
????????border:?60px?solid?transparent;
????????border-left:?120px?solid?#f48;
????????filter:?url(#blur);
}

效果如下:

是的,利用 filter: url(xxx) 可以快速引入一個定義好的 SVG 濾鏡。也可以這樣,直接嵌入到 URL 中:

div?{
????????border:?60px?solid?transparent;
????????border-left:?120px?solid?#f48;
????????filter:?url("data:?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????./svg+xml,%3Csvg?xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter?id='blur'?color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur?stdDeviation='10'/%3E%3CfeComponentTransfer%3E%3CfeFuncA?type='table'?tableValues='0?0?10'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3C/svg%3E#blur");
}

完整的代碼,你可以戳這里:CodePen Demo -- triangle with rounded corners and shadow

總結(jié)一下

本文介紹了一種使用 filter: contrast() 配合 filter: blur() 的方式,將直角圖形變?yōu)閳A角圖形的方式,在一些特定的場景下,可能有著妙用。同時,在很多場景下,可以使用 SVG 濾鏡簡化操作。

不過,這種方式也有幾個小缺陷:

  • 使用了 filter: contrast() 之后,圖形的尺寸可能相對而言會縮小一點點,要達(dá)到固定所需尺寸的話,要一定的調(diào)試

  • 此方式產(chǎn)生的圖形,畢竟經(jīng)過了一次 filter: blur(),放大來看圖形會有一定的鋸齒,可以通過調(diào)整 contrast 和 blur 的大小盡可能的去除,但是沒法完全去掉

當(dāng)然,我覺得這兩個小缺點瑕不掩瑜,在特定的場景下,此方式還是有一定的用武之地的。

原文地址:https://www.cnblogs.com/coco1s/p/16516585.html

作者:ChokCoco

更多編程相關(guān)知識,請訪問:編程視頻!!

? ??? ?? ??? ?????! CSS ??? ???? ?? ???? ?? ?? ??? ??? ??? ?????.? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1597
29
PHP ????
1488
72
???
Accent-Color ??? ?????? Accent-Color ??? ?????? Jul 26, 2025 am 09:25 AM

Accent-Color? CSS?? ???, ??? ?? ? ????? ?? ?? ??? ????? ??? ??? ???? ? ???? ?????. 1. ???? ??? ?? ??? ????? ???? ?? ?? ?? ???? ??? ??? ?? ??? ?? ?????. 2. ???? ??? type = "checkbox", type = "radio"? type = "range"? ?? ??? ?????. 3. Accent-Color? ???? ??? ??? ???? ?? DOM ??? ??? ?? ???? ??? ? ????. 4. ????? ??? ?????? ???? ??? ????? ?? ?????????. 5. Accent-col? ??????

'?? ??'??? ???? ?? ??? ?????? '?? ??'??? ???? ?? ??? ?????? Jul 26, 2025 am 07:35 AM

Thevertical-alignpropertyincssalignsinlinlineortable-cellelementsically

CSS? SCS? ????? ??? ?????? CSS? SCS? ????? ??? ?????? Jul 27, 2025 am 01:58 AM

installDartSassVianpMafterInstallingNode.jsusingnpMinstall-gsass.2.compilescsStocsSusingTheCommandSassInput.scsoutput.css.3. useAsass--watchinput.scssoutput.csstoauto-compileonsave.4.watchentirefolderswithsass-watchscss : css.5.usepartialswith_prefixfo

CSS?? ??? ??? ???? ??? CSS?? ??? ??? ???? ??? Jul 27, 2025 am 04:25 AM

CSS? ??? ??? ????? ?? ??? ???????. 1. ?? ??? ???? ??? ??? ???? ?? ?? (? : ???), 16 ? ?? (? : #FF0000), RGB ? (? : RGB (255,0,0)), HSL ? (? : HSL (0,100%, 50%) ? RGBA ?? HSLA (RGBA) (255,0.0); 2. H1 ~ H6 ??, ?? P, ?? A? ?? ???? ?? ? ?? ??? ??? ?? ? ? ???? (A : A : ??, A : ??, A : Active, Div, Span ?; 3. ???

CSS ?? ??? CSS ?? ??? Jul 26, 2025 am 09:30 AM

CSStransitionSenablesmoothPropertyChangeswithminimalCode, ???? FORVEREFFECTSANTERCTIVEFEEDBACK.1. USETHESYNTAXTRANITION : PropertyDurationTiming-FunctionDelay; TodeFinetransitions, Liketransition : Background-Color0.3Sease0.1s; .2.specifytransition-pro

???? ?? CSS? ???? ??? ???? ?? CSS? ???? ??? Jul 27, 2025 am 02:47 AM

USEAUTOMATEDTOOLSPURGECSSORUCNSSCANANDREMOVEUNUSEDCSS; 2. INTEGRATEPURGINGINTOYOURBUILDPROCESSVIAWEBPACK, vite, ortailwind'ScontentConfiguration; 3.auditcsSusagewithchromedevToolsCovereAvoidtoidrestyledingneatiledneatiled? 3.auditcsSusage

CSS ?? ?? ?? CSS ?? ?? ?? Jul 26, 2025 am 08:08 AM

THECSSFILTERPROPERTYAPPLIESUALEFFECTSTOELMENTESSDIRECTINTSSSSDIRECTINGSSS, 1.BLUR () FORSOFTENIGESSORCREATINGDEPTH, 2.BRIGHTNESS () TOADJUSTLINGENSSERDERDARKNESS, 3.CONTRAST () TONHANCEORDUCEVISUALDISCTION, 4.GRAYSCALE () FORLACK-and-WITE

?? CSS ??? ????? ?????? ?? CSS ??? ????? ?????? Jul 27, 2025 am 04:24 AM

? ???? CSS ??? ??? ?? ?? ??? ?? ? ??? ?? ????. 1. ?? (px)? ?? ? ???? ?? ??? ???? ? ????? ?? ? ????? ????? ????. 2. ??? (%)? ?? ????? ?? ???? ???? ????? ????? ???? ??????? ?????. 3.EM? ?? ?? ??? ??????, REM? ?? ?? ??? ??????, ?? ?? ? ?? ?? ??? ?????. 4. ??? ?? (VW/VH/VMIN/VMAX)? ?? ??? ?? ???? ?? ?? ?? ? ?? UI? ?????. 5. ??, ??, ?? ? ?? ?? ???? ???? ??, ?? ?? ????? ? ????, ?? ???? ???? ? ??? ??? ??????. ??? ??? ???? ??? ??? ???? ?? ?? ???? ? ????.

See all articles