Maoyl's blog Maoyl's blog
首页
  • 前端基础

    • HTML
    • CSS
    • CSS动画
    • JavaScript文章
    • stylus
  • 性能优化

    • 《性能优化》笔记
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《JavaScript设计模式》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架

    • Vue相关
    • React相关
  • 前端监控

    • 前端监控简介
  • 学习笔记

    • 《Vue》笔记
    • 《React》笔记
    • 小程序学习笔记
  • 后端基础

    • Nodejs
  • 学习笔记

    • 数据结构
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • 网页性能
  • 学习笔记

    • 《Git》学习笔记
    • 《Vim》学习笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

maoyln

日日行,不怕千万里
首页
  • 前端基础

    • HTML
    • CSS
    • CSS动画
    • JavaScript文章
    • stylus
  • 性能优化

    • 《性能优化》笔记
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《JavaScript设计模式》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架

    • Vue相关
    • React相关
  • 前端监控

    • 前端监控简介
  • 学习笔记

    • 《Vue》笔记
    • 《React》笔记
    • 小程序学习笔记
  • 后端基础

    • Nodejs
  • 学习笔记

    • 数据结构
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • 网页性能
  • 学习笔记

    • 《Git》学习笔记
    • 《Vim》学习笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • HTML

  • CSS

  • CSS动画

    • 毛玻璃效果
    • 冰墩墩
    • HTML+CSS 实现两只 圆锥渐变 合并形成的光台样式
    • 流光溢彩字
  • GSAP动画学习

  • JavaScript文章

  • stylus

  • 性能优化

  • 学习笔记

  • 前端
  • CSS动画
maoyln
2022-02-11

毛玻璃效果

毛玻璃效果就是模糊效果,关键是让谁模糊?对元素运用filter: blur(30px)会让它的子元素也变模糊,所以不能让class="content"元素模糊;

<html>
  <div class="poem">
     <div class="content">
         <p>
            击鼓其镗,踊跃用兵。土国城漕,我独南行。<br>
            从孙子仲,平陈与宋。不我以归,忧心有忡。<br>
            爰居爰处?爰丧其马?于以求之?于林之下。<br>
            死生契阔,与子成说。执子之手,与子偕老。<br>
            于嗟阔兮,不我活兮。于嗟洵兮,不我信兮。<br>
         </p>
     </div>
  </div>
</html>
<style>

.poem{
   /* width: 100vw;
   height: 100vh; */
   height: 35vh;
   display: flex;
   justify-content: center;
   align-items: center;
}
.poem,.content::before{
   background: url('https://cdn.jsdelivr.net/gh/maoyln/maoyl-img/blog/autumn-scenery.jpg');
   background-size: cover;
   background-attachment: fixed;
}
.poem .content{
   box-sizing: border-box;
   color:#f9f9f9;
   font-size: 20px;
   line-height: 2.2em;
   letter-spacing: 3px;
   text-align: center;
   padding: 40px 30px 35px 40px;
   background: hsla(0, 0%, 100%, 0.3);
   position: relative;
   overflow: hidden;
   z-index: 1;
}
.poem .content::before{
   content: '';
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   bottom: 0;
   filter: blur(30px);
   margin: -30px;
   z-index: -1;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

这里文本所在的区域宽高是不定的,所以没办法用一个空div做模糊效果,然后“垫”在class="content"元素下面。于是,我们想到了伪类。

将伪类的位置设置成和内容元素一样,使用负的 z-index 来把一个伪类移动到class="content"元素下层。在使用负的 z-index 来把一个子元素移动到它的父元素下层时,请务必小心:如果父元素的上级元素有背景,则该子元素将出现在它们之后。 所以为class="content"元素设置z-index: 1;使伪元素出现在父父元素(class="poem"元素)之上。

# background-attachment 设置背景图像是否固定或者随着页面的其余部分滚动

官方地址:https://www.runoob.com/cssref/pr-background-attachment.html (opens new window)

值 描述
scroll 背景图片随着页面的滚动而滚动,这是默认的。
fixed 背景图片不会随着页面的滚动而滚动。
local 背景图片会随着元素内容的滚动而滚动。
initial 设置该属性的默认值。
inherit 指定 background-attachment 的设置应该从父元素继承。

# filter 属性定义了元素(通常是)的可视效果(例如:模糊与饱和度)。

官方地址:https://www.runoob.com/cssref/css3-pr-filter.html (opens new window)

filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();
1

总结

为伪元素设置和class="poem"元素一样的背景,为了让伪元素和class="poem"元素的背景重叠,用background-attachment: fixed 。此时对伪元素使用filter: blur(30px);就形成了毛玻璃效果。

编辑 (opens new window)
#CSS动画
上次更新: 2025/04/18, 01:42:12
css生成随机颜色
冰墩墩

← css生成随机颜色 冰墩墩→

最近更新
01
GSAP动画库——如何高效写动画
04-17
02
自适应方案PxToRem
09-10
03
性能优化-requestAnimationFrame
08-10
更多文章>
Theme by Vdoing | Copyright © 2019-2025 备案号:京ICP备19058102号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式