如何解决每当我使用“省略号”进行文本换行时,是否会出现随机字符? 这是字符集问题吗?
我正在尝试换行并在我的 Cytoscape 图形标签上放置一段长度后的“...”。我有这个代码:
style: [{
selector: 'node',css: {
'label': 'data(id)','text-wrap': 'ellipsis','text-max-width': 10,'text-justification': 'left','font-family': 'serif','color': 'red'
}
}]
但是,当我这样做时,会出现随机字符而不是原始文本。 Stack Overflow 上有一个类似的问题:text-overflow: ellipsis is displaying different character
在这里,接受的答案告诉我们字符集必须是 utf-8,并且字体应该受 U+2026 支持。
因此我把这个标签放在我的 HTML 中:
<Meta charset="UTF-8">
而且我的字体家族是serif,所以不知道有什么办法可以解决问题。
PS:这是说明如何使用 Cytoscape 文本换行的文档:https://js.cytoscape.org/#style/labels 而且我能够使用 wrap
选项而不是 ellipsis
来换行文本,因此我不认为代码结构错误。
解决方法
您可以通过使用函数来计算标签来防止这种情况发生。在 cytoscape.js 样式表中,您可以执行以下操作:
style: [
{
selector: "node",css: {
'label': function(node) {
if (node.data("name").length > 20) {
return `${node.data("name").substring(0,20)}...`;
else {
return ${node.data("name");
}
},height: "60px",width: "60px"
}
},...
在代码片段中,我使用了省略号属性并且没有错误:
var cy = (window.cy = cytoscape({
container: document.getElementById("cy"),boxSelectionEnabled: false,autounselectify: true,style: [{
selector: "node",css: {
content: "data(name)",{
selector: "edge",css: {
"target-arrow-shape": "triangle"
}
},{
selector: ".multiline-manual",style: {
"text-wrap": "wrap"
}
},{
selector: ".multiline-auto",style: {
"text-wrap": "ellipsis","text-max-width": 120
}
}
],elements: {
nodes: [{
data: {
id: "n0",name: "This is a very long name and all I have to do is to add a class!"
},classes: "multiline-auto"
},{
data: {
id: "n1",name: "Shorter Text----------"
},{
data: {
id: "n2",name: "This shouldn't wrap"
},classes: "multiline-manual"
},{
data: {
id: "n3",name: "This should\nwrap"
},classes: "multiline-manual"
}
],edges: [{
data: {
source: "n0",target: "n1"
}
},{
data: {
source: "n1",target: "n2"
}
},target: "n3"
}
}
]
},layout: {
name: "dagre",padding: 5
}
}));
console.log(cy.nodes())
body {
font: 14px helvetica neue,helvetica,arial,sans-serif;
}
#cy {
height: 100%;
width: 100%;
left: 0;
top: 0;
float: left;
position: absolute;
}
<html>
<head>
<meta charset=utf-8 />
<meta name="viewport" content="user-scalable=no,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui">
<script src="https://unpkg.com/cytoscape@3.3.0/dist/cytoscape.min.js">
</script>
<script src="https://unpkg.com/jquery@3.3.1/dist/jquery.js"></script>
<!-- cyposcape dagre -->
<script src="https://unpkg.com/dagre@0.7.4/dist/dagre.js"></script>
<script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.5.0/cytoscape-dagre.js"></script>
</head>
<body>
<div id="cy"></div>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。