【发布时间】:2014-10-29 18:58:19
【问题描述】:
我正在尝试使用 CSS3 或 jQuery 或 SVG 或画布实现以下目标,但我遇到了一些困难。
需要注意的四点:
- 文本的渐变是垂直的,并且涉及不透明度
- 文本可以是多行的(由客户端输入)
- 文本周围有一个轮廓(文本阴影可能是合适的。不需要 IE 支持。)
- 后面有一张背景图片。
最简单的解决方案是-webkit-linear-gradient,尽管我非常喜欢 Webkit,但我觉得作为开发人员我有责任在某种程度上支持 Firefox、Opera 和 IE。
Chris Coyier 在他的demo 中使用,我添加了背景图片来展示它的实际效果:
由于目前似乎没有跨浏览器替代方案,因此我将求助于 JavaScript 和流行的 jQuery 来寻找答案。哪有几个。
第一个是来自 MRNIX 的一个简洁的插件,叫做 PXGradient。你可以checkout his website 但都是俄语。基本上要使用该脚本,您输入一个十六进制值数组,它会找到它们之间的中间点,在其中创建一个<u> 标签和一大堆<s> 标签,所有这些都包含父文本的内容。它创造了一个很好的效果。
虽然它支持文本阴影和背景图像,但它不支持不透明度。我遇到过其他几个插件,它们执行这种类似的十六进制到十六进制转换,但它们都不支持我能找到的 rgba。
Stackoverflow 提出了this related question,并引用了 Cufon。 Cufon 很棒,但不允许文本阴影。
SVG 也出现了,我在其中找到了this example,但 SVG 必须是当前的宽度和高度,我不知道这个文本会是什么(它是由客户端输入的)。
(除非我们可以获取文本的高度和宽度并动态附加 SVG。但我的 SVG 知识非常糟糕,所以我可能需要一些帮助。)
我查看了 CSS 选项、jQuery 插件、SVG 和画布,但运气不佳。
有人知道我可以使用什么吗?任何解决方案都会有所帮助。
干杯!
【问题讨论】:
-
你不能在包含元素上使用 CSS 不透明度和 PXGradient 插件吗?还是您希望不透明度成为渐变的一部分?
-
@APAD1 我目前正在这样做,但文本顶部没有不透明度,而底部大约有 50% 的不透明度。所以我想把不透明度分开。我可能只是联系插件创建者,看看他是否可以修改以接受 rgba 值...
标签: jquery css text svg gradient