Ответ 1
Технические характеристики
В соответствии со спецификацией свойство visibility
должно по-прежнему влиять на макет. Это подразумевает, что он не должен влиять на прокрутку, если элемент заканчивается тем, что вызывает поведение прокрутки. Кроме того, любые дочерние элементы, установленные в visible
, должны быть видны внутри элемента hidden
.
Наблюдаемое поведение
Используя эту скрипту...
Firefox, IE 8-10, Opera
Делает visibility: hidden
в элементе html
не отображает body
(как и должно), но все же показывает некоторый рендеринг самого html
, поскольку он показывает background-color
. Как отметил в своем комментарии BoltClock, этого можно ожидать, так как background
of html
(согласно спецификации), чтобы стать...
"фон холста и его область рисования фона расширяются чтобы покрыть весь холст".
Эти браузеры также позволяют элементам вернуться к visible
внутрь, чтобы показать, как указано спецификация для visibility
, поэтому div
показывает и может прокручиваться.
Chrome и Safari
Он не отображает background-color
на html
, но позволяет показать div
, и он показывает полосы прокрутки. Таким образом, Chrome не распространяет свойство background
на холст, предположительно потому, что его visibility
был установлен в hidden
.
IE7
Элемент background-color
для элемента html
не отображает (например, Chrome), но также нет полос прокрутки для элемента div
внутри. Это, по-видимому, указывает на то, что он не подходит для размещения в спецификации.
Так может быть, что свойство visibility: hidden
является частью вашей проблемы. Очевидно, что фоновая точка относится не к вашей проблеме прокрутки, а относится к точке вашего общего вопроса о том, как свойство влияет на элемент html
.
По моему мнению, рендеринг Chrome и Safari будет казаться наиболее интуитивным (что я мог бы ожидать как конструктор), поскольку я не ожидал рендеринга background-color
(поскольку элемент hidden
), но в то же время, если я устанавливаю дочерний элемент как visible
, тогда я ожидаю, что браузер позволит мне прокручивать от имени этого дочернего элемента, даже если обертка html
установлена на visibility: hidden
. Однако, независимо от того, являются ли браузеры веб-браузера или другие браузеры ближайшими к спецификации аргументами, поскольку, как отмечает BoltClock в своем комментарии, спецификация не указывает, указывает ли visibility
на элемент html
или не влияет на распространение свойства background
).