CSS Problems - 960.gs
I've decided to let tables out of my Web UIs but I'm suddenly having lots of trouble with CSS.
I've hacked a little bit into 960.gs and I've made my own grid with only 8 columns, here it is:
.grid {
margin-left: auto;
margin-right: auto;
width: 960px;
}
.grid ._01,
.grid ._02,
.grid ._03,
.grid ._04,
.grid ._05,
.grid ._06,
.grid ._07,
.grid ._08 {
display: inline;
float: left;
margin: 10px;
position: relative;
}
.grid ._01 {
width: 100px;
}
.grid ._02 {
width: 220px;
}
.grid ._03 {
width: 340px;
}
.grid ._04 {
width: 460px;
}
.grid ._05 {
width: 580px;
}
.grid ._06 {
width: 700px;
}
.grid ._07 {
width: 820px;
}
.grid ._08 {
width: 940px;
}
.grid .clear {
clear: both;
display: block;
height: 0px;
overflow: hidden;
visibility: hidden;
width: 0px;
}
And here is the HTML:
<div class="grid">
<div class="_05">
<img src="../logo.png" alt="" width="450" height="60" vspace="50" />
</div>
<div class="_03" align="center">
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="textfield" id="textfield" style="margin-right: 0;" />
</label>
</p>
<p>
<label>Password
<input type="text" name="textfield2" id="textfield2" />
</label>
</p>
</form>
</div>
<div class="clear"></div>
<div class="_05">
<div class="box">
<h2>grid, _05, box, h2</h2>
<div class="content">grid, _05, box, content</div>
</div>
</div>
<div class="_03">
<div class="box green">
<h2>grid, _03, box, h2</h2>
<div class="content">
<p>grid</p>
<p>_03</p>
<p>box</p>
<p>content</p>
</div>
</div>
</div>
<div class="clear"></div>
<div class="_05">
<div class="box yellow">
<h2>grid, _05, box, h2</h2>
<div class="content">grid, _05, box, content</div>
</div>
</div>
<div class="_03">
<div class="box red">
<h2>grid, _03, box, h2</开发者_开发知识库h2>
<div class="content">
<p>grid</p>
<p>_03</p>
<p>box</p>
<p>content</p>
</div>
</div>
</div>
<div class="clear"></div>
</div>
How can I make this...
Look more like this? Specially, how can I change the position of the yellow box and the login form in the top?
Thanks in advance for all your input!
Since you're just learning CSS, I advise that you ditch the framework and code things from scratch.
Lucky for you, I'm bored at work with nothing to do :) I coded up the whole thing for you. You can see it at http://kevinvancrawford.com/temp/test.html
The markup:
<div id="container">
<div id="head">
<h1><a href="./test.html">Site Banner</a></h1>
<form id="login">
<label for="email">Email:</label>
<input type="text" name="email" id="email" />
<label for="password">Password:</label>
<input type="password" name="password" id="password" />
<input type="submit" value="Login" id="submit" />
</form>
</div><!--head-->
<div id="body">
<div id="primary">
<div id="blue"></div>
<div id="yellow"></div>
</div><!--primary-->
<div id="column">
<div id="green"></div>
<div id="red"></div>
</div><!--column-->
</div><!--body-->
</div><!--container-->
And, the CSS:
#container { width:960px; margin:1em auto; background-color:#EEEEEE; padding:20px 20px 0; }
#head, #login, #body { /* these elements all contain floats */
overflow:hidden; /* This will clear the contained floats. "auto" works too */
width:100%; /* Triggers hasLayout in IE, needed to clear floats */
}
#head h1 {
float:left;
margin:0;
width:500px;
height:80px;
background:#000000 url(./img/logo.gif) no-repeat; /* Instead of using an <img> tag, we used CSS to replace the HTML text with an image. Good for SEO */
position:relative;
}
#head h1 a {
position:absolute;
display:block;
top:0; left:0;
width:100%; height:100%;
text-indent:-9999px; /* Hides the text. The properties above make the whole <H1> a link */
overflow:hidden;
}
#login { float:right; width:320px; padding:1em 0 0; }
#login label, #login input { float:left; display:block; margin:0 5px 5px 0; }
#login label { text-align:right; clear:left; width:80px; }
#login input { width:150px; }
#login #submit { width:auto; }
#primary { float:left; width:620px; margin-right:20px; }
#primary #blue { background-color:#000080; margin:20px 0; min-height:300px; }
#primary #yellow { background-color:#FFFF66; }
#column { float:right; width:320px; }
#column #green { background-color:#008040; }
#column #red { background-color:#800000; }
#yellow, #green, #red { min-height:200px; margin:20px 0; }
Please ask if you would like me to explain any of it for you :)
Also, though I didn't use it in this example, I recommend Eric Meyer's reset.css. Google it.
Please note, the only compromise I made was that I didn't align the "login" button to the right edge, because that would necessitate floating all of those elements to the right, and the <input>
s would have to go before the <label>
s in the markup, which I have reservations about.
Cheers,
Kevin
精彩评论