Итак, у меня есть проблема, которая, как мне кажется, довольно распространена, но мне еще предстоит найти хорошее решение. Я хочу, чтобы оверлейный div покрывал ВСЮ страницу ... НЕ только область просмотра. Я не понимаю, почему это так сложно сделать ... Я пробовал установить body, html heights на 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.
Ответы:
Область просмотра - это все, что имеет значение, но вы, вероятно, хотите, чтобы весь веб-сайт оставался затемненным даже при прокрутке. Для этого вы хотите использовать
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>
источник
<select>
элемент в iOS, он перемещает все окно просмотра и в основном все ломает. неподвижные элементы перемещаются, то , что не следует прокрутки прокрутки и т.д.body:before { content: " "; width: 100%; height: 100%; position: fixed; z-index: -1; top: 0; left: 0; background: rgba(0, 0, 0, 0.5); }
источник
Прежде всего, я думаю, вы неправильно поняли, что такое область просмотра. Область просмотра - это область, которую браузер использует для отображения веб-страниц, и вы никоим образом не можете создавать свои веб-сайты, чтобы каким-либо образом переопределить эту область.
Во-вторых, похоже, что причина того, что ваш оверлей-div не покрывает всю область просмотра, заключается в том, что вам нужно удалить все поля на BODY и HTML.
Попробуйте добавить его вверху таблицы стилей - он сбрасывает все поля и отступы для всех элементов. Облегчает дальнейшую разработку:
* { margin: 0; padding: 0; }
Изменить: я просто лучше понял ваш вопрос.
Position: fixed;
вероятно, сработает для вас, как написал Джонатан Сэмпсон.источник
*{}
и вы увидите намного больше :)У меня было немало проблем, так как я не хотел ИСПРАВЛЯТЬ оверлей на месте, так как я хотел, чтобы информация внутри наложения была прокручиваемой по тексту. Я использовал:
<html style="height=100%"> <body style="position:relative"> <div id="my-awesome-overlay" style="position:absolute; height:100%; width:100%; display: block"> [epic content here] </div> </body> </html>
Конечно, для div посередине нужен контент и, возможно, прозрачный серый фон, но я уверен, что вы уловили суть!
источник
Я посмотрел на ответ Нейта Барра выше, который, похоже, вам понравился. Это не сильно отличается от более простого
html {background-color: grey}
источник