2009-04-24 1 views
0

私は静的なHTMLページに適用するとうまく動作するCSSスタイルを持っています。ajaxアプリケーションでのCSSページのレイアウトの問題

問題は、そのコンテンツを動的にレイヤ3に、ロードされ、その後、レイヤ2

に私は本当に一貫性を理解していません。ときにはレイヤーが離れていることもあり、時にはレイヤー同士が噛み合うこともあります。

なぜこのようなことが起こりますか、レイヤ3を静的な位置に保つにはどうすればよいですか?

非常に遠く離れている層の例:

<html><head> 
<title>Test page</title> 
<link rel="stylesheet" href="style.css" type="text/css"> 
</head> 
<div id="Layer0"> 
<div id="Layer1" class="Layer1"> 
<h3 align="left">A menu</h3> 
<div align="left"> 
<ul class="BLUE"> 
<li><a href="#">item 1</a></li> 
<li><a href="#">item 2</a></li> 
</ul> 
</div> 
</div> 
<div id="Layer2"> 
<h1>I would like information to be here</h1> 
<div id="Layer3"> 
<h1>And then the table to be below the above info</h1> 
<table width="85%" border="0"> 
<tbody> 
<tr> 
<td width="15%"><strong>This is</strong></td> 
<td width="20%"><strong>much better</strong></td> 
</tr> 
</tbody> 
</table> 
<h1>I would like the Layer 3 to always be in a constant position</h1> 
<h1>Does this mean I should have it outside of Layer2?</h1> 
</div> 
</div> 
</div> 
</body></html> 

<html><head> 
<title>Test page</title> 
<link rel="stylesheet" href="style.css" type="text/css"> 
</head> 
<div id="Layer0"> 
<div id="Layer1" class="Layer1"> 
<h3 align="left">A menu</h3> 
<div align="left"> 
<ul class="BLUE"> 
<li><a href="#">item 1</a></li> 
<li><a href="#">item 2</a></li> 
</ul> 
</div> 
</div> 
<div id="Layer2">Content goes here</div> 
<div id="Layer3"> 
<h1>Why is the layer up here now?</h1> 
<table width="100%" border="0"> 
<tbody> 
<tr> 
<td width="15%">This wrecks</td> 
<td width="10%">The very</td> 
<td width="65%">Layout of the page</td> 
</tr> 
</table> 
</div> 
</div> 
</div> 
</body></html> 

私が達成しようとしているものの例をマージさ

<html><head> 
<title>Test page</title> 
<link rel="stylesheet" href="style.css" type="text/css"> 
</head> 
<div id="Layer0"> 
<div id="Layer1" class="Layer1"> 
<h3 align="left">A menu</h3> 
<div align="left"> 
<ul class="BLUE"> 
<li><a href="#">item 1</a></li> 
<li><a href="#">item 2</a></li> 
</ul> 
</div> 
</div> 
<div id="Layer2"> 
<div id="leftlayer" class="leftlayer"> 
<form name="searchForm"> 
An example form: 
<input name="search" type="text"> 
<br> 
<input name="Submit" value="Update" onclick="searchUserInfo('parallelimport');return false" type="submit"> 
</form> 
</div></div> 
<div id="Layer3"><h1> Why is the layer so far away?</h1> 
</div> 
</div> 
</div> 
</body></html> 

層の例を

My CSS:

#Layer0 { 
    width: 100%; 
    height: 100%; 
} 

body{ 
margin:10px 10px 0px 10px; 
padding:0px; 
color:#999999; 
font-family:"Trebuchet MS",arial,sans-serif; 
font-size:70.5%; 

} 

#Layer2 { 
background:#fff; 
color:#000; 
voice-family: "\"}\""; 
voice-family: inherit; 
padding:20px; 

} 

#Layer2 p {color:#888;} 

#Layer2 a, a:link { color:#006633; text-decoration: none;} 

#Layer2 a:hover, a:active{ color:#FF6666; text-decoration: none;} 

html>body #Layer2 { 
} 

p,h1,pre { 
margin:0px 10px 10px 10px; 
font:Arial, Helvetica, sans-serif; 
font-size:12px; 
line-height: 1.6em; 
text-align:justify; 
text-decoration:none; 
} 

h1 { 
font-size:2.5em; 
text-align: center; 
color:#ccc; 
padding-top:15px; 

} 

h3 { 
font-size:14px; 
color:#999; 

} 

.leftlayer { 
    float: left; 
    left: 20%; 
    width: 20%; 
    height: 100%; 
    margin-right: 10%; 
} 
.leftlayer strong { 
    text-align: left; 
} 
.leftlayer2 { 
    float: left; 
    width: 20%; 
    height: 100%; 
    margin-left: 2%; 
} 
#rightlayer { 
    float: left; 
} 
#Layer3 { 
    float: bottom; 
} 

答えて

2

さまざまなレイアウト要素に罫線を追加すると、難しいCSSの問題に直面したときにデバッグに役立ちます。

border: 1px dashed #ccc; 

あなたはdivのクラス= "leftlayerを使用して、フォームを囲むことがわかります:あなたは.leftlayerのCSSクラスに以下を追加した場合たとえば、あなたが掲示最初の例と間違っているものを見ますレイヤー3を右に押しています。これは、HTMLフローのLayer3 divの前にleftlayer divが表示されるために発生します。

<div id="Layer3"> 
    <h1> Why is the layer so far away?</h1> 
</div> 
<div id="Layer2"> 
    <div id="leftlayer" class="leftlayer"> 
     <form name="searchForm"> 
      An example form: 
      <input name="search" type="text"> 
      <br> 
      <input name="Submit" value="Update" onclick="searchUserInfo('parallelimport');return false" type="submit"> 
     </form> 
    </div> 
</div> 

私はそれはあなたが達成するために必要な正確に何だかはわからないが、それはスタートだ:より良い結果を得るために、このように、.leftlayer上のレイヤ3を移動させます。

フロートは実際にあなたのレイアウトに悩まされることがあるので、ボックスモデルを完全に理解するのに役立ちます。私はこれが素晴らしい参考資料であることを知ります:http://www.brainjar.com/css/positioning/default.asp