Skip to content

通过阴影来弱化背景

效果

Element ui 上的对话框,会有一层半透明背景

两层 html 通用方案

通过定义两层 html,一层用于产生遮挡背景,一层用于创建对话框

css
.overlay { /* 用于产生遮挡背景 */
    position: fixed;
    top: 0; right: 0; bottom: 0; left: 0;
    background: rgba(0, 0, 0, .6);
}
.lightbox { /* 用于创建对话框 */
    position: absolute;
    z-index: 1;
}

box-shadow 方案

优点:只需一个 html 结构即可解决

缺点:只能再视觉上引导注意力,无法阻挡鼠标交互行为

1vmax 相当于 1vw 和 1vh 两者的最大值

css
.box {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 200px;
    height: 100px;
    background: white;
    box-shadow: 0 0 0 50vmax rgba(0, 0, 0, .8); /* 产生遮挡背景 */
}

通过模糊来弱化背景

blur 方案

需要一层 HTML 把除弹窗外的所有内容包裹起来,一般放在 main

然后对其使用模糊滤镜

html
<main>主要内容...</main>
<div class="dialog"></div>
css
main {
    filter: blur(3px);
}

配合上阴影,效果十分好看