2013-02-25 44 views
1

我见过很多的插件/库,包括jQuery Mobile的,为了隐藏 的元素来改变它的左和/或顶级属性,例如:具有显示属性或左/顶部的隐藏元素?

div { 
    left : 99999px; 
    top : 99999px; 
} 

现在这种情况下,多次弄乱我的代码,因为它并不总是消失,有时增加滚动到该属性,所以我发现自己编辑几个插件和CSS来隐藏元素使用display:none;

我一直在想,财产,或者说这只是开发者的糟糕做法。

这两种方法之间是否存在任何差异?是否有任何JavaScript代码不能在隐藏的元素上运行?什么是更好的方法?

+1

:许多读者的声音可能会跳过一个元素与'显示:none'或'知名度:hidden' – fcalderan 2013-02-25 10:57:55

+0

我不知道你是什​​么意思的声音读者,是否有工具,口头描述网站?如果亚,那么他们为什么要描述一个不应该被看到的元素? – 2013-02-25 11:03:31

回答

1

TLDR; :屏幕阅读器

这里有不同的方法,使一个元素无形:

  • display:none;需要的元素跳出流程。该文档呈现为该元素不存在。所以元素是没有被屏幕阅读器发声。

  • 然后你有visibility:hidden这使得箱子不可见,但仍然影响布局

  • 最后,你有一个像与偏移绝对定位的黑客,使元素消失,而不会影响布局同时还发声它。下面是HTML5的样板采取了一个例子:我认为这是无障碍的问题

    .visuallyhidden { 
    
        border: 0; 
        clip: rect(0 0 0 0); 
        height: 1px; 
        margin: -1px; 
        overflow: hidden; 
        padding: 0; 
        position: absolute; 
        width: 1px; 
    } 
    
+0

**是什么声音**?当'绝对'或'显示:隐藏'时,'专业人员'和'缺点'在哪里? – 2013-02-25 11:07:40

+0

见http://en.wikipedia.org/wiki/Screen_reader – 2013-02-25 11:08:54

+0

但是,为什么你要发声不应该可见的东西?我可以理解布局的影响,但不是这个... – 2013-02-25 13:43:40