Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kadu79

[Resolvido] Altura da DIV em relação à resolução e ao Browser

Recommended Posts

Buenas, galera!

 

Tõ cum problemão. Preciso de ajuda urgente, ou minha cabeça vai rolar.

è o seguinte:

Tô inserindo 3 DIVs numa página (cabeçalho, conteúdo, rodapé) e preciso que o cabeçalho e rodapé fiquem fixos no browser independente da resolução e da quantidade de conteúdo na DIV conteúdo, sendo que a scroll a ser utilizada deve seer somente s scroll da DIV conteúdo, e não do browser. Quero fazer isso através de CSS.

 

Ah, e mais, preciso que toda a altura do brawser seja ocupada, ou seja, preciso que a DIV conteudo ocupe a altura restante entre a DIV Cabecalho e a DIV Rodape.

 

Ou consigo isso ou minha carta de demissão sai.

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer um fixed no topo e no rodapé.

E posicionar tudo(as 3 divs), com um contexto de 100% height. Vou tentar montar aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer um fixed no topo e no rodapé.

E posicionar tudo(as 3 divs), com um contexto de 100% height. Vou tentar montar aqui.

 

Cara, te agradeço muito se você me ajudar nisso, pois já estou desesperado. já pesquisei na web, em foruns e não encontrei nada que funcionasse de fato. o que não da problema no IE7 dá no IE6 (IE é uma porcaria mesmo.).

Aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um efeito complicadinho.. vê se estamos quase chegando lá..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>
<style>
* {
	margin: 0;
	padding: 0;
}
body {
	overflow: hidden;
	background-color: #0f0;
}
#corpo {
	width: 900px;
	margin: 0 auto;
}
#topo {
	height: 100px;
	background-color: #ff0;
}
#conteudo {
	height:375px;
	background-color: #f00;
	overflow-y: scroll;
}
#rodape {
	height: 100px;
	width: 900px;
	background-color: #ff0;	
	position: absolute;
	bottom: 0;
}

</style>
</head>
<body scroll="no">
	<div id="corpo">
		<div id="topo">
		</div><!-- #topo -->

		<div id="conteudo">
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Lorem Ipsum<br />Lorem Ipsum<br />Lorem Ipsum<br />
		Bla bla<br />Bla bla<br />Bla bla<br />Bla bla<br />
		Bla bla<br />Bla bla<br />Bla bla<br />Bla bla<br />
		Bla bla<br />Bla bla<br />Bla bla<br />Bla bla<br />
		</div><!-- #conteudo -->

		<div id="rodape">
		</div><!-- #rodape -->
	</div><!-- #corpo -->
</body>
</html>
Uma vez eu li um artigo sobre "FrameSet" com DIVs+CSS, simulavam todos esses fixeds dos Frames, apenas com CSS. Tem que dar uma procurada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah, cara, valeu mesmo pela atenção, mas até este ponto eu já tinha chegado. E é bem aqui que estou empacado. Não consigofazer a div conteúdo assumir o total de altura restante na tela, seja qual for a resolução.

Mas agora vou fazer novas pesquisas pelo frameset com css e div que você falou. Te agradeço mesmo pela boa vontade, e se você tiver alguma novidade para esta solução, por favor, poste. Se eu encontrar algo, te pasos também.

VALEW. Até.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, quase lá... dá uma olhada com as alterações...

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">

<head>
<style>
* {	
margin: 0;	
padding: 0;
}

body {	
overflow: hidden;	
background-color: #0f0;
}

#corpo {	
width: 900px;	
margin: 0 auto;
}

#topo {	
height: 100px;	
background-color: #ff0;
}

#conteudo {	
height:100%;
width:900px;	
background-color: #f00;	
overflow-y: scroll;
position:fixed;
}

#rodape {	
height: 100px;	
width: 900px;
background-color: #ff0;		
position: absolute;	
bottom: 0;
}
</style>
</head>
[code]
<body scroll="no">	
<div id="corpo">		
<div id="topo">	</div><!-- #topo -->		
<div id="conteudo">		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Lorem Ipsum<br />
Lorem Ipsum<br />
Lorem Ipsum<br />		
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />		
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />		
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />		
Bla bla<br />
Bla bla<br />
Bla bla<br />
Bla bla<br />
</div><!-- #conteudo -->		
<div id="rodape">	</div><!-- #rodape -->	
</div><!-- #corpo -->
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que com um poco de javascript, você consegue calcular a resolução do cara, e dividir entre as 3 divs. Trabalhar com porcentagens, sempre é problemático..

sei lá.. vamos tentando..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que com um poco de javascript, você consegue calcular a resolução do cara, e dividir entre as 3 divs. Trabalhar com porcentagens, sempre é problemático..

sei lá.. vamos tentando..

 

já pensei nisso também, mas mesmo que eu saiba a resolução do user, tem a questão de quantas barras de ferramentas ativas o user tem no browser... ai ferra tudo.

 

Me recuso a recorrer ao uso de frameset (isso é amador demais).

Ajudem quem souber de algo. É um desafio e tanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Buenas, povo desenvolvedor.

 

Depois de dias lutando consegui uma solução profissional e sem scripts malucos. Consegui simular aquelas grotescas framesets utilizando apenas DIV e CSS. Muito show. Vou postar aqui, pois acredito que essa deve ser uma dor de cabeça para muitos. Desde já agradeço ao William Bruno, que me ajudou a encontrar essa solução.

 

Bom, vamos ao que interessa.

Aqui vai o que deve conter o arquivo HTML:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-BR" lang="pt-BR">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>CSS Frames Example/Tutorial | WebPelican</title>
	<meta name="description" content="Example page/tutorial demonstrating how to implement CSS Frames" />
	<meta name="keywords" content="CSS Frames, HTML Frames, Emulated Frames, Frames" />  
	<link media="screen" href="css-frames-style.css" type="text/css" rel="stylesheet" />
	<!--[if lt IE 7]>
			<link href="css-frames-style-unreal.css" type=text/css rel=stylesheet />
	<![endif]-->
	<link href="/favicon.ico" type="image/ico" rel="shortcut icon" />
</head>
<body>
<div id="content-wrapper">
	<div id="content">
	inicio<br />
	teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />
	teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />
	teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />
	teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />
	teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />teste<br />
	fim<br />
	</div>
</div>
<div id="header-wrapper">
	<div id="header">
	Cabeçalho
	</div>
</div>
<div id="footer-wrapper">
	<div id="footer">
	footer
	</div>
</div>
</body>
</html>

Depois, para que as divs sejam dispostas e fixadas corretamente, é chamado um arquivo CSS, que serve para todos os browsers (canal)

no exemplo HTML dado, o nome do arquivo utilizado é css-frames-style.css, cujo codigo segue abaixo:

 

/***************STRUCTURE***************************/
/*Reset*/
* {
margin:0;
padding:0;
}

body {
	min-width:640px; 
}
/* Absolute positioned header for all browsers*/
#header-wrapper {
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:6em;
}
/* Reset header position to fixed for real browsers such as Firefox*/
body>#header-wrapper {
	position:fixed;
}

#header {
	height:6em;
	width:720px;
	margin:0 auto;
}

#content-wrapper {
	padding:6em 0 0 0;
	margin-left:0;
	voice-family: "\"}\""; 
	voice-family:inherit;
	margin-left:16px;
	padding-bottom:60px;
}

body>#content-wrapper {
	margin-left:0;
}

#content {
	width:720px;
	margin:0 auto;
}

#footer-wrapper {
	width:100%;
	position:absolute;
	bottom:0;
	left:0;
	height:60px;
}

body>#footer-wrapper {
	position:fixed;
}

#footer {
	width:720px;
	height:60px;
	margin:0 auto;
}

/*Global navigation*/
#nav {
	position:relative;
	top:2.5em;
	width:100%;
	padding:0 0 2px;
	height:1em;
	}
	
#nav ul {
	float:left;
	width:100%;
	list-style-type:none;
	}
	
#nav li {
	display:inline;
	float:left;
	width:auto;
	}
	
#nav a {
	padding:3px 3px 3px 3px;
	margin-left:4px;
	margin-right:4px;
	color:#fff;
	text-decoration:none;
	display:block;
	float:left;
	width:auto;
	font:bolder 1.2em/100% Helvetica, sans-serif;
	letter-spacing:2px;
	}
	
#nav a:hover {
	border-bottom:1px solid #fff;
	}

#nav a:active {
	background:#660033;
	color:#fff;
	}

#logo-text {
	font-family:Zapf Chancery, cursive;
	font-size:25px;
	margin-left:5px;
	padding-top:5px;
	line-height:25px;
}

/***************STYLE***************************/
body,
html{
	font-family:"Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
	color:#000;font-family:"Trebuchet MS", Georgia, Verdana, Arial, Helvetica, sans-serif;
	background:#ddd;
}

#header,
#footer {
	background:#003366;
	color:#fff;
}

#content {
	background:#fff;
	color:#000;
}

h1,
h2 {
	padding:0;
	margin:0 0 0 10px;
}

h1 {
	font-size:1.3em;
	text-align:left;
	padding-top:0.5em;
}

h2 {
	font-size:1.1em;
	padding-top:1em;
	margin-top:0;
}

#footer p {
	margin:0 0 0 5px;
	padding:0;
}

#footer a {
	color:#fff;
}

ul, p {
	font-size:0.85em;
	line-height:1.45em;
}

p {
	margin:0 10% 0 10px;
	padding-bottom:10px;
}

code, pre {
	color:#336600;
	font-family:font-family:Courier;
	font-size:14px;
	margin-bottom:1em;
	margin-left:10px;
}

div.ad-box {
	width:336px;margin:1em 5px 0 5px;
	height:280px;
	float:right;
	clear:right;
	background:#fff;
}
div.footer-ad {
	width:468px;
	height:15px;
	padding-top:20px;
	margin-left:10px;
}

#content a:link, #content a {
	color:#003366;
	font-weight:bold;
	font-family:verdana,arial,sans-serif;
	font-size:0.9em;
}
#content a:visited {
	color:#660000;
}
#content a:hover {
	color:#660000;
}
#content a:active {
	color:red;	
}

 

Depois de muitas consultas, encontrei essa recomendação para utilização do css abaixo para validação no IE7. Para mim, não fez diferença, mas posto aqui. Neste exemplo, com o nome de css-frames-style-unreal.css

 

html {
	overflow:hidden;
	}
body {
	height:100%;
	overflow:auto;
	}
#footer-wrapper {
	bottom:-1px;
}

Espero que possa ajudar a outros apavorados como eu estava. Salvei meu emprego. Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.