为了账号安全,请及时绑定邮箱和手机立即绑定

svg标签中的text标签文本如何处理溢出?

svg标签中的text标签文本如何处理溢出?

慕容708150 2018-09-02 13:02:05
先上图说话吧上图为现状,下图为希望结果核心代码如下(写的不好,大家别见怪)    <svg :width="panelObj.panelWidth" :height="panelObj.panelHeight" >       <!-- …… -->       <!-- 绘制节点 -->       <g v-for="(node,i) in nodes" :key="i">         <!-- 节点标题 -->         <rect :x="node.x+30" :y="node.y+5" width="20" height="20" :fill="`url(#titleIcon)`"/>          <text :x="node.x+50" :y="node.y+flow.lineHeight">{{node.title}}</text>         <!-- 节点列表 -->         <g v-for="(list,i) in node.textList" :key="i">           <rect :x="node.x+5" :y="node.y+(i+1)*flow.lineHeight+6" width="20" :height="flow.lineHeight-2" :fill="`url(#${list.dataType})`" />           <text :x="node.x+28" :y="node.y+(i+2)*flow.lineHeight">{{list.label }}</text>         </g>       </g>     </svg>试过用CSS处理文本溢出的方式,但是没起效;试过用字符数截取的方法,但是英文字符的大小差异较大,参数难以统一。试了很久,也没能解决这问题,希望路过的老司机带下。
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

解决之法,foreignObject,使用方式如下:

    <svg :width="panelObj.panelWidth" :height="panelObj.panelHeight" >
      <!-- …… -->
      <!-- 绘制节点 -->
      <g v-for="(node,i) in nodes" :key="i">
        <foreignObject width="node.width" height="node.height" x="node.x" y="node.y">
          <!-- 节点标题 -->
          <p><img :src="node.titleImgSrc" />{{node.title}}</p>
          <!-- 节点列表 -->
          <p v-for="(list,i) in node.textList" :key="i"><img :src="list.dataType" />{{list.label}}</p>
        </foreignObject>  
      </g>
    </svg>


查看完整回答
反对 回复 2018-09-02
  • 1 回答
  • 0 关注
  • 2715 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信