【CSS进阶】box
box-shadow 在前端的 CSS 编写工作想必十分常见。但是 box-shadow 除去它的常规用法,其实还存在许多不为人知的奇技淫巧。 喜欢 markdown 版本的可以戳这里 。 box-shadow 常规用法说到 box-shadow ,首先想到的必然是它能够生成阴影,所以称之为 shaodow ,简单看看它的语法: 基础属性语法
box-shadow: h-shadow v-shadow blur spread color inset; 像这样 OK,本文已经假设你对 box-shadow 有了一定的了解,在此基础上,我们再看看 box-shadow 有什么其它妙用。 box-shadow 模拟多边框通常而言,我们会给许多元素添加边框 可以看到,由内至外,这里利用 box-shadow ,设置了白色、黑色、灰色三层边框及最外层带模糊的阴影。 box-shadow 有一个参数是设置 blur 的,即是模糊的距离,在上面的例子中,即是第二重阴影 而且,元素可以设置多重阴影,并且它们存在层叠关系,离 box-shadow 最近设置的层叠优先级最高,依次递减,这个对照代码很好理解。 当然,值得注意的是:
box-shadow 模拟半透明遮罩层很多时候,我们需要用到类似下图这样的遮罩层,通过半透明遮罩层把背景调暗,凸显某些 UI 组件,提升用户体验。 常规的做法通常都会用到一个额外的元素,用作遮罩层,至少也是一个伪元素, 不考虑低版本的兼容性的话,其实用 box-shadow 也可以模拟遮罩层这种效果。 这里还有一个例子,hover 时利用配合 scale 放大元素, box-shadow 产生遮罩,聚焦用户关注视野。 Demo–戳我看看。 当然,值得注意的是:
下面再讲讲多重 box-shadow 能干啥: 多重 box-shadow 之简单图形从本质上讲,box-shadow 是将自身投影到另一个地方,在很多情况下,我们是可以利用 box-shadow 来复制自身的! 利用这个特性,我们可以用 box-shadow 制作一些简单的图形,在我的单标签图形 Demo 中,有这样一个图形: 其中的云层,就是利用了 当所有阴影的颜色都是同色的时候,就很自然变成了一朵云朵: 当然,脑洞够大的话,更复杂一点的也是可以的,来看看下面这个图形,也是由单个标签完成: 其中比较困难的是其中环绕字母 e 的那个圆以及那个切入的不规则角,看看用阴影怎么把它做出来,利用了两重 box-shadow: 嗯,当然,你问我这些图形有什么用。我觉得实用性真的不强吧,我个人而言是兴趣,从中获取到了乐趣,同时也学到了很多东西,对属性本身印象也更加深刻,遇到许多 CSS 方面的问题的时候,思路更加开阔。 更多有趣的图形,可以 戳这里 – Demo 多重 box-shadow 实现立体感这种方法运用在 text-shadow 上同样可以,可以实现文字的立体感。 运用多重 box-shadow ,不断偏移 1px ,就可以产生十分立体的感觉。 运用在按钮: 运用在文字: 多重 box-shadow 实现任意图片转换嗯,讲真~~ 我觉得这个是最有趣的。 多重 box-shadow 还能做什么呢。由于 box-shadow 的多重性,也就是 为了完成这个任务, 为此,我倒腾了许久,写了这么一个小插件,可以将任意图片转化为由 box-shadow 表示的单个 div 标签。 Demo–戳我体验一下。 如果上面的几点还有用武之地,那么这个功能我觉得除了看似厉害之外真的是毫无实用之处,上面也说了,box-shadow 是比较耗性能的,因为即便是一个 box-shadow 就先说这些吧,box-shadow 肯定还要其它的一些妙用,细心之人可以继续挖掘之。 filter:drop-shadow其实说到 box-shadow,就不得不提到另一个和它极为相似的 CSS3 新属性 当然这里我们只说 filter:drop-shadow。 filter:drop-shadow 也很好玩,本想继续长篇大论讨论下去,无奈发现 两篇非常值得一读的文章:
另外 《CSS SECRET》(CSS揭秘)这本大作也对
希望这篇文章对大家有所帮助,尤其是在对问题解决的思维层面上。 到此本文结束,如果还有什么疑问或者建议,可以多多交流,写文章不容易,觉得不错的希望大家点个推荐。 原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。 |
- 上一篇:纯CSS3打造七巧板
- 下一篇:IE8+等兼容、360调用webkit内核小记