Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 清洁渐进增强_Javascript_Css_Seo_Accessibility_Progressive Enhancement - Fatal编程技术网

Javascript 清洁渐进增强

Javascript 清洁渐进增强,javascript,css,seo,accessibility,progressive-enhancement,Javascript,Css,Seo,Accessibility,Progressive Enhancement,我正在使用渐进增强来建立一个网站。这包括菜单、幻灯片等。这些项目作为无序列表包含在页面中,然后JavaScript应用格式 我关心的是:如何避免未格式化内容的闪现,即在应用格式化之前,无序列表是可见的?这方面是否有最佳实践 重要提示:网站必须保持SEO友好和可访问性(这就是为什么我首先使用渐进增强)。例如,将无序列表的初始样式设置为显示:none是毫无疑问的。使用CSS进行格式化,而不是JavaScript 例如,将无序列表的初始样式设置为“显示:无”是毫无疑问的 如果使用CSS检测到JavaS

我正在使用渐进增强来建立一个网站。这包括菜单、幻灯片等。这些项目作为无序列表包含在页面中,然后JavaScript应用格式

我关心的是:如何避免未格式化内容的闪现,即在应用格式化之前,无序列表是可见的?这方面是否有最佳实践


重要提示:网站必须保持SEO友好和可访问性(这就是为什么我首先使用渐进增强)。例如,将无序列表的初始样式设置为显示:none是毫无疑问的。

使用CSS进行格式化,而不是JavaScript

例如,将无序列表的初始样式设置为“显示:无”是毫无疑问的

如果使用CSS检测到JavaScript可用,并且在包含任何内容之前运行一些脚本,则可以间接将样式设置为
display:none

<head>
    <style type="text/css">
        body.withjs #menu { display: none; }
    </style>
</head>
<body>
    <script type="text/javascript">
        document.body.className= 'withjs';
        window.onload= function() {
            ...do stuff with menu...
            document.getElementById('menu').style.display= 'block';
        };
    </script>
    ...
    <ul id="menu">
        ...
    </ul>
</body>

body.withjs#菜单{显示:无;}
document.body.className='withjs';
window.onload=function(){
…做菜单上的事。。。
document.getElementById('menu').style.display='block';
};
...
    ...

你是真的看到了一个未格式化的内容,还是只是假设你会看到一个?完全忽略了JavaScript应用格式化的部分…不要这样做,这不是渐进式的增强。使用CSS进行样式化,然后添加JavaScript进行行为。嗯……两者都有。实际上,我在某些情况下会看到它,这取决于浏览器(如Firefox)、内容(如图像)或应用格式时(如document.ready)。z-index可能是您的朋友。为未设置样式的内容提供z索引:0;。为页面提供正常的背景z索引:1;。然后,使用JavaScript,给出现在样式化的内容z-index:2;。这对我来说很有效,而且我没有注意到排名的任何变化。但是你会怎么做,比如幻灯片或内容幻灯片?正如我在问题中所说,“display:none”不符合要求。只传输一张带有原始响应的图像。提供指向下一张幻灯片和上一张幻灯片的链接。使用JavaScript将链接替换为XmlHttpRequest调用。事实上,这正是我试图避免的(参见我关于SEO和可访问性的观点)。尤其是SEO和可访问性受益于我所描述的方法:该站点可以在没有CSS和JavaScript的情况下使用。理解CSS的客户端可以得到一个更好看的版本。理解JavaScript的客户端可以获得更多的交互性。这就是渐进式增强的意义所在。你可以用你想要的任何花哨的导航来替换上一页和下一页的链接。我的理解是,搜索引擎只会看到幻灯片/滑块的第一个图像(或第一个html内容)。他们不会看到其他幻灯片,因为这些幻灯片稍后将通过AJAX加载。最好的情况是,他们会在导航后面找到上一张和下一张幻灯片。我喜欢这样!旁白:你怎么看待其他隐藏技术,比如可见性隐藏或左-9999px,而不是显示无?或者像Pete Wilson建议的那样使用z-index?这在可访问性或搜索引擎优化方面没有任何区别。使用定位或z-index通常是为了解决显示或可见性方面的其他问题,特别是当内容包含与隐藏交互不好的插件时。@Christophe,@bobince我认为隐藏方法有所不同,但这取决于您为谁或什么优化。我真的不确定这会对SEO有多大影响,但这取决于SE在算法中的构建,然而,众所周知,
display:none
visibility hidden
可能不是辅助技术用户访问的最佳方法:因此,我更喜欢
文本缩进
方法或
剪辑
@谢谢你的评论!我找到了关于剪裁方法的其他信息,但仍然没有那么简单: