【问题标题】:Can you add a non-square drop shadow to PNG content with CSS? [duplicate]你能用 CSS 给 PNG 内容添加一个非方形的阴影吗? [复制]
【发布时间】:2011-09-20 10:40:01
【问题描述】:

是否可以对 PNG 的内容进行投影?

不是正方形,而是一个对象投影
作用于 PNG 的非透明内容。

【问题讨论】:

  • 在 PNG 本身中执行此操作可能比在 CSS 中执行此操作更好。
  • 没有那么多“更好”,但这只是唯一的方法。如果可能的话,很酷。
  • @Wesley:Super Duper Canvas Power™ 完全可以实现。
  • @ChrisMorgan: 到.png?有链接吗?我很想看看!
  • @easwee IE CSS 中的 DX 过滤器是人类的憎恶。

标签: css image transparency shadow css-filters


【解决方案1】:

绝对有可能。

使用过滤器,示例:

img { 
    -webkit-filter: drop-shadow(5px 5px 5px #222);
    filter:         drop-shadow(5px 5px 5px #222); 
}

【讨论】:

  • demosthenes.info/blog/600/… 详细介绍了跨浏览器功能,因为这只是 webkit (目前)。
  • 像魅力一样工作。谢谢。
  • 哇,我真的爱你,伙计! :)
【解决方案2】:

在它对 CSS 可用之前,您可以尝试我的方法。

我的例子使用了这张图片:

因为它有一个透明的背景,而且它不是正方形的(为了让 CSS 的 box-shadow 起作用)。它不是很花哨,但很好地服务于这个小而简单的教程。

我采取的下一步是在上述图像的基础上创建另一个图像,将其放置在原始图像之下。

步骤 1。添加模糊:

步骤 2。移除光线和对比度:

所以我有原版和影子。

接下来我将其显示为阴影:

风格:

.common {width: 100px;height: 100px;background-size: 100% 100%; position:absolute;}

.divOriginal {background-image: url(../img/original.png);top:2em;left:2em;z-index:10;}

.divShadow {background-image: url(../img/shadow.png);top: 3em;left: 2.5em;z-index:8;}

施展魔法:

添加一个 div 并设置attribute class="divOriginal common",另一个设置为class="divShadow common"

结果应该是:

干杯!

阿迪

【讨论】:

    【解决方案3】:

    使用 createjs 样品可以在 JSFiddle

    shadowTarget.shadow = shadow;
    
    stage.addChild(shadowTarget);
    
    shadowTarget.x = 500 / 2;
    shadowTarget.y = 450 / 2;
    
    shadowTarget.regX = shadowTarget.image.width/2;
    shadowTarget.regY = shadowTarget.image.height/2;
    

    【讨论】:

      【解决方案4】:

      时代如何变化。现在可以in some browsers,如当前接受的答案所示。


      使用 CSS 无法做到这一点:

      这就是我假设您所要求的。

      【讨论】:

        【解决方案5】:

        根据 Chris Morgan 关于画布的建议,我为此编写了一个 jQuery 插件。你可以在 GitHub 上找到它:https://github.com/Kukunin/image-shadow

        【讨论】:

        • 太棒了!甚至使用 chrome 修复!
        【解决方案6】:

        在 CSS 中无法做到这一点。然而,通过画布完成它是完全可能的,但它会有些低效(因为它每次都由客户端处理)并且将依赖于 JavaScript。在 PNG 中执行此操作会更容易,并且可以在更多浏览器上使用。

        如果您想了解更多信息,请在网上搜索“html canvas blur”和“html canvas load image”等内容。或者更好的是,使用可以做到这一切的画布阴影功能。

        这是一个例子:http://philip.html5.org/demos/canvas/shadows/various.html

        • 从画布创建上下文
        • 根据需要设置context.shadow(Color|OffsetX|OffsetY|Blur)
        • 从带有context.drawImage的img标签加载PNG
        • 啊!阴影!

        还有一个奖励:

        • 如果您想导出为 PNG,请使用 context.toDataURL(制作一个将 PNG 放入其中的网络应用程序,它会为您提供阴影!)

        【讨论】:

        • 一些很酷的东西,虽然不是 CSS 解决方案。 (+1 暗示)
        • @Wesley:哈,CSS?高估。 ;-)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多