客户要求他们的主页开始空白(只有徽标和背景图像可见),然后在一两秒钟后在导航和内容中逐渐消失。
我可以从通过CSS隐藏的内容开始,然后用jQuery淡入。不幸的是,这违反了渐进式增强:在活动代码运行之前,站点将完全不可用,这会给使用屏幕阅读器的视障人士等带来问题。
我考虑的两个变通方法是Flash和<noscript>
标记。Flash似乎是多余的,因为它没有在网站的其他地方使用;此外,主页内容丰富,有一组不断更新的新闻项目,有点像一个轻博客。<noscript>
标签对使用屏幕阅读器的视障人士没有帮助,因为他们的浏览器通常启用了脚本。
我错过了一个解决方案吗?还是说这不是个好主意?
执行以下操作
<html>
....
<body>
<script>$("body").addClass("hide");</script>
...
用这个css
body.hide #myHidden-div{
opacity: 0;
}
然后停顿两秒钟后,你应该可以执行$("#myHidden-div").fadeIn();
如果用户禁用了js,那么addClass
标签将永远不会被触发,也不会隐藏任何东西。我认为你根本不需要使用<noscript>
标签。
你必须确保脚本标签在<body>
之后,这样用户就不会看到内容的跳跃,然后突然隐藏起来。这比默认隐藏所有内容要好,因为一些搜索引擎可能会注意到您隐藏了文本,并因为垃圾邮件的原因而忽略它。
我认为你可以做这样一个hack:
- 默认隐藏内容。
- 为你想要显示的元素添加另一个css类
- 在noscript标签中,添加另一个带有新CSS类定义的CSS文件,以显示内容。
- 否则,使用jQuery淡出元素。
或者,推回你正在建立这个网站的人,因为这是一个可怕的用户体验。div = D
为视障人士和其他人提供不同的网站。一个有剧本,另一个没有。
如果您有一些服务器端代码,可以像get变量一样简单。
在头部,你可以在javascript中创建设置这个CSS规则:
*
{
position:relative;
left:-9999px;
}
使用jquery: $("*").css({position: 'relative', left: '-9999px'})
然后在页面底部运行javascript来隐藏所有内容并删除此CSS规则,然后像您想要的那样逐渐淡出。
这适用于非javascript浏览器,以及启用javascript的屏幕阅读器:)
我认为唯一的,不是理想的解决方案,这个问题是使用jQuery的hide()
函数后,你已经加载了元素,然后淡出他们。你会看到一闪而过的内容,但它是可访问的。
我这里有一个小例子