4-3 视觉效果 毛玻璃效果_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:20:28
原创
1413人浏览过

知识储备

1.filter:blur() css3模糊滤镜


这个效果很有趣哦。先来看看效果图吧

毛玻璃效果

效果实现

我们先来看看html结构吧,本书作者采用了blockquote结构来展示,因为对其不是特别熟悉,于是用p标签来代替

示例代码:html

立即学习前端免费学习笔记(深入)”;

<div class="mytest">     <p>"The only way to get rid of a temptation is yield to it.Resist it,and your soul grows sick with longing for the things it has forbidden to itself."             <br/>Oscar Wilde,The Picture of Dorian Gray      </p></div>
登录后复制

css因为是背景图片(无法撑开容器),必须设置其容器大小

.test{     position: relative;    width: 400px;    height: 250px;   margin: 0 auto;  background: url("锥头螳螂.jpg") center;  background-size: cover;}
登录后复制

设置文字p容器(这里我称呼它为玻璃) 垂直/水平 居中

.test p{    width: 330px;    padding: 15px;   //设置文字左右/垂直居中  position: absolute;  left: 50%;    top: 50%;   transform: translate(-50%,-50%);   margin: 0;   //取消p标签的margin  background: hsla(0,100%,50%,.6);  //设置其背景色  color: white;   border-radius: 3px;   overflow: hidden;  //下面具体分析其作用}
登录后复制

设置伪元素来模拟毛玻璃的效果

.test p::before{     position: absolute;    left: 0;  top: 0;  bottom: 0;  right: 0;      content: '';    background: url("锥头螳螂.jpg");   background-size: cover;     margin: -20px;   //!!这个后面会说明   z-index: -1; //!!这个后面会重点说明   -webkit-filter: blur(20px);   filter: blur(20px);}
登录后复制

于是乎,看完一大堆代码还是很难受的。我们整理一下思路

1.我们设置了父容器来显示图片

2.我们设置了p标签,并将玻璃先生(p标签)水平/垂直居中,并给玻璃先生一点半透明的背景色效果:

半透明背景

3.上面的效果还不是我们想要的,上面的半透明色影响到了我们去阅读文字于是我们设置了一个伪元素来制造一点的效果我们先来加个滤镜,并设置和div容器一样的背景图片

background: url("锥头螳螂.jpg") no-repeat center;-webkit-filter: blur(5px);filter: blur(5px);
登录后复制

其次设置z-index=-1,防止覆盖文字

但是,还有一点瑕疵---模糊程度越到边缘越不明显

观察看到,模糊程度越到边缘越不明显

火龙果写作
火龙果写作

用火龙果,轻松写作,通过校对、改写、扩展等功能实现高质量内容生产。

火龙果写作 106
查看详情 火龙果写作

于是作者非常巧妙地利用

margin: -20px;
登录后复制

来扩大模糊半径,同时做到和背景图片的重合这里很重要,所以请注意看!!!!

我们先来解释模糊半径

扩大的模糊半径(超出了父容器)

于是在玻璃先生(p标签)的样式里设置

overflow:hidden
登录后复制

再看看效果

理想的模糊效果

那么我们来说第二点,这里需要一点点计算,也是这个效果的约束之一我们去掉滤镜,来看看伪元素背景图和div容器背景图是否重合

明显不重合的背景

虽然模糊后,我们不易察觉,但有时我们需要一个微弱的模糊滤镜的时候很容易被察觉,来查查原因!思考一番,发现伪元素和div背景大小不一致,背景图缩放不同,产生了错位。了解原因后,我们总结一下:

1.我们需要让div容器和伪元素宽度一致2.我们不希望div容器因为让图片产生横向的缩放

计算一下:伪元素宽度330px+2x内距15px+2x伪元素外距20px = 400px,正好是div容器宽度,我们的错位也消失了。(这里margin起到了调节的效果)

4.我们加回滤镜,效果已经很逼真了,但是貌似我们的毛玻璃和背景色融在了一起,所以我们在玻璃先生(p标签)中加了背景色(这里的颜色需要与背景色有较大的色差才明显)

background: hsla(274, 100%, 90%, 0.2);
登录后复制

并在我们的伪元素中加入上一节学到的滤镜

mix-blend-mode: luminosity;
登录后复制

大功告成,我们实现了效果

可以尝试一下不同的滤镜效果哦

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号