【问题标题】:Options on display of text at 45 degree angle in browser在浏览器中以 45 度角显示文本的选项
【发布时间】:2010-12-13 01:09:43
【问题描述】:

我需要在浏览器中以 45 度角显示文本。 文本是通过 ajax 调用从许多值中选择的。 文本长度不等,最多 100 个字符。需要显示第一部分和最后几个字符(我可以弄清楚这部分)。 例如: "这是正文,可能很长...正文的结尾部分"

我将拥有 1 到 6 个这样的字符串。 例如,考虑一个带有标题文本的表格,相当长,从左下角到右上角以 45 度角显示。

如果可能,希望跨浏览器,但必须在兼容模式下在 IE6 和 IE8 上工作。从 IE6 升级目标基础不受我控制。

如果可能的话,希望只有客户端的解决方案。文本是通过 ajax 从服务器中提取的,并且来自具有 15,000 多个不同文本字符串值的数据库,并且将来会增长到超过 185,000 个文本值。

想象一个表格,其标题文本项向上显示,堆叠在太窄而无法显示文本的列上。

考虑的选项: VML 似乎可行,但似乎不尊重字体的样式大小,短字符串是大字体,长字符串更小,我希望它们的大小都相同。

示例代码:

<v:shape style="position: absolute; top: 25px; left: 50px; width: 300px; height: 300px;
        antialias: true" coordsize="300,300">
            <v:path textpathok="True" v="m 0,300 l 300,0" />
            <v:fill on="True" color="#0101FF" />
            <v:stroke on="false" />
            <v:textpath on="True" fitpath="true" string="My text string, quite long in length and of various length...end of text"
             style="font:normal normal bold 8pt Arial" />
        </v:shape>

SVG - 在没有插件的情况下无法在 IE 中工作

JPG、GIF - 需要往返服务器来创建图形,影响性能。

Processing.js http://processingjs.org/

探索者画布:http://excanvas.sourceforge.net/

除了阅读网站文本之外,对 Processing.js 或 excanvas 知之甚少。

此处描述的位置类型选项:http://jdstiles.com/java/angledtext2.html

Flash - 这里不是一个真正的选择。

为此还有哪些其他选择?

其他信息: 这里已经有 jQuery。用它来做 ajax 部分。 服务器端为asp.net c# .Net 2.0框架(近期会升级)

Edit1:当前 VML 示例似乎适用于目标受众(不是跨浏览器,但使用在目标浏览器上速度很快的 VML)

<v:shape style="position: absolute; top: 25px; left: 50px; width: 300px; height: 300px;
                antialias: true" coordsize="300,300">
    <v:path textpathok="True" v="m 0,300 l 300,150" />
    <v:fill on="True" color="#0101FF" />
    <v:stroke on="false" />
    <v:textpath on="True" fitpath="false" string="My text string, quite long in length and of various length...end of text"
         style="v-text-align:left; font:normal normal 8pt Arial" />
</v:shape>

【问题讨论】:

  • 我认为这两种字体替换方法不会旋转您的文本,但它们是有趣的替代方案:sIFR (mikeindustries.com/blog/sifr) 和 cufon (wiki.github.com/sorccu/cufon/about)
  • @fudgey - 感谢您指出这两个。第一个使用闪光灯,我想远离它。第二个使用 SVG 和 VML 技术——因为我在这里直接有 VML 选项,这将牺牲跨浏览器兼容性。

标签: c# jquery html css text


【解决方案1】:

您无法在客户端创建真正的有角度的文本,但this 已尽可能接近。最可靠的解决方案是在服务器端有一个脚本,该脚本将文本字符串作为输入,以一定角度创建带有文本的图像(使用一些图形库),然后在响应中流式传输图像。

【讨论】:

  • @Josh Stodola - 感谢您指出吉姆叔叔的位置选项,在我的情况下可能不太可行,因为需要放置每个字符,因为我的字符串最多 100 个字符,我们可能有其中几个在我的页面上。不过仍然值得一提。
【解决方案2】:

你应该看看 Raphael Js 库

http://raphaeljs.com/text-rotation.html

它抽象了 VML(对于 IE)和 SVG(对于所有其他浏览器)的使用。它还可以很好地与 jQuery 配合使用。

【讨论】:

    【解决方案3】:

    您的 VML 示例中的文本肯定会改变大小,因为您有 fitpath="true" 吗?如果您删除它,那么它会尊重您设置的大小。然后,您可以根据需要使用 v-text-align:left 样式属性将其左对齐。

    【讨论】:

    • 谢谢 James,我会试试的,我现在显然不是 VML 专家 :)
    • 对不起,如果我听起来有点粗鲁。老实说,我也没有太多的 VML 经验。希望它仍然有效。
    • 我一点也不认为它是粗鲁的,而且它似乎奏效了。暂时保持打开状态,看看是否会弹出其他选项。
    • 接受这个答案,因为它解决了我对 VML 的原始问题,如果需要,我总是可以使用一些支持跨浏览器的 SVG 和 VML 组合的库转移到 SVG 仿真。跨度>
    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多