6

我有一个里面有内容的元素。

元素及其内容应该在左侧完全不透明,在右侧完全透明。从右到左均匀分级。

由于它所融合的内容和背景不固定,因此无法预先制作图像。

我知道渐变可以用作背景(-moz-linear-gradient),但这对我没有帮助 - 在这里,我需要元素本身的内容淡出。

我已经能够在 IE (Alpha Mask) 和 Webkit (image-mask) 中做到这一点,但在 FF 中完全被难住了。

如果有办法,我不介意使用 SVG。

请帮忙?

4

3 回答 3

4

本页解释了如何为 FF 3.5+ 实现这一点

https://developer.mozilla.org/en/applying_svg_effects_to_html_content

您可能希望在一个名为 mask.svg 的文件中包含这样的内容:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
     version="1.1"
     baseProfile="full">
     <mask id="m1" maskUnits="objectBoundingBox" maskContentUnits="objectBoundingBox">
        <linearGradient id="g" gradientUnits="objectBoundingBox" x2="1">
          <stop stop-color="white" offset="0"/>
          <stop stop-color="white" stop-opacity="0" offset="1"/>
        </linearGradient>
        <rect x="0" y="0" width="1" height="1" fill="url(#g)"/>
      </mask>
</svg>

然后在您的 CSS 中包含以下内容:

mask: url(/path/to/mask.svg#m1);
于 2010-07-28T13:49:26.740 回答
0

我相信一个肮脏的解决方案可能是利用 rgba 值。有了这些,您可以在 div 上设置 webkit 和 moz 渐变,该 div 位于您谈论的内容的正上方。

我不确定您是否可以为 IE 渐变设置 alpha 值。该解决方案的唯一问题是该 div 背后的对象的交互性丢失

于 2011-03-18T10:30:57.143 回答
-2

一个肮脏的解决方案是使用线性渐变将 div 完全叠加在元素的顶部,左侧的背景完全透明,右侧的背景完全不透明。

我知道这不漂亮,但它应该工作;)

于 2010-04-13T21:53:17.330 回答