代码之家  ›  专栏  ›  技术社区  ›  SamGoody

Firefox不透明(透明)渐变-淡出图像

  •  6
  • SamGoody  · 技术社区  · 16 年前

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

    元素及其内容在左边应该是完全不透明的,在右边应该是完全透明的。从右到左平均分级。

    由于它要合并的内容和背景不是固定的,因此无法预先生成图像。

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

    我在ie(alpha mask)和webkit(image mask)中都能做到这一点,但在ff中完全被难住了。

    如果有办法的话,我不介意使用svg。

    请帮忙?

    3 回复  |  直到 11 年前
        1
  •  4
  •   danjwilson    15 年前

    本页说明如何在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);
    
        2
  •  0
  •   DBS Sajas Mohammed    11 年前

    我认为一个肮脏的解决方案可能是利用rgba值。通过这些,您可以在div上设置一个webkit和moz渐变,该渐变位于您所讨论的内容的正上方。

    我不确定你是否能得到ie渐变的alpha值。解决方案的唯一问题是这个div后面的对象的交互性丢失了

        3
  •  -2
  •   Javier Parra    16 年前

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

    我知道这不好看,但应该管用;)