登录  /  注册
CSS秘密花园: 通过模糊来De-emphasize(去强调)_html/css_WEB-ITnose
php中文网
发布: 2016-06-21 08:51:46
原创
832人浏览过

《 CSS Secrets 》是 @Lea Verou 最新著作,这本书讲解了有关于CSS中一些小秘密。是一本CSSer值得一读的一本书,经过一段时间的阅读,我、@南北和@彦子一起将在W3cplus发布一系列相关的读后感,与大家一起分享。

在上一节的“通过调节亮度去强调”中 ,我们看到了通过调节亮度来让Web APP上的一些部分de-emphasize的方法,使用了一个半透明的黑色覆盖层。但是,当页面上有很多东西的时候,我们需要调暗很多,才可以为其上的文本提供足够的对比度,或是把用户的注意力转移到突出显示的盒子上或其它元素上边。还有一种更优雅的方式,如下图所示,是除了调光之外(或者直接不要调光)还把其它的所有东西都模糊。这看起来更真实,因为它模仿了我们看对象的视觉创建了一个深度,也就是当我们专心看物理上离我们近的东西时的视线。

游戏网站 polygon.com 提供了一个非常棒的示例,通过模糊对话框后面的所有东西,把用户的注意力集中到对话框上。

但是,这个效果要实现的话却不是那么容易。在 滤镜效果 出现之前,这几乎是不可能实现的,即使是有 blur() 滤镜,要实现起来也很困难。我们要怎么应用模糊滤镜呢,如果我们想要把它应用到除了某个元素之外的所有东西上呢?如果我们把它应用给 元素,页面上的所有东西都会被模糊,包括我们希望吸引用户注意力的元素。这和我们在第四章第四节中碰到的问题非常相似,但在这里我们不能应用相同的解决方案,因为所有东西都在我们的对话框后边,而不仅仅是一个背景图片。我们怎么做呢?

解决方案

我们需要额外的HTML元素来完成这个效果:我们需要把我们页面上的所有东西包裹在一个元素中,除了那个我们不想要让它变模糊的元素,这样我们才可以对它应用模糊。

元素非常适合,因为:它不仅可以包裹页面的主要内容(对话框通常不是主要内容),还可以让我们同我们想要的样式挂钩。HTML标签如下:

Bacon Ipsum dolor sit amet…
O HAI, I’m a dialog. Click on me to dismiss.
登录后复制

我们假设所有的

元素都是初始情况下隐藏的,任何时候都是最多只有一个可见。

你可以在上图中看到它的最终效果。然后,在我们每次想要让对话框出现,并给它们应用模糊滤镜的时候,我们需要给

元素应用一个类,如下:

main.de-emphasized {    filter: blur(5px);}
登录后复制

如下图所示,这已经是一个很大的进步了。

但是,现在模糊应用得非常快,看起来有些不自然,感觉是比较尴尬的用户体验。因为CSS滤镜可以应用动画效果,我们可以在模糊页面时应用一个平滑的过渡:

main {    transition: .6s filter;}main.de-emphasized {    filter: blur(5px);}
登录后复制

把这两种de-emphasizing效果(调光和模糊)结合起来使用是一个不错的主意。一种方法是使用 brightness() 和/或 contrast() 滤镜:

main.de-emphasized {    filter: blur(3px) contrast(.8) brightness(.8);}
登录后复制

你可以在下图看到结果。

通过CSS滤镜调光意味着,如果它们不被支持的话,没有降级。所以通过其它方法来实现调光效果可能会更好,也可以把它作为一个降级(如,我们在上一节中看到的 box-shadow 方法)。这还可以帮我们解决光圈效应的问题,如上图的边缘。在下图中我们使用了一个阴影用于调光,这个问题就解决了。

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

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学