SVG中的`defs`标签与`symbol`标签在文档结构和实际使用中存在区别。具体而言,`defs`标签用于包覆一个组(`g`等标签),每个`defs`标签拥有一个ID,使用`use`标签时,其引用的是`defs`标签的ID,而非`defs`标签本身。`symbol`标签自身携带ID,使用`use`时引用的是`symbol`的实例。在功能支持上,`symbol`和`defs`的属性有所不同,通过对比规范可以详细了解。实际使用中,`symbol`允许设定宽度和高度,而`defs`设置这些属性是无效的。`symbol`默认的`overflow`属性为`hidden`,超出宽度和高度的部分会被裁切,除非定义样式覆盖默认值。相比之下,`defs`没有这样的特点。关于`use`标签,其宽度和高度仅对`symbol`(以及整个`svg`)有效。非自动值会覆盖`symbol`自身的宽度和高度。总结来说,`defs`是一个声明块,用于声明可被重用的内容集合,重用的是集合中的一项或多项,实现原样在不同位置下呈现。而`symbol`表示具体内容的重用,可以被不同位置和比例上重复呈现。