Сделать страницу Div overlay ENTIRE (а не только в окне просмотра)?
Итак, у меня есть проблема, которая, я думаю, довольно распространена, но мне еще предстоит найти хорошее решение. Я хочу, чтобы оверлейный div закрывал страницу ENTIRE... Не только окно просмотра. Я не понимаю, почему это так сложно сделать... Я пробовал настройку body, html высот до 100% и т.д., Но это не работает. Вот что я до сих пор:
<html>
<head>
<style type="text/css">
.OverLay { position: absolute; z-index: 3; opacity: 0.5; filter: alpha(opacity = 50); top: 0; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; background-color: Black; color: White;}
body { height: 100%; }
html { height: 100%; }
</style>
</head>
<body>
<div style="height: 100%; width: 100%; position: relative;">
<div style="height: 100px; width: 300px; background-color: Red;">
</div>
<div style="height: 230px; width: 9000px; background-color: Green;">
</div>
<div style="height: 900px; width: 200px; background-color: Blue;"></div>
<div class="OverLay">TestTest!</div>
</div>
</body>
</html>
Я бы тоже был готов к решению в JavaScript, если он существует, но я бы скорее использовал простой CSS.
Ответы
Ответ 1
В окне просмотра все, что имеет значение, но вы, вероятно, хотите, чтобы весь веб-сайт оставался темным даже во время прокрутки. Для этого вы хотите использовать position:fixed
вместо position:absolute
. Фиксированный элемент будет сохранять элемент на экране при прокрутке, создавая впечатление, что все тело потемнело.
Пример: http://jsbin.com/okabo3/edit
div.fadeMe {
opacity: 0.5;
background: #000;
width: 100%;
height: 100%;
z-index: 10;
top: 0;
left: 0;
position: fixed;
}
<body>
<div class="fadeMe"></div>
<p>A bunch of content here...</p>
</body>
Ответ 2
body:before {
content: " ";
width: 100%;
height: 100%;
position: fixed;
z-index: -1;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.5);
}
Ответ 3
Прежде всего, я думаю, вы неправильно поняли, что такое viewport. Окно просмотра - это область, которую браузер использует для рендеринга веб-страниц, и вы никоим образом не можете создавать свои веб-сайты, чтобы каким-либо образом переопределить эту область.
Во-вторых, кажется, что причина, по которой ваш overlay-div не будет охватывать весь видовой экран, заключается в том, что вам нужно удалить все поля на BODY и HTML.
Попробуйте добавить это в начало своей таблицы стилей - он сбрасывает все поля и paddings для всех элементов. Делает дальнейшее развитие проще:
* { margin: 0; padding: 0; }
Изменить:
Я только лучше понял ваш вопрос. Position: fixed;
, вероятно, сработает для вас, как написал Джонатан Сампсон.
Ответ 4
Я посмотрел на ответ Нейт Барр выше, который вам понравился. Это не похоже на более простой
html {background-color: grey}