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

使用Rapha_l_ javascript库的字体阴影

  •  1
  • Incognito  · 技术社区  · 15 年前

    我想在任何给定的文本周围加上阴影,或者使文本看起来更具抗锯齿效果。

    例如,假设我正在运行一个简单的文本,例如:

    var titleName = R.text(x+200, y-75, "Lorem Ipsoup de jour")
                     .attr({font: '75px Helvetica, Arial', opacity: 1, fill: "#dfe6ec"})
    

    在这个尺寸上,文本有点粗,在背景上不太协调。有没有一种方法可以创建投影效果(理想情况下使用alpha通道)?

    2 回复  |  直到 13 年前
        1
  •  2
  •   robertc    15 年前

    在SVG中,文本阴影效果并不像CSS3那样简单,但它相当简单 using a filter . 您不能像Rapha_«L中那样使用该示例,因为它不支持组,但您可以在外部文件中创建筛选器定义,然后将其应用于:

    .attr({filter: "url(filters.svg#dropShadow)"});
    

    --编辑

    我有机会试一试,但不起作用,因为 filter isn't recognised by attr 但是,如果您抓取节点并使用常规的DOM,它就可以工作(在Firefox中)。 setAttribute 方法。

    var t = paper.text(100, 100, "Raphaël\nkicks\nbutt!");
    t.node.setAttribute("filter", "url('filters.svg#dropShadow')");
    

    chrome不应用放置阴影,而opera使整个元素变蓝。它几乎肯定不会在IE中工作,因为这将是VML。 Example here .

        2
  •  2
  •   David Herse    13 年前

    我知道这是一个老问题,但是为了帮助其他人搜索,你可以尝试element.glow([glow])来获得阴影效果。 http://raphaeljs.com/reference.html#Element.glow