Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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
使DIV在CSS和JavaScript中不可见_Javascript_Css_Html_Invisible - Fatal编程技术网

使DIV在CSS和JavaScript中不可见

使DIV在CSS和JavaScript中不可见,javascript,css,html,invisible,Javascript,Css,Html,Invisible,通过将display设置为none,visibility设置为hidden,我成功地使DIV标记在JavaScript中不可见。也可以通过该类实现: .invisible { display: none; visibility: hidden; } Display none将确保DIV框为空,visibility hidden将确保它不可见。这种方法的问题是,当我有可滚动的div或文本区域,且内容溢出时,当您设置display:none时,一些浏览器会忘记这些元素的滚动位置。有

通过将display设置为none,visibility设置为hidden,我成功地使DIV标记在JavaScript中不可见。也可以通过该类实现:

.invisible {
    display: none;
    visibility: hidden;
}
Display none将确保DIV框为空,visibility hidden将确保它不可见。这种方法的问题是,当我有可滚动的div或文本区域,且内容溢出时,当您设置display:none时,一些浏览器会忘记这些元素的滚动位置。有没有更好的方法使DIV不可见而不使用display属性?如果可能的话,我宁愿不使用JavaScript来记录滚动位置等

编辑:

在你的帮助下,我成功地解决了这个问题,我应用了以下方法:

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

.visible {
    visibility: visible;
    position: static;
}

我试着向左:-9999px,但这会扩展IE中的垂直滚动条。。。我还将textarea包装在另一个DIV中,并将可见/不可见样式应用于该DIV,因为否则textarea将失去其滚动位置。我在我的iPhone上用Chrome、Firefox、IE和Safari进行了测试。只需注意,环绕文本区域的DIV在FF中似乎没有帮助,滚动条仍然重置。但可滚动div现在可以了。谢谢你的帮助

如果希望元素不可见但仍呈现,则可以使用
可见性:隐藏
<代码>显示:无
将完全删除它并导致您提到的滚动行为。

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

布局方面,显示:没有一个会将其完全从渲染树中移除,并进入这个阴暗世界。它不再有明确定义的尺寸或位置


如果您需要一些占位符作为滚动位置,我建议使用占位符元素。一些零高度DIV,甚至可能是
,这可能会起作用:

.invisible {
    position: absolute;
    left: -9999px;
}

编辑:我将查看HTML5样板代码中的,以探索其他使事物消失的方法。

我宁愿使用固定的高度和宽度(高度:0;宽度:0;)。不要忘记消除边框、填充和边距。

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

$('#my_element').show()
$('#my_element').hide()
如果你想让你的div变得不可见并且仍然存在于页面中,那么你可以使用有效的技巧:

$('#my_element').css('opacity', '0.0');  // invisible Maximum
$('#my_element').css('opacity', '1.0');  // visible maximum

只是一个猜测,但把它放在一个容器div中,并使该div不可见,会不会做到这一点?由于这是一个猜测,我不会给出答案。嗯,我原以为你的解决方案很成功,但现在我发现android浏览器仍然向上滚动…:/啊,我没有安卓…
可见性:隐藏仍会导致元素在布局中占据空间。我猜这不是OP想要的,因为他对
display:none
减去滚动条问题很满意。是的,我知道可见性,但是如果你的DIV是一个块,它仍然会占用空间。+1感谢你指出
visibility:hidden
display:none
。这是一个有用的区别。真的很有效:事实上,我不希望使用jquery,除非我不得不这样做,但这将是一个更容易的选择,看看我写的所有代码:)