马黑黑 发表于 2022-3-14 20:48

CSS滤镜的开始:透明与高斯模糊

本帖最后由 马黑黑 于 2022-3-14 21:24 编辑 <br /><br /><p>CSS怎么能少了滤镜?之前,我们的CSS相关演示里,用过 opacity 和 rgba() 属性方法,它们就是滤镜,前者,opacity,是从滤镜中分离出来的属性,已经独立存在,后者,rgba() 方法,其实就是RGB颜色体系里的东东,加了一个a,alpha通道的意思。<br><br></p>
<p>除了以上这些,CSS还保留有自己的滤镜,比如,filter:<br><br></p>
<p>filter: 滤镜(参数);<br><br></p>
<p>filter滤镜拥有多个滤镜“镜头”,今天我们只讲高斯模糊 blur,blur的参数是数值加单位:</p><p><br></p><p><font color="#ff0000">filter</font>:<font color="#006400"> blur(</font><font color="#0000ff">4px</font><font color="#006400">)</font>;</p><p><br></p><p>值越大,模糊度越高。filter的blur滤镜仅作用于所使用的元素即当前元素。</p><p><br></p><p>而&nbsp;backdrop-filter&nbsp;滤镜则作用于所使用的元素即当前元素及其背后所有的元素,其“镜头”与镜头参数与 filter&nbsp;一模一样:</p><p><br></p><p><font color="#ff0000">backdrop-filter</font>:<font color="#006400">&nbsp;blur(</font><font color="#0000ff">4px</font><font color="#006400">)</font>;</p><p><br></p><p>下面给出一组实例代码:</p><p><br></p><p>&lt;style type="text/css"&gt;</p><p>#papa {</p><p><span style="white-space:pre">        </span>margin: auto;</p><p><span style="white-space:pre">        </span>width: 760px;</p><p><span style="white-space:pre">        </span>height: 420px;</p><p><span style="white-space:pre">        </span>background: #000 url('/data/attachment/forum/202203/14/204611csns6tv6pzu2tpsa.jpg') no-repeat center/cover;</p><p><span style="white-space:pre">        </span>display: flex;</p><p><span style="white-space:pre">        </span>justify-content: center;</p><p><span style="white-space:pre">        </span>align-items: center;</p><p>}</p><p>#papa div {</p><p><span style="white-space:pre">        </span>margin : 0 10px;</p><p><span style="white-space:pre">        </span>padding: 10px;</p><p><span style="white-space:pre">        </span>width: 200px;</p><p><span style="white-space:pre">        </span>height: 220px;</p><p><span style="white-space:pre">        </span>border: 1px solid #000;</p><p><span style="white-space:pre">        </span>font-family: '微软雅黑', '黑体';</p><p><span style="white-space:pre">        </span>font-weight: bold;</p><p><span style="white-space:pre">        </span>font-size: 16px;</p><p><span style="white-space:pre">        </span>color: darkblue;</p><p><span style="white-space:pre">        </span>opacity: .8;</p><p><span style="white-space:pre">        </span>text-shadow: 1px 1px 2px #000;</p><p>}</p><p>#papa div:hover { opacity: 1; filter: blur(0);&nbsp; backdrop-filter: blur(0); }</p><p>.p-normal {&nbsp; }</p><p>.p-filter { filter: blur(5px); }</p><p>.p-backdropFilter { backdrop-filter: blur(5px); }</p><p><br></p><p>&lt;/style&gt;</p><p><br></p><p>&lt;div id="papa"&gt;</p><p><span style="white-space:pre">        </span>&lt;div class="p-normal"&gt;滤镜:透明&lt;br&gt;&lt;br&gt;opacity: 0.8;&lt;br&gt;&lt;br&gt;opacity也是滤镜,不透明滤镜,为1时完全不透明&lt;/div&gt;</p><p><span style="white-space:pre">        </span>&lt;div class="p-filter"&gt;滤镜:透明+模糊&lt;br&gt;&lt;br&gt;opacity: 0.8;&lt;br&gt;filter: blur(5px);&lt;br&gt;&lt;br&gt;filter滤镜仅作用于元素自身&lt;/div&gt;</p><p><span style="white-space:pre">        </span>&lt;div class="p-backdropFilter"&gt;滤镜:透明+模糊&lt;br&gt;&lt;br&gt;opacity: 0.8;&lt;br&gt;backdrop-filter: blur(5px);&lt;br&gt;&lt;br&gt;毛玻璃效果。backdrop-filter滤镜作用于自身和其下所有元素,不支持Firefox和IE。&lt;/div&gt;</p><p>&lt;/div&gt;</p><p><br></p><p>以下是上面代码的效果,为查看说明,请将鼠标指针依次移动到子元素上方,这将回复无滤镜的状况:</p><p><br></p><p><br></p><p><br></p>

<style type="text/css">
#papa {
        margin: auto;
        width: 760px;
        height: 420px;
        background: #000 url('/data/attachment/forum/202203/14/204611csns6tv6pzu2tpsa.jpg') no-repeat center/cover;
        display: flex;
        justify-content: center;
        align-items: center;
}
#papa div {
        margin : 0 10px;
        padding: 10px;
        width: 200px;
        height: 220px;
        border: 1px solid #000;
        font-family: '微软雅黑', '黑体';
        font-size: 16px;
        color: darkblue;
        opacity: .8;
        text-shadow: 1px 1px 2px #000;
}
#papa div:hover { opacity: 1; filter: blur(0);backdrop-filter: blur(0); }
.p-normal {}
.p-filter { filter: blur(5px); }
.p-backdropFilter { backdrop-filter: blur(5px); }

</style>

<div id="papa">
        <div class="p-normal">滤镜:透明<br><br>opacity: 0.8;<br><br>opacity也是滤镜,不透明滤镜,为1时完全不透明</div>
        <div class="p-filter">滤镜:透明+模糊<br><br>opacity: 0.8;<br>filter: blur(5px);<br><br>filter滤镜仅作用于元素自身</div>
        <div class="p-backdropFilter">滤镜:透明+模糊<br><br>opacity: 0.8;<br>backdrop-filter: blur(5px);<br><br>毛玻璃效果。backdrop-filter滤镜作用于自身和其下所有元素,不支持Firefox和IE。</div>
</div>

红影 发表于 2022-3-14 21:52

opacity好像用的比较多,filter第一次接触。

红影 发表于 2022-3-14 21:55

用backdrop-filter的时候,同样的设置,因为自身和其下所有元素都模糊了,效果很奇特。

小辣椒 发表于 2022-3-14 22:24

原来css可以完成PS里面的各种效果{:4_178:}

马黑黑 发表于 2022-3-14 23:27

小辣椒 发表于 2022-3-14 22:24
原来css可以完成PS里面的各种效果

没有PS那么强大
页: [1]
查看完整版本: CSS滤镜的开始:透明与高斯模糊