富文本:LayaAir下 HtmlDivElement的使用汇总

已邀请:

cuixueying

赞同来自: Richer

1.简单的Html属性设置:Bold、Font、FontSize、Color、下划线
【注意,不支持斜体、描边、span标签内嵌的方式】
示例如下:
	var div:HTMLDivElement=new HTMLDivElement();
div.innerHTML="<span style='font-weight:bold;" +
"font:24px Arial' " +
"color='red' " +
"href='www.baidu.com'>" +
"LayaBox</span><span>欢迎你的加入</span>"
Laya.stage.addChild(div);
2、获取Html文本的实际内容、获取html文本的实际宽高(contextWidth、contextHeight)
示例如下:
var htmlDiv:HTMLDivElement=new HTMLDivElement();
var html:String = "<span color='#e3d26a'>使用</span>";
html += "<span style='color:#FFFFFF;font-weight:bold'>HTMLDivElement</span>";
html += "<span color='#6ad2e3'>创建的</span><br/>";
html += "<span color='#d26ae3'>HTML文本</span>";
htmlDiv.innerHTML=html;
htmlDiv.pos(50,200);
var txt:String = "";
var tTxt:String;
var tHTMLElement:HTMLElement;
for(var i:int = 0,n:int = htmlDiv._childs.length;i < n;i++)
{
tHTMLElement = htmlDiv.getChildAt(i) as HTMLElement;
if(tHTMLElement)
{
tTxt= tHTMLElement.text;
if(tTxt)
{
txt += tTxt;
}
}
}
trace("文本内容为"+txt);
trace("文本的实际宽度为"+htmlDiv.contextWidth,"文本的实际高度为"+htmlDiv.contextHeight)
Laya.stage.addChild(htmlDiv);
3、设置文本的水平居中对齐(align需要和width配合使用),换行(<br/>换行需要有行高)、空格( ;)
【注意:目前不支持文本的垂直居中对齐,开发可以将(图片的高度-文本的高度)/2的值赋给文本的Y值,进行垂直居中对齐的替代设置】
示例如下:
var html3:HTMLDivElement=new HTMLDivElement();
html3.style.lineHeight=30;
html3.style.width=300;
html3.style.align="center";
html3.innerHTML="<br/><span>  我的第一行要换行</span>";
Laya.stage.addChild(html3);

var sp:Sprite=new Sprite();
sp.graphics.drawRect(0,0,300,30,null,"#999999");
Laya.stage.addChild(sp);
4、实现超链接
示例如下:
public function HtmlDemo()
{
var div:HTMLDivElement=new HTMLDivElement();
div.innerHTML="<span href='http://ask.layabox.com/'>LayaBox欢迎你的加入!</span>";
div.on(Event.LINK,this,onLink);
Laya.stage.addChild(div);
}
private function onLink(data:*):void
{
// TODO Auto Generated method stub
Browser.window.location.href=data;
}
5、实现html页面跳转
示例如下:
		var iHtml:HTMLIframeElement=new HTMLIframeElement();
Laya.stage.addChild(iHtml);
iHtml.href="res/html/test.html";
6、简单的图片显示
示例如下:
var imageHtml:HTMLDivElement=new HTMLDivElement();
imageHtml.innerHTML="<img src='res/boy.png'></img>";
Laya.stage.addChild(imageHtml);
7、追加文本内容appendHtml
示例如下:
            var appendHtml:HTMLDivElement=new HTMLDivElement();
appendHtml.innerHTML="<span>AAAAAA</span>";
Laya.stage.addChild(appendHtml);
appendHtml.appendHTML("<br/>  BBBBBBBBBB");
appendHtml.layout();

8、解决IOS手机上英文字母显示偏下的问题
在style样式中加垂直向上对齐valign:top属性
示例如下:
var html:HTMLDivElement=new HTMLDivElement();
html.innerHTML = "<span style='color:#ffffff;valign:top;'>朋友abc11''31ABC朋友</span><span href='http://www.baidu.com' target='_blank'>百度</span>";
Laya.stage.addChild(html);

9、为HtmlDivElement设置行间距,leading属性,注意,必须设置valing='top'
示例如下:
	var t:HTMLDivElement = new HTMLDivElement ;
Laya.stage.addChild(t);
t.style.valign = "middle";
t.size(60, 120);
t.style.wordWrap = true;
t.style.leading = 10;
t.innerHTML = "akshfkjashfkjhakshjdfhkasjdfhsaf";

总结:以上的方法仅供参考,某些方法只是实现方式的一种,开发者也可以通过其他方式进行设置,如果有哪些方法没有涉及到的,欢迎开发者提出来,我们会陆续进行补充!

laofang

赞同来自: lllzzz6311

addChild参数如果是HTMLDivElement 会报错。说参数不是Node类型。

answerHom

赞同来自:

现在 addChild参数如果是HTMLDivElement 会报错。说参数不是Node类型。
 
示例代码如下:
let html:HTMLDivElement = new HTMLDivElement();
html.style.width = "300";
html.align = "center";
html.innerHTML = "<span>属性:</span><br/><span>1 - 2</span>";
Laya.stage.addChild(html);

xiaosong

赞同来自:

示例代码贴下,应该是使用方式的问题

cry_11858

赞同来自:

不支持input标签吗。

Monica - 知识达人

赞同来自:

同一个文本中字体大小不同,颜色不同
var htmlD:HTMLDivElement = new HTMLDivElement();
Laya.stage.addChild(htmlD);
htmlD.innerHTML = "<font style='fontSize:30' color='#67fc2c'>测试<br/></font><font style='fontSize:20'>html组件<br/></font>";

zhoulong0116

赞同来自:

HTMLDivElement可以支持GIF图片吗?
在聊天界面,需要显示动态表情图片,应该如何处理?

王 坤

赞同来自:

拖动滚动,怎么实现?

Hanry

赞同来自:

请问一下,
1,怎么去掉A超链接的下划线?
2,在PC端上怎么让A超链接显示为手形?
3,如果选择复制文本。。
好像HTMLDivElement好多功能不完善

要回复问题请先

商务合作
商务合作