私はこの問題をずっと探していましたが、ついに解決策がグーグルの10ページにある不明瞭なフォーラムで見つかりました。解決策は答えです
問題が発生するのは次のとおりです。CSSを使用して要素を相対配置すると、要素があった場所の空白が表示されます...空白は必要ありません!
.thetext
{
width:400px;
background:yellow;
border: 1px dashed red;
margin:50px;
padding:5px;
font-weight:bold;
}
.whiteblob
{
position:relative;
top:-140px;
left:70px;
width:200px;
height:50px;
border: 4px solid green;
background:white;
font-size:2.5em;
color:red;
}
.footerallowedwhitespaceinblue
{
height:10px;
background-color:blue;
}
.footer
{
background-color:grey;
height:200px;
}
<div class="thetext"><script type="text/javascript">for(c=0;c<50;c++){document.write("Lorem ipsum dolor est, ");}</script>
</div>
<div class="whiteblob">
buy this!
</div>
<div class="footerallowedwhitespaceinblue">
</div>
<div class="footer">
The whitespace above is way to big! The buy this still takes up space whilst it is moved.
</div>
JSFiddle: http://jsfiddle.net/qqXQn/
この例でわかるように、必要な空白は50pxのマージンによるテキストブロックに起因する空白のみです。そして、フッターで許可された間隔は、青で表示されます(見えるように青にします)。問題は...余白が大きすぎることです。「これを購入する」divは、相対的に配置された後でもまだスペースを占有しているためです。
これをどうやって解決しますか?
要素の幅または高さに等しい負のマージンを適用することで、これを簡単に解決できます。
上部に配置される高さ100pxの要素の場合、margin-bottom:-100pxを適用します。
下部に配置された高さが100pxの要素の場合、margin-top:-100pxを適用します。
左に配置された幅が100ピクセルの要素の場合、margin-right:-100pxを適用します。
右に配置された幅100ピクセルの要素の場合、margin-left:-100pxを適用します。
cSSスニペットの切り取りと貼り付け:
.top
{
postion:relative;
top:-100px;
height:25px;
margin-bottom:-25px;
}
.bottom
{
postion:relative;
top:100px;
height:25px;
margin-top:-25px;
}
.left
{
postion:relative;
left:-100px;
width:25px;
margin-right:-25px;
}
.right
{
postion:relative;
left:100px;
width:25px;
margin-left:-25px;
}
そして、修正されたサンプルコードは次のようになります。
.thetext
{
width:400px;
background:yellow;
border: 1px dashed red;
margin:50px;
padding:5px;
font-weight:bold;
}
.whiteblob
{
position:relative;
top:-140px;
left:70px;
width:200px;
height:50px;
margin-bottom:-50px;
border: 4px solid green;
background:white;
font-size:2.5em;
color:red;
}
.footerallowedwhitespaceinblue
{
height:10px;
background-color:blue;
}
.footer
{
background-color:grey;
height:200px;
}
<div class="thetext"><script type="text/javascript">for(c=0;c<50;c++){document.write("Lorem ipsum dolor est, ");}</script>
</div>
<div class="whiteblob">
buy this!
</div>
<div class="footerallowedwhitespaceinblue">
</div>
<div class="footer">
</div>
勇気があれば、overflow:hidden;
およびbottom negative margin
相対的に配置された要素で、残りのスペースを削除します:)。つまり、レスポンシブサイトで。
ただし、必要なコンテンツが隠されていないことを確認してください。
以下に例を示します。この場合、オブジェクトは右に移動してから、負のトップ値を使用して上に移動しました。後続のマージンスペースを削除するには、等しい負のマージン値を追加する必要がありました。
position:relative;
width:310px;
height:260px;
top:-332px;
margin-bottom:-332px;
left:538px;
この問題を解決するには、position:relativeの前にfloat:leftを指定します。 top、leftの代わりにmargin-left、margin-topプロパティも使用します。
次のコードのように、相対的な要素のトップを親のフォントサイズに設定します。
ヒスイテンプレートのhtml:
div.dialog(id='login')
div.dialog-header
span.title login
a.dialog-close(href="") X
hr
div.dialog-body
p hello this is body
hr
div.dialog-footer
p this is footer
およびcss:
.dialog
{
height: 100%;
position: absolute;
top: -100%;
right: 50%;
left: 50%;
bottom: 100%;
border: 2px solid rgba(255, 255, 255,1);
border-radius: 3px;
font-size: 14px;
}
.dialog-body{
position: relative;
background-color: #F99;
height: 80%;
top: -14px;
}
.dialog-header{
position: relative;
height: 10%;
background-color: #F9F9F9;
}
.dialog-footer{
position: relative;
height: 10%;
top: -28px;
background-color: #F9fdf9;
}
これは私のために働いた!