【问题标题】:Using JS Raphael to create a navigation bar. Bad idea? Good idea?使用 JS Raphael 创建导航栏。馊主意?好主意?
【发布时间】:2012-10-24 07:00:07
【问题描述】:

我正在尝试为我的所有页面创建一个位于我网站顶部的导航栏。

我对 Raphael 库使用的代码更加熟悉,而且它比创建一堆图块和相应的 JavaScript 对我来说要简单得多。

将画布用于这些目的有什么问题吗?

有人有更好的主意吗?

提前感谢您的任何建议。

更新:渲染速度有问题?同样,我完全愿意接受其他建议!

【问题讨论】:

  • 导航栏应该变得多复杂?您需要使用任何 SVG 功能吗?
  • 没有 JS 的用户如何访问导航栏?
  • @logical Chimp 什么类型的用户没有JS?该库声称与 IE6 (2001) 或更高版本的所有用户兼容
  • 无论你做什么,从基于元素的“非 js”版本开始,你可以为使用 js 的用户删除和增强它。 ...但我同意 - 大多数用户都有 js,只是关于什么是“关键任务”内容的问题。
  • re:“什么类型的用户没有JS?” - 请在下面查看我的回答,或查看searchenginepeople.com/blog/stats-no-javascript.html 和/或stackoverflow.com/questions/1785083/…

标签: javascript user-interface svg navigation raphael


【解决方案1】:

简短回答:可能不是最好的主意。

更长的答案:正如 Chimp 所暗示的,将画布用作关键元素肯定是个坏主意,因为不支持 javascript 和/或不支持画布的浏览器(包括网络蜘蛛和用于各种感知差异的浏览器(失明等))什么也看不见。 (对于人们来说,这意味着他们不会找到您的子页面。对于网络蜘蛛(Google 等)来说,这意味着没有人会找到您的子页面。)

如果您想使用 Raphael 或其他基于画布的解决方案,为了可访问性,您应该从基于 html 的导航元素开始(就像多年来一直在使用的 div 中的 ul li),然后您将通过 javascript 替换它当页面加载时(请参阅HTML5 Canvas replace to <div> 了解如何执行此操作的示例(包括 jsfiddle 链接)

这不是最好的主意的原因是,您需要确保您的 html nav 元素与基于画布的元素保持同步 - 尽管我猜它是否是由服务器端进程(例如 wordpress)生成的构建 html nav 元素不需要太多工作,然后您只需要定期对其进行测试以确保其正常工作。

【讨论】:

  • 那么我是否可以测试并查看用户是否启用了 JavaScript,如果没有,是否会出现不同的“非 Java”布局?
  • 是的,这完全有可能——虽然一项测试是自动完成的,但不支持 JavaScript 的浏览器只会忽略脚本标签中的任何内容。请参阅stackoverflow.com/a/121259/602581 了解一种实现思路,但坦率地说,当您在禁用 javascript 和禁用画布的情况下测试站点时,站点工作更重要。如果 Raphael 尚不支持某种兼容性测试,您也可以使用 modernizr.com
  • 另外,也许看看modernizr加载教程——modernizr.com/docs/#load
猜你喜欢
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2021-08-15
  • 2011-10-21
  • 1970-01-01
相关资源
最近更新 更多