代码之家  ›  专栏  ›  技术社区  ›  Mark Schultheiss

在浏览器中以45度角显示文本的选项

  •  0
  • Mark Schultheiss  · 技术社区  · 16 年前

    我需要在浏览器中以45度角显示文本。 文本长度最多可变化100个字符。需要显示第一部分和最后几个字符(我可以理解这部分)。 例如: “这是文本,可能很长……文本的结尾部分”

    我将有1到6个这样的字符串。 例如,假设一个表格的标题文本非常长,从左下角到右上角呈45度角显示。

    如果可能,希望是跨浏览器的,但必须在兼容模式下在IE6和IE8上工作。从IE6升级目标库已超出我的控制范围。

    如果可能的话,我们希望只使用客户端解决方案。文本是通过ajax从服务器中提取的,它来自一个具有15000多个不同文本字符串值的数据库,将来将增长到185000多个文本值。

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

    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

    闪光-在这里不是一个真正的选择。

    还有哪些其他选择?

    其他资料: 这里已经有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>
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   James    16 年前

    当然,VML示例中的文本正在改变大小,因为 fitpath=“true” v-text-align:左

        2
  •  1
  •   Peter J. Mello Ron Warholic    5 年前

    this 尽你所能接近。最可靠的解决方案是在服务器端使用一个脚本,该脚本将文本字符串作为输入,使用文本以一定角度创建图像(使用一些图形库),然后在响应中流式处理图像。

        3
  •  0
  •   SynXsiS    14 年前

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

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