Відповіді:
Ось таке рішення, яке я нарешті придумав, використовуючи div як контейнер для динамічного фону.
z-index
для не фонового використання.left
або right
для стовпця на повну висоту.top
або bottom
для рядка повної ширини.EDIT 1: CSS нижче відредаговано, оскільки він не відображався правильно у FF та Chrome. перейшов position:relative
на HTML і встановив тіло height:100%
замість min-height:100%
.
EDIT 2: Додано додаткові коментарі до CSS. Додано ще кілька інструкцій вище.
CSS:
html{
min-height:100%;/* make sure it is at least as tall as the viewport */
position:relative;
}
body{
height:100%; /* force the BODY element to match the height of the HTML element */
}
#cloud-container{
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
overflow:hidden;
z-index:-1; /* Remove this line if it's not going to be a background! */
}
Html:
<!doctype html>
<html>
<body>
<div id="cloud-container"></div>
</body>
</html>
Чому?
html{min-height:100%;position:relative;}
Без цього хмарний контейнер DIV видаляється з контексту компонування HTML. position: relative
гарантує, що DIV залишається всередині поля HTML, коли він намальований так, що bottom:0
стосується нижньої частини поля HTML. Ви також можете використовувати height:100%
хмарний контейнер, оскільки він зараз стосується висоти тегу HTML, а не вікна перегляду.
html
елемента. Чому так?
height
- говорити "ти такий високий; не більше і не менше ». Це означає, що це буде висота вікна перегляду. Ми хочемо, щоб він був принаймні таким же високим, як вікно перегляду або вище. min-height
робить це прекрасно.
<html>
та розміщення на вікні перегляду - це дві окремі речі. Дякую!
З HTML5 найпростіший спосіб - це просто зробити height: 100vh
. Де "vh" означає висоту вікна перегляду вікна браузера. Чуйний до зміни розміру браузера та мобільних пристроїв.
vw
.
У мене була подібна проблема, і рішенням було це зробити:
#cloud-container{
position:absolute;
top:0;
bottom:0;
}
Я хотів, щоб сторінка, орієнтована на сторінку, була висотою 100% від висоти сторінки, тому моє загальне рішення було:
#cloud-container{
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
width: XXXpx; /*otherwise div defaults to page width*/
margin: 0 auto; /*horizontally centers div*/
}
Вам може знадобитися зробити батьківський елемент (або просто 'body') position: relative;
cloud-container
?
Ви можете обманювати, використовуючи стовпці Faux Або ви можете використовувати хитрість CSS
За допомогою таблиці просто:
<html>
<head>
<title>100% Height test</title>
</head>
<body>
<table style="float: left; height: 100%; width: 200px; border: 1px solid red">
<tbody>
<tr>
<td>Nav area</td>
</tr>
</tbody>
</table>
<div style="border: 1px solid green;">Content blabla... text
<br /> text
<br /> text
<br /> text
<br />
</div>
</body>
</html>
Коли ДІВ був представлений, люди настільки боялися столів, що бідний DIV став метафоричним молотком.
Використовуйте позицію абсолютну. Зауважте, що ми не звикли використовувати абсолютне положення, яке вимагає викладати речі вручну або мати плаваючі діалоги. Це автоматично розтягується, коли ви зміните розмір вікна або вмісту. Я вважаю, що для цього потрібен стандартний режим, але він буде працювати в IE6 і вище.
Просто замініть div на id "thecontent" своїм вмістом (вказана висота є лише для ілюстрації, вам не потрібно вказувати висоту фактичного вмісту.
<div style="position: relative; width: 100%;">
<div style="position: absolute; left: 0px; right: 33%; bottom: 0px; top: 0px; background-color: blue; width: 33%;" id="navbar">nav bar</div>
<div style="position: relative; left: 33%; width: 66%; background-color: yellow;" id="content">
<div style="height: 10000px;" id="thecontent"></div>
</div>
</div>
Це працює таким чином, що зовнішній діва виступає орієнтиром для навігаційної смуги. Зовнішній поділ розтягується змістом діва "вміст". Навісна смуга використовує абсолютне позиціонування, щоб розтягнутись до висоти свого батьківського. Для горизонтального вирівнювання ми робимо, як розділ вмісту зміщується на ту саму ширину вказівної панелі.
Це значно полегшується з моделлю гнучких коробок CSS3, але це ще не доступно в IE і має деякі свої примхи.
Я зіткнувся з тією ж проблемою, що і ти. Я хотів зробити DIV
як фон, чому, тому що його легко маніпулювати дівом через JavaScript. У всякому разі, три речі я зробив у css для цього діва.
CSS:
{
position:absolute;
display:block;
height:100%;
width:100%;
top:0px;
left:0px;
z-index:-1;
}
Якщо ви орієнтуєтесь на більш сучасні браузери, життя може бути дуже простим. спробуйте:
.elem{
height: 100vh;
}
якщо вам це потрібно на 50% сторінки, замініть 100 на 50.
Я хочу охопити всю веб-сторінку, перш ніж запропонувати модальне спливаюче вікно. Я спробував багато методів за допомогою CSS та Javascript, але жоден з них не допомагає, поки я не знайшов наступне рішення. Це працює для мене, я сподіваюся, що і вам це допоможе.
<!DOCTYPE html>
<html>
<head>
<style>
html, body {
margin: 0px 0px;
height 100%;
}
div.full-page {
position: fixed;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
background-color: #000;
opacity:0.8;
overflow-y: hidden;
overflow-x: hidden;
}
div.full-page div.avoid-content-highlight {
position: relative;
width: 100%;
height: 100%;
}
div.modal-popup {
position: fixed;
top: 20%;
bottom: 20%;
left: 30%;
right: 30%;
background-color: #FFF;
border: 1px solid #000;
}
</style>
<script>
// Polling for the sake of my intern tests
var interval = setInterval(function() {
if(document.readyState === 'complete') {
clearInterval(interval);
isReady();
}
}, 1000);
function isReady() {
document.getElementById('btn1').disabled = false;
document.getElementById('btn2').disabled = false;
// disable scrolling
document.getElementsByTagName('body')[0].style.overflow = 'hidden';
}
function promptModalPopup() {
document.getElementById("div1").style.visibility = 'visible';
document.getElementById("div2").style.visibility = 'visible';
// disable scrolling
document.getElementsByTagName('body')[0].style.overflow = 'hidden';
}
function closeModalPopup() {
document.getElementById("div2").style.visibility = 'hidden';
document.getElementById("div1").style.visibility = 'hidden';
// enable scrolling
document.getElementsByTagName('body')[0].style.overflow = 'scroll';
}
</script>
</head>
<body id="body">
<div id="div1" class="full-page">
<div class="avoid-content-highlight">
</div>
</div>
<button id="btn1" onclick="promptModalPopup()" disabled>Prompt Modal Popup</button>
<div id="demo">
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
<h2>Original content</h2>
</div>
<div id="div2" class="modal-popup">
I am on top of all other containers
<button id="btn2" onclick="closeModalPopup()" disabled>Close</button>
<div>
</body>
</html>
Удачі ;-)
* {
margin: 0;
}
html, body {
height: 90%;
}
.content {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto ;
}
document.body.onload = function () {
var textcontrol = document.getElementById("page");
textcontrol.style.height = (window.innerHeight) + 'px';
}
<html>
<head><title></title></head>
<body>
<div id="page" style="background:green;">
</div>
</body>
</html>
Просто, просто загорніть його в таблицю, поділившись ...
HTML:
<div class="fake-table">
<div class="left-side">
some text
</div>
<div class="right-side">
My Navigation or something
</div>
</div>
CSS:
<style>
.fake-table{display:table;width:100%;height:100%;}
.left-size{width:30%;height:100%;}
.left-size{width:70%;height:100%;}
</style>