2013-02-25 62 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