【问题标题】:Possible to create a static lighting effect overlay using HTML/CSS?可以使用 HTML/CSS 创建静态照明效果叠加层吗?
【发布时间】:2012-08-09 08:45:28
【问题描述】:

我想知道是否可以使用 HTML/CSS 创建静态照明效果叠加层。

我拥有的是一个纯 HTML5/JS 应用程序,它包含顶部导航栏的大多数页面和一系列通过使用滑动手势转换的正文卡片。这些都是黑色背景上的灰色。

我想要完成的是在屏幕中心有一种聚光灯渐变,它只会影响页面上的 div 而不会影响黑色背景。这个聚光灯会被固定,这样当刷卡时,它会保持在屏幕的中心。

我知道我可以用聚光灯图像作为背景覆盖一个 div,但显然这会弄乱在页面上的点击/滑动。它会影响黑色背景。

有没有人做过这样的事情?

【问题讨论】:

  • 具有径向 css3 渐变的绝对定位 div 怎么样?
  • 但是如何处理对底层 div 的按钮点击和滑动手势?还是不让渐变影响黑色背景?
  • 这可能过于简单,但无论如何你可以将聚光灯内置到卡片 div 中吗?

标签: javascript html css


【解决方案1】:

简单的 CSS 解决方案(无需事件)

  • 使用聚光灯渐变创建一个全页宽度的 bg 图像。
  • 为每个 div 提供此 bg 图片,background-attachment 值为 fixed

无论每个 div 当时恰好在页面上的哪个位置,它都会充当一个窗口,通过它您可以看到聚光灯渐变的一部分。实际上,当 div 在其上方移动时,bg 图像保持固定不动。

Fiddle demo,以及与heavily-rounded corners 相同的演示。

或者,可以在 CSS 中为每个 div 赋予相同的径向渐变(也是固定的),而不是创建静态图像文件。

【讨论】:

  • 感谢您的信息,我不知道为什么我没有想到这一点。完成了您的小提琴演示以创建我想要完成的任务:jsfiddle.net/nimbus510/NAjAk
【解决方案2】:

尝试使用带有渐变的绝对定位 div。要通过该 div 事件,请使用 css 属性 pointer-events(IE 不支持)或查看该资源:http://www.vinylfox.com/forwarding-mouse-events-through-layers/

【讨论】:

  • 这解决了事件问题,但是让渐变只影响页面上的 div 而不是纯黑色背景呢?
  • 这很大程度上取决于布局。也许尝试使用 CSS Mask?
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多