在SVG中插入HTML标签

需求背景:

设计想要在SVG绘图中做折行打点出省略号的功能,先前的代码需要在IE环境下运行,使用JS函数进行分割替换打点,然后还要手动定位,很是麻烦,不过当时的样式不是很复杂,还要适配IE就迁就了,这次除了两行打点功能之外, 还要考虑到整体内容做一个自适应居中效果,而且不考虑IE适配,索性使用 <foreignObject>

来看一下MDN的解释:

SVG 中的 <foreignObject> 元素允许包含来自不同的 XML 命名空间的元素。在浏览器的上下文中,很可能是 XHTML / HTML。

具有四个属性,分别为 height , width , x , y ,这些属性与常规的SVG元素一致,支持动画过渡效果,没什么好说的,

备注: 从 SVG2 开始,x、y、宽度和高度都是几何属性,这意味着这些属性也可以用作该元素的 CSS 属性。

<foreignObject x="20" y="20" width="160" height="160">
    // 需要给内部的html/xhtml元素添加命名空间
    <div xmlns="http://www.w3.org/1999/xhtml"> 
      Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      Sed mollis mollis mi ut ultricies. Nullam magna ipsum,
      porta vel dui convallis, rutrum imperdiet eros. Aliquam
      erat volutpat.
    </div>
  </foreignObject>

TIPS: 如果使用D3等框架进行SVG的绘制操作,在 内部进行append操作是 需要注意:

d3.select('foreignObject').append('div')
//❎ 直接使用"div" 不起作用,渲染出的元素不会出出现在浏览器中
d3.select('foreignObject').append('xhtml:div')
//✅ 有效

如果不指定命名空间,div 只是一个普通的XML元素,不具备HTML的含义,传统的开发中,我们写的HTML语法本身具有默认格式,在SVG这种XML语言中,div没有特殊含义,所以需要为他指明HTMl的命名空间.

设计想要在SVG绘图中做折行打点出省略号的功能,先前的代码需要在IE环境下运行,使用JS函数进行分割替换打点,然后还要手动定位,很是麻烦,不过当时的样式不是很复杂,还要适配IE就迁就了,这次除了两行打点功能之外, 还要考虑到整体内容做一个自适应居中效果,而且不考虑IE适配,索性使用。只是一个普通的XML元素,不具备HTML的含义,传统的开发中,我们写的HTML语法本身具有默认格式,在SVG这种XML语言中,div没有特殊含义,所以需要为他指明HTMl的命名空间.具有四个属性,分别为。如果不指定命名空间,
  《深入HTML5编程(第 2版)》首先介绍了HTML5的历史背景、新的语义标签及与以往HTML版本相比的根本变化,同时揭示了HTML5背后的设计原理。本书在上一版的基础上新增了SVG和拖放API相关内容,并对部分内容进行了更新。从第 2章起,分别围绕构建令人神往的富Web 应用,逐一讨论了HTML5的Canvas、Geolocation、Communication、WebSocket、Forms、WebWorkers、Storage等API的使用,辅以直观明了的客户端和服务器端示例代码,让开发人员能够迅速理解和掌握新一代Web标准所涵盖的核心技术。《深入HTML5编程(第 2版)》后探索了离线Web应用并展望了HTML5未来的发展前景。   《深入HTML5编程(第 2版)》面向有一定经验的Web应用开发人员,对HTML5及未来Web应用技术发展有浓厚兴趣的读者也可以学习参考。 第1章 HTML5概述 1 1.1 HTML5发展史 1 1.2 关于2022年的那个神话 2 1.3 谁在开发HTML5 3 1.4 新的认识 3 1.4.1 兼容性和存在即合理 3 1.4.2 效率和用户优先 4 1.4.3 化繁为简 5 1.4.4 通用访问 5 1.5 无插件范式 5 1.6 HTML5的新功能 8 1.6.1 新的DOCTYPE和字符集 8 1.6.2 新元素和旧元素 9 1.6.3 语义化标记 10 1.6.4 使用Selectors API简化选取操作 15 1.6.5 JavaScript日志和调试 18 1.6.6 window.JSON 19 1.6.7 DOM Level 3 19 1.6.8 Monkeys、Squirrelfish和其他JavaScript引擎 19 1.7 小结 21 第2章 Canvas API 22 2.1 HTML5 Canvas概述 22 2.1.1 历史 22 2.1.2 canvas是什么 23 2.1.3 canvas坐标 23 2.1.4 什么情况下不用canvas 23 2.1.5 替代内容 24 2.1.6 CSS和canvas 25 2.1.7 浏览器对HTML5 Canvas的支持情况 25 2.2 使用HTML5 Canvas API 25 2.2.1 检测浏览器支持情况 25 2.2.2 在页面加入canvas 26 2.2.3 变换 28 2.2.4 路径 30 2.2.5 描边样式 32 2.2.6 填充样式 34 2.2.7 填充矩形区域 34 2.2.8 绘制曲线 35 2.2.9 在canvas插入图片 37 2.2.10 渐变 38 2.2.11 背景图 40 2.2.12 缩放canvas对象 42 2.2.13 Canvas变换 43 2.2.14 Canvas文本 45 2.2.15 应用阴影 46 2.2.16 像素数据 48 2.2.17 Canvas的安全机制 50 2.3 使用HTML5 Canvas创建应用 51 2.3.1 进阶功能之全页玻璃窗 54 2.3.2 进阶功能之为Canvas动画计时 54 2.4 小结 57 第3章 SVG 58 3.1 SVG概述 58 3.1.1 历史 58 3.1.2 理解SVG 59 3.1.3 可缩放图形 61 3.1.4 使用SVG创建2D图形 61 3.1.5 在页面添加SVG 61 3.1.6 简单的形状 62 3.1.7 变换SVG元素 63 3.1.8 复用内容 64 3.1.9 图案和渐变 64 3.1.10 SVG路径 65 3.1.11 使用SVG文本 66 3.1.12 组合场景 67 3.2 使用SVG创建交互式应用 68 3.2.1 添加树 69 3.2.2 添加updateTrees函数 69 3.2.3 添加removeTree函数 70 3.2.4 添加CSS样式 70 3.2.5 终代码 70 3.3 小结 74 第4章 音频和视频 75 4.1 HTML5 Audio和Video概述 75 4.1.1 视频容器 75 4.1.2 音频和视频编解码器 76 4.1.3 HTML5 Audio和Video的限制 77 4.1.4 audio元素和video元素的浏览器支持情况 77 4.2 使用HTML5 Audio和Video API 78 4.2.1 浏览器支持性检测 79 npm install ckeditor5-custom-element 要添加此插件的功能,您应该对编辑器进行自定义构建。 请按照的说明进行操作。 要加载插件,请配置ckeditor(例如,编辑文件ckeditor.js ),如下所示: import CustomElementPlugin from 'ckeditor5-custom-element/src/customelement'; 导入工具栏图标(可选) import Icon1 from 'path-to-icon/iconfile.svg'; 假设构建基于经典编辑器:
VUE-cli3使用 svg-sprite-loader svg-sprite-loader 的插件,用来根据导入的 svg 文件自动生成 symbol 标签插入 html,接下来就可以在模版方便地使用 svg-sprite 技术了。 使用 svg-sprite 的好处 页面代码清爽 可使用 ID 随处重复调用 每个 SVG 图标都可以更改大小颜色 npm install svg-sprite-loader --save-dev webpack 配置,在Vue.config.js加入处理 svg 的 loader: const path = require('pa
SVG简介SVG 意为可缩放矢量图形(Scalable Vector Graphics)。 SVG 使用 XML 格式定义图像。SVG与其他图像格式相比,SVG的优势在于 SVG 可被非常多的工具读取和修改(比如记事本) SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。 SVG 是可伸缩的 SVG 图像可在任何的分辨率下被高质量地打印 SVG 可在图像质量不下降的情况下被放
每周知识总结(四)有限状态机 有限状态机 有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 常见的计算机就是使用有限状态机作为计算模型的:对于内存的不同状态,CPU通过读取内存值进行计算,更新内存的状态。CPU还通过消息总线接受外部输入设备(如键盘、鼠标)的指令,计算后更改内存的状态,计算结果输出到外部显示设备(如显示器),以及持久化存储在硬盘。 电脑游戏设计也经常使用有限状态机模
HTML页面嵌入SVG的几种方式 你有N种理由使用SVG在页面展示图像,如它的矢量特性、广泛的浏览器支持、比JPEG和PNG更小的体积、可用CSS设置外观、使用DOM API操作以及各种可用的SVG编辑工具等。 可以用以下六种方式在页面文档嵌入SVG: 1. 作为图片使用<img>标签 <img src="mySVG.svg" alt="" /> 2. ...
<embed id="svgImg" src="http://。。。。/power/upload/19943b67-0f49-4c5f-83f0-566d982f1aab.svg"></embed> var svgImg = document.getElementById("svgImg").getSVGDocument(); for (var i = 0; i &l
一、从SVG文本换行说起 SVGCSS几乎可以看成是同一个年代出来的东西,但是在Web界面展示这块,CSS长期统领江山,SVG偃旗息鼓,直到这些年,SVG开始乘势而上。 时势造英雄。当年web网页都是以图文展示为主,所以门户,博客这些网站兴起。而SVG擅长的是图形展示,对于文本呈现,只能嘿嘿一下,跟CSS相比那可就弱了几条街。举个最简单的效果,文本换行。在CSS下,当我们一段文字很长的时候,...
我在我所属的当地社区凸版印刷店Bay View Printing Company上了一堂课,内容涉及使用聚合物印版进行印刷。 这家店绝对是满是木头和金属类型的,周围还有所有的家具,但是聚合物板却不是。 你把它们做成的! 他们可以是任何东西! 有时候坚持旧式的设置很有趣。 我很喜欢这样做。 但是我对学习如何用现代方式制作的凸版感兴趣。 就像,用SVG。 Bay View Printing...