在CSS和JavaScript中使DIV不可见

Ara*_*yan 19 html javascript css invisible

通过将显示设置为none并将可见性设置为hidden,我已设法在JavaScript中使DIV标记不可见.这个类也可以实现:

.invisible {
    display: none;
    visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

显示无将确保DIV框为空,隐藏可见性将确保它不可见.这个方法的问题是当我有可滚动的DIV或带溢出内容的textareas时,当你设置display:none时,某些浏览器会忘记这些元素的滚动位置.有没有更好的方法在不使用display属性的情况下使DIV不可见?我宁愿不使用JavaScript来记录滚动位置,如果可能的话.

编辑:

我设法在你的帮助下解决了这个问题,我申请了以下内容:

.invisible {
    visibility: hidden;
    position: absolute;
    top: -9999px;
}

.visible {
    visibility: visible;
    position: static;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了左:-9999px,但这扩展了IE中的垂直滚动条...我还将我的textarea包装在另一个DIV中并将可见/不可见的样式应用于此,因为textarea会失去其滚动位置.我在iPhone上的Chrome,Firefox,IE和Safari中进行了测试.只是一个注释,DIV缠绕textarea似乎没有帮助FF,滚动条仍然重置.但是可滚动的DIV现在很好.谢谢你的帮助!

Chr*_*tal 23

visibility:hidden如果您希望元素不可见但仍然呈现,则可以使用.display:none将完全删除它并导致您提到的滚动行为.

  • `visibility:hidden`仍会导致元素占用布局中的空间.我猜这不是OP想要的,因为他对`display:none`减去滚动条问题很满意. (4认同)

Bry*_*ing 9

这可能会奏效:

.invisible {
    position: absolute;
    left: -9999px;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我将看看HTML5 Boilerplate代码中的常见帮助程序,以探索使事情消失的其他方法.


Ars*_*mad 6

您可以使用jQuery来实现解决方案。如果你想完全隐藏/显示div,那么你可以使用:

$('#my_element').show()
$('#my_element').hide()
Run Code Online (Sandbox Code Playgroud)

如果你想让你的 div 变得不可见并且它仍然存在于页面中,那么你可以使用有效的技巧:

$('#my_element').css('opacity', '0.0');  // invisible Maximum
$('#my_element').css('opacity', '1.0');  // visible maximum
Run Code Online (Sandbox Code Playgroud)


Ali*_*Ali 5

您可以使用JQuery hide()方法。$('#DivID')。hide(); 或$('。DivClass')。hide();或