KonvaJS:文本对象中的 HTML
KonvaJS: HTML in a Text object
我目前正在研究 KonvaJS 以创建类似废料预订应用程序,并且我正在尝试像项目符号列表一样显示。
我尝试使用文本形状并向文本添加 html 以查看它是否会呈现它,但没有成功。
这可能吗?如果是这样,如何?如果没有,KonvaJS 有哪些其他方式来显示花哨的文本,如列表、粗体扩展...
var text = new Konva.Text({
text: '<div>this is normal text\n\n <b>This is BOLD</b> </div>',
fontSize: 8,
fontFamily: 'Calibri',
fill: '#555',
width: 300,
padding: 20,
align: 'center',
stroke: 'black',
strokeEnabled: false,
strokeWidth: 0
});
输出:
抱歉,我没有足够的声誉来 post 图片,但输出文本是:
<div>this is normal text
<b>This is BOLD</b> </div>
我希望它是这样的:
这是普通文本
这是粗体
感谢任何帮助,谢谢!
Konva 无法将 html 绘制成 canvas。您可以为文本使用不同的样式选项,例如:fontFamily、fontSize、fontStyle、fontVariant(参见 docs)。
或者您可以使用html2canvas将html数据转换为图像(或canvas元素),然后通过Konva.Image
绘制结果。
实际上,您可以从 font-awesome 加载许多图标,并制作漂亮的网络应用程序:
window.onload = function () {
var stage = new Konva.Stage({
container: 'container',
width: 1000,
height: 1000
});
var layer = new Konva.Layer();
var simpleText = new Konva.Text({
x: stage.getWidth() / 10,
y: 15,
text: "\uf21c",
fontSize: 300,
fontFamily: 'FontAwesome',
fill: 'green'
});
layer.add(simpleText);
stage.add(layer);
}
@font-face {
font-family: 'FontAwesome';
src: url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/fonts/fontawesome-webfont.ttf');
font-weight: normal;
font-style: normal;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"/>
<script src="https://cdn.rawgit.com/konvajs/konva/0.11.1/konva.min.js"></script>
<title>JS Bin</title>
</head>
<body>
<div id="container" style="font-family:'FontAwesome'">dummyText</div>
</body>
</html>
这里是解决方案的参考
我目前正在研究 KonvaJS 以创建类似废料预订应用程序,并且我正在尝试像项目符号列表一样显示。
我尝试使用文本形状并向文本添加 html 以查看它是否会呈现它,但没有成功。
这可能吗?如果是这样,如何?如果没有,KonvaJS 有哪些其他方式来显示花哨的文本,如列表、粗体扩展...
var text = new Konva.Text({
text: '<div>this is normal text\n\n <b>This is BOLD</b> </div>',
fontSize: 8,
fontFamily: 'Calibri',
fill: '#555',
width: 300,
padding: 20,
align: 'center',
stroke: 'black',
strokeEnabled: false,
strokeWidth: 0
});
输出: 抱歉,我没有足够的声誉来 post 图片,但输出文本是:
<div>this is normal text
<b>This is BOLD</b> </div>
我希望它是这样的:
这是普通文本
这是粗体
感谢任何帮助,谢谢!
Konva 无法将 html 绘制成 canvas。您可以为文本使用不同的样式选项,例如:fontFamily、fontSize、fontStyle、fontVariant(参见 docs)。
或者您可以使用html2canvas将html数据转换为图像(或canvas元素),然后通过Konva.Image
绘制结果。
实际上,您可以从 font-awesome 加载许多图标,并制作漂亮的网络应用程序:
window.onload = function () {
var stage = new Konva.Stage({
container: 'container',
width: 1000,
height: 1000
});
var layer = new Konva.Layer();
var simpleText = new Konva.Text({
x: stage.getWidth() / 10,
y: 15,
text: "\uf21c",
fontSize: 300,
fontFamily: 'FontAwesome',
fill: 'green'
});
layer.add(simpleText);
stage.add(layer);
}
@font-face {
font-family: 'FontAwesome';
src: url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/fonts/fontawesome-webfont.ttf');
font-weight: normal;
font-style: normal;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"/>
<script src="https://cdn.rawgit.com/konvajs/konva/0.11.1/konva.min.js"></script>
<title>JS Bin</title>
</head>
<body>
<div id="container" style="font-family:'FontAwesome'">dummyText</div>
</body>
</html>
这里是解决方案的参考