Solved

Why containing div doesn't stretch?

Posted on 2007-11-18
2
3,061 Views
Last Modified: 2012-06-21
I have a page with a container div that holds a content div. What I don't understand is why doesn't the container div stretch and show the background color to the bottom of the content div? It stops half way down the page? Scaled down code sample provided? I want the container to stretch dynamically depending on the height of the content div. Why isn't it doing that?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html xmlns="http://www.w3.org/1999/xhtml">

<style>

	*{margin:0; padding:0}

	body{

	 	font-family: Verdana, Ariel, Sans-Serif;

	 	font-size: 12px;

	 	color: #5A5A5A;

	 	margin: 0;

     	padding: 0;

     	text-align:center;

	 	background: #8E8E8E;

 	}

	

	div#container {

		position:relative;

		width: 766px;

	 	background: #7f0b29;

	   	padding: 0px;

	 	margin-right: auto;

	 	margin-left: auto;

	 	margin-top: 0px;

	 	margin-bottom: 0px;

		text-align:left;

	 }

	 

	 		

	div#content {

		position:relative;

		top:232;

		left:30;

     	width: 500px;

	 	height:500px;

	 	background: #162732;

	 

	}

</style>

<body>

<div id="container">

	<div id="content">

		TESTING HERE<br><br><br>TESTING HERE<br><br><br>TESTING HERE<br><br><br>TESTING HERE

	</div>

</div>

</body>

</html>

Open in new window

0
Comment
Question by:894359
2 Comments
 
LVL 2

Accepted Solution

by:
ToastedWeb earned 250 total points
Comment Utility
try not to position elements with position relative.... it is a bad practice ...

btw. <style></style> should be inside <head> tags, but the best way is to include it into html file...

take a look at my example:
<!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">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

<style>
 

* { margin:0; padding:0; }

	

#container1 {

margin:0 auto;

padding:0;

width:800px;

background:red;

border:solid 1px white;

}
 

#container2 {

margin:200px 0 0 20px;

background:black;

width:300px;

height:700px;

}

	

</style>

</head>
 

<body>

<div id="container1">

	<div id="container2">

		<p>Your test content here :)</p>

	</div>

</div>

</body>

</html>

Open in new window

0
 
LVL 3

Assisted Solution

by:Mr_Splash
Mr_Splash earned 250 total points
Comment Utility
ToastedWeb is correct, relative positioning should not be used as the default way of positioning. Personally I would only use it to tweak an elements position when adding seperate browser dependent stylesheets.

Below is the code you gave with some changes.

Also some other CSS pointers are that
1) When setting a value as 0, you can drop the 'px'.
2) try to avoid * { margin:0; padding:0; } as it messes around with things you may want padding and margin on, such as lists.
3) Add <!-- and --> inside your style tags as shown below, this stops older browsers that can't read CSS showing all the code on the page. Not very common now a days, but it's good practive

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Test Page</title>

<style type="text/css" media="all">

<!--

body, html {

  font-family: Verdana, Ariel, Sans-Serif;

  font-size: 12px;

  color: #5A5A5A;

  margin: 0; padding: 0;

  text-align: center;

  background: #8E8E8E;

 }

        

#container {

  width: 766px;

  background: #7f0b29;

  padding: 0; margin: 0 auto;

  text-align: left;

}

         

#content {

  margin: 232px 0 0 30px;

  width: 500px; height:500px;

  background: #162732;

}

-->

</style>

</head>

<body>
 

<div id="container">

  <div id="content">

    TESTING HERE<br><br><br>TESTING HERE<br><br><br>TESTING HERE<br><br><br>TESTING HERE

  </div>

</div>
 

</body>

</html>

Open in new window

0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

Unordered lists (HTML ul tags) are very handy to create menus of all types, shapes and sizes.  All it takes is a little knowledge of CSS and the possibilities are endless. First off, you should know the general format for menus created using the …
Styling your websites can become very complex. Here I'll show how SASS can help you better organize, maintain and reuse your CSS code.
In this tutorial viewers will learn how to define a gradient in CSS. Create a new HTML document with an internal stylesheet.: Create a div in CSS and name it Gradient. Define the background as "linear-gradient(to right, #ee3668, black)". Ensure you …
The viewer will receive an overview of the basics of CSS showing inline styles. In the head tags set up your style tags: (CODE) Reference the nav tag and set your properties.: (CODE) Set the reference for the UL element and styles for it to ensu…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now