CSS 100% Высота, а затем прокрутка DIV не страница
Хорошо, поэтому мне еще не удалось найти вопрос с ответом, поэтому я решил сделать свой собственный.
Я пытаюсь создать компоновку жидкости на 100%, которая технически я сделал.
http://stickystudios.ca/sandbox/stickyplanner/layout/index2.php
НО, что я хочу сделать сейчас, это сделать страницу 100% в ВЫСОТЕ... Но я не хочу, чтобы страница прокручивалась, я хочу, чтобы внутренний DIV прокручивался.
Итак, я верю, что я хочу, чтобы он обнаружил высоту экрана просмотра, перешел на 100%, а затем IF-контент длиннее экрана, прокрутите страницу DIV, а не страницу.
Надеюсь, это имеет смысл.
Спасибо заранее.
Джастин
Ответы
Ответ 1
<html>
<body style="overflow:hidden;">
<div style="overflow:auto; position:absolute; top: 0; left:0; right:0; bottom:0">
</div>
</body>
</html>
Это должно сделать это для простого случая
Я считаю, что это сработает для вашего случая
<html>
<body style="overflow:hidden;">
<div id="header" style="overflow:hidden; position:absolute; top:0; left:0; height:50px;"></div>
<div id="leftNav" style="overflow:auto; position:absolute; top:50px; left:0; right:200px; bottom:50px;"></div>
<div id="mainContent" style="overflow:auto; position:absolute; top:50px; left: 200px; right:0; bottom:50px;"></div>
<div id="footer" style="overflow:hidden; position:absolute; bottom:0; left:0; height:50px"></div>
</body>
</html>
этот пример даст вам статический верхний и нижний колонтитулы и позволит прокручивать навигатор и область содержимого.
Ответ 2
Это другой способ сделать это со всеми панелями abs, он будет работать не на IE6, но я могу предоставить обходной CSS для IE6, если это требование:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Fluid Layout</title>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<style rel="stylesheet" type="text/css">
body { background-color:black; margin:0px; padding:0px; }
.pageBox { position:absolute; top:20px; left:20px; right:20px; bottom:20px; min-width:200px}
.headerBox { position:absolute; width:100%; height:50px; background-color:#333; }
.contentBox { position:absolute; width:100%; top:52px; bottom:32px; background-color:blue; }
.footerBox { position:absolute; width:100%; height:30px; background-color:#ccc; bottom:0px; }
.contentBoxLeft { position:absolute; width:20%; height:100%; background-color:#b6b6b6; }
.contentBoxRight { position:absolute; width:80%; left:20%; height:100%; background-color:white; }
.contentBoxLeft,
.contentBoxRight { overflow:auto; overflow-x:hidden; }
</style>
</head>
<body>
<div class="pageBox">
<div class="headerBox">Header</div>
<div class="contentBox">
<div class="contentBoxLeft">ContentLeft asdf asdf adsf assf</div>
<div class="contentBoxRight">ContentRight asdf asdfa dasf asdf asdfd asfasd fdasfasdf dasfsad fdasfds<br /><br />asdfsad ff asdf asdfasd</div>
</div>
<div class="footerBox">Footer</div>
</div>
</body>
</html>
Ответ 3
сделать overflow:auto
для div
Ответ 4
переполнения: авто;
в стиле DIV
Вы должны просто знать, что размер div должен увеличиваться, чтобы он мог показывать свитки.
Если вы увеличиваете размер страницы (что должно быть со стилем = "переполнение: скрыто;" на теле)
это не сработает.
Ответ 5
Если вы не хотите использовать позицию: абсолютная (потому что это испортило вашу распечатку, если ваши поля должны быть разными, чем все нули), вы можете сделать это с небольшим количеством JavaScript.
Настройте свое тело и div так, чтобы разрешить прокрутку div:
<body style='overflow:hidden'>
<div id=scrollablediv style='overflow-y:auto;height:100%'>
Scrollable content goes here
</div>
</body>
Этот метод зависит от того, что div имеет высоту набора, и для этого нам нужен JavaScript.
Создайте простую функцию reset для высоты прокручиваемого div
function calculateDivHeight(){
$("#scrollablediv").height(window.innerHeight);
}
И затем вызовите эту функцию как при загрузке страницы, так и при изменении размера.
// Gets called when the page loads
calculateDivHeight();
// Bind calculate height function to window resize
$(window).resize(function () {
calculateDivHeight();
}
Ответ 6
Вы можете попробовать следующее:
<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<style rel="stylesheet" type="text/css">
.modal{width:300px;border:1px solid red;overflow: auto;opacity: 0.5;z-index:2;}
.bg{background:-webkit-linear-gradient(top,red,green,yellow);width:1000px;height:2000px;top:0;left:0;}
.btn{position:fixed;top:100px;left:100px;}
</style>
</head>
<body style='padding:0px;margin:0px;'>
<div class='bg' style='position:static'></div>
<div class='modal' style='display:none'></div>
<button class='btn'>toggle </button>
</body>
<script>
var str='',count=200;
while(count--){
str+=count+'<br>';
}
var modal=document.querySelector('.modal'),bg=document.querySelector('.bg'),
btn=document.querySelector('.btn'),body=document.querySelector('body');
modal.innerHTML=str;
btn.onclick=function(){
if(bg.style.position=='fixed'){
bg.style.position='static';
window.scrollTo(0,bg.storeTop);
}else{
let top=bg.storeTop=body.scrollTop;
bg.style.position='fixed';
bg.style.top=(0-top)+'px';
}
modal.style.display=modal.style.display=='none'?'block':'none';
}
</script>
</html>