本文可以说是技巧,也可以说是因为我的顽固而带来的教训,呵呵。主要内容就是为了明确在XUL中实现自动换行文本的方法,只是确认而已。
XUL有两个用于显示文本的元素,label和description,按照设计来讲,label主要用来显示单行文本,而description用来显示块文本。
description有两种赋值方式,一种是为value属性赋值,一种是以子元素的方式放在description里面。最重要的一点,通过第一种方式赋值,无论怎么调整都是只能显示为单行的,多余的部分要么被截取掉,要么可以通过其它方式省略化显示;而只有通过第二种方式,才可以实现块文本的自动换行。
这就是我愚蠢的地方,在MDC上反复的看这段说明,可却就是转不过弯来。
比如现在xul有一代码片段如下所示:
<xul:description id="desc">
下面这种方式只能实现单行文本:
document.getElementById("desc").value = "一段很长的文本。。。";
下面这种方式才能实现自动换行:
document.getElementById("desc").appendChild(document.createTextNode("一段很长的文本。。。"));
下面就description补充说明几点:
不加任何显示的话,description自动换行的范围是这个容器,最大可能是整个窗口,只有当窗口的宽度小于文本的长度的时候才会有自动换行的效果。
可以为description增加maxwidth=50这样的属性,或者style="max-width: 200px;"这样的样式,这样就可以在指定的宽度实现自动换行。
如果把description放到vbox里面,以上规则不变,如果放到hbox里面,自动换行的效果就没有了,这是因为hbox在水平方向自动延伸嘛,呵呵。这时候只要在嵌套在hbox的description里面增加 flex="1"属性,就又自动换行啦。
两篇参考文档:
http://xulsolutions.blogspot.com/2006/07/how-to-handle-text-and-keep-your.html
http://developer.mozilla.org/en/XUL/description
description有两种赋值方式,一种是为value属性赋值,一种是以子元素的方式放在description里面。最重要的一点,通过第一种方式赋值,无论怎么调整都是只能显示为单行的,多余的部分要么被截取掉,要么可以通过其它方式省略化显示;而只有通过第二种方式,才可以实现块文本的自动换行。
这就是我愚蠢的地方,在MDC上反复的看这段说明,可却就是转不过弯来。
比如现在xul有一代码片段如下所示:
<xul:description id="desc">
下面这种方式只能实现单行文本:
document.getElementById("desc").value = "一段很长的文本。。。";
下面这种方式才能实现自动换行:
document.getElementById("desc").appendChild(document.createTextNode("一段很长的文本。。。"));
下面就description补充说明几点:
不加任何显示的话,description自动换行的范围是这个容器,最大可能是整个窗口,只有当窗口的宽度小于文本的长度的时候才会有自动换行的效果。
可以为description增加maxwidth=50这样的属性,或者style="max-width: 200px;"这样的样式,这样就可以在指定的宽度实现自动换行。
如果把description放到vbox里面,以上规则不变,如果放到hbox里面,自动换行的效果就没有了,这是因为hbox在水平方向自动延伸嘛,呵呵。这时候只要在嵌套在hbox的description里面增加 flex="1"属性,就又自动换行啦。
两篇参考文档:
http://xulsolutions.blogspot.com/2006/07/how-to-handle-text-and-keep-your.html
http://developer.mozilla.org/en/XUL/description

0 评论:
发表评论