html5 - 将整个网页设计为SVG文件

标签 html5 svg

免责声明
我意识到,考虑到标题的荒谬性,这听起来像一个巨魔。然而,这是一个真正的问题。我的背景涉及OpenGL/x86程序集。我最近开始学习网络编程。我真的很喜欢SVG+CSS,我想知道人们为什么不用SVG设计整个网页?
上下文
SVG提供了漂亮的原语:二次曲线+三次贝塞尔曲线;直线+填充——全部作为矢量图形
SVG提供文本
SVG提供仿射变换
问题
有人把整个网站设计成一个巨大的SVG文件的例子吗?
如果没有,有什么限制?
当使用SVG原语而不是DIV/表时,是否会遇到性能问题?

最佳答案

这是可能的;例如,您可以在SVG文档中嵌入HTML片段,以便获得超链接之类的内容。
然而,也存在一些明显的缺点,至少目前是这样:
当前的Web浏览器将SVG视为图像,可能不会向用户提供良好的用户界面。例如,我认为火狐不允许用户在SVG文件中选择文本。
您将失去内容和表示的分离。虽然SVG确实使用CSS,并且如果您手工编辑,原则上可以保持分离,但您可能正在设计布局和内容。这有几个缺点:
作为推论,很难将结果页面调整为其他格式。尤其:
更改文本大小时的行为是什么?文件已打印?窗口已调整大小?很难设计一个支持回流的复杂绘图(如果您的绘图不复杂,您也可以使用HTML+CSS)。
屏幕阅读器支持:由于订单不清楚(如下),屏幕阅读器可能会给出不可理解的、混乱的输出。更基本的说,屏幕阅读器可能认为SVG是一个图像,甚至不尝试读取文本。
SVG完全基于XML,因此需要非常严格地遵守规则。对于(x)HTML,您可以选择使用纯HTML序列化。然后,这些规则中的许多都是宽松的,如果您向浏览器提供虚假的输入,浏览器就更加健壮(而不是如果您有一个放错位置的浏览器)。
当前的搜索引擎可能不会为你的页面编制索引(它们只是把它们当作整体图像来处理)。Never mind
内容顺序不清楚。像inkscape这样的工具不需要关心顺序元素的输出,只要它们在输出中被正确定位并且z顺序是正确的。但是,如果你正在制作一个网页,这很重要,因为屏幕阅读器不确定哪个元素在语义上是第一位的。如果您只是手工编辑SVG,这不是问题,但是通常的SVG工具可能会扰乱您的订单。对于HTML,它通常是清晰的。
很难很好地实现片段标识符(XML PARSING ERRORat end of url)。下面的演示程序使用它们,但我认为这取决于javascript(不利于搜索引擎和禁用javascript的人)。(我不确定这件事)
*̶ ̶I̶t̶'̶s̶ ̶d̶i̶f̶f̶i̶c̶u̶l̶t̶ ̶t̶o̶ ̶c̶o̶n̶v̶e̶r̶t̶ ̶t̶o̶ ̶t̶e̶x̶t̶ ̶(̶f̶o̶r̶ ̶s̶e̶a̶r̶c̶h̶ ̶e̶n̶g̶i̶n̶e̶s̶,̶ ̶s̶c̶r̶e̶e̶n̶ ̶r̶e̶a̶d̶e̶r̶s̶,̶ ̶c̶o̶p̶y̶-̶a̶n̶d̶-̶p̶a̶s̶t̶e̶,̶ ̶e̶t̶c̶.̶)̶,̶ ̶p̶a̶r̶t̶i̶c̶u̶l̶a̶r̶l̶y̶ ̶w̶h̶e̶n̶ ̶g̶e̶n̶e̶r̶a̶t̶e̶d̶ ̶w̶i̶t̶h̶ ̶g̶r̶a̶p̶h̶i̶c̶a̶l̶ ̶t̶o̶o̶l̶s̶.̶ ̶F̶o̶r̶ ̶e̶x̶a̶m̶p̶l̶e̶,̶ ̶h̶t̶t̶p̶:̶/̶/̶w̶w̶w̶.̶a̶f̶r̶o̶k̶a̶d̶a̶n̶s̶.̶c̶o̶m̶/̶P̶a̶g̶e̶_̶0̶1̶.̶s̶v̶g̶ ̶s̶h̶o̶w̶s̶ ̶u̶p̶ ̶i̶n̶ ̶G̶o̶o̶g̶l̶e̶ ̶a̶s̶ ̶>̶.̶ ̶I̶n̶ ̶c̶o̶n̶t̶r̶a̶s̶t̶,̶ ̶e̶v̶e̶n̶ ̶c̶r̶a̶p̶p̶y̶ ̶W̶Y̶S̶I̶W̶Y̶G̶ ̶H̶T̶M̶L̶ ̶g̶e̶n̶e̶r̶a̶t̶o̶r̶s̶ ̶w̶o̶n̶'̶t̶ ̶s̶p̶l̶i̶t̶ ̶u̶p̶ ̶r̶u̶n̶s̶ ̶o̶f̶ ̶t̶e̶x̶tL I K E T H A T.
需要考虑的是,在XHTML和HTML5中嵌入SVG元素是可能的,因此您可以在不抛弃浏览器/搜索引擎的情况下获得一些好处。
现有使用
我听说它用于演示(在某些方面更接近于绘图,因此上面的一些缺点不适用):
"Jessyink is a JavaScript that can be incorporated into an Inkscape SVG image containing several layers. Each layer will be converted into one slide of a presentation."
Another implemetationinfoan example

关于html5 - 将整个网页设计为SVG文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10892659/

相关文章:

css - 在巨无霸下面添加内容

android - 如何在JQMobile中将列表背景设置为透明?

css - SVG 作为 IE 中的背景图像并带有缩放功能

math - SVG 矩阵到旋转度数

python - Flask 渲染 svg 文件,没有交互性

html - 在移动设备上调整 SVG 的大小

html - HTML定位问题-放在一边,页脚,填充

javascript - 将具有循环结构的JS对象存储在本地存储上,并在重载时获取循环结构

php - 如何正确使用foreach()

html - 如何允许在嵌入的 SVG 中引用外部图像?