2016-04-13 11 views
0

div#skyの位置は、div#houseの上に常に正確に配置できますが、img#roofは常にdiv#skyの下にありますか?divを常に別のdivの上に配置するにはどうすればよいですか?

div#plotは常にブラウザの下部にある必要があります。

ハウスは、アスペクト比が1:1.09で、ブラウザの下部に配置する必要があります。

その家の上に屋根を置いてください。

HTML:

<div id="main"> 
    <div id="sky"> 
     <img id="roof" src="img/roof.png" alt="roof"> 
    </div> 
    <div id="plot"> 
     <div id="house"> 
     </div> 
    </div> 
</div> 

CSS:

div#main { 
    border-bottom: 1px solid dimgray; 
    height: 90%; 
    margin: 5vh auto; 
    padding: 0; 
    position: fixed; 
    width: 100%; 
} 
div#sky { 
    background: white; 
    height: auto; 
    margin: 0 auto; 
    padding: 0; 
    width: 100%; 
    z-index: 1; 
} 
div#plot { 
    bottom: 0; 
    height: auto; 
    margin: 0; 
    padding: 0; 
    position: absolute; 
    width: 100%; 
} 
div#house { 
    box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    border-left: 2.4vw solid black; 
    border-right: 2.4vw solid black; 
    height: 0; 
    margin: 0 auto; 
    padding-bottom: 25.844%; 
    position: relative; 
    width: 33.2%; 
} 
img#roof { 
    bottom: 0.2vw; 
    height: auto; 
    left: 30%; 
    margin: 0 auto; 
    padding: 0; 
    position: absolute; 
    width: 40%; 
} 

例: http://www.kunkel-dienstleistungen.com/dev/

+5

非常に悪い習慣である '!important'を避けてください:) –

+0

あなたは何を意味するのか少し難しいですが、' top:0; 'を追加して' bottom'スタイルを 'img#屋根? –

+0

@Py .:削除済みの古い習慣。 ;) – am1

答えて

1

位置は常に正確なdiv#house

上記

自然な流れはimg#roofbottom: 0.2vw;div#sky

テイクの下に常にあるとtop: 100%;と交換しながら、それはすでに

場合であることを指示します。次にposition:relative;div#skyに追加します。 topの値はかなり自明です。それはあなたの#roof要素の上端をそのオフセットの親の高さの100%をそのオフセットの親の上端から置きます。 #skyに相対位置を追加すると、#roofのオフセットの親になります。

div#plotは常にブラウザの下部にある必要があります。

あなたはその部分を持っています(hehe ... no punを意図しています)。

ハウスは、アスペクト比が1:1.09で、ブラウザの下部に配置する必要があります。

この部分は問題である可能性がありますが、デモが不足していると言っても過言ではありません。デモがありますが、いくつかの問題があります。 #sky要素には何も含まれていないので、「空」が画像要素、背景画像、または単純な色になるかどうかはわかりません。

+0

私は自分のスーツをhttps://jsfiddle.net/uk5jorxc/に入れました。問題は、屋根がその家の上にある間、家は常に彼の縦横比を保つべきだということです。これの外に、家はブラウザの一番下に置かれるべきです。 – am1

+1

@ ambiente1これはあなたが今設定した方法では非常に難しいでしょう。 "屋根"が "家"の一部ではないような理由:https://jsfiddle.net/0mu2xvgp/? –

+0

それだけです!私は本当になぜこのようにしないのか分かりません、オハイオ州の私の良さ...;)ヒント、なぜ2階のそれぞれが家の高さの50%を持っていないのですか?これは、高さが0なので、パディングまたは?回避策はありますか? – am1

0

可能な解決策は、フレックスボックススタイルを使用して空の高さを動的に調整することです。フッターが常にページの一番下にプッシュされる「聖杯」レイアウトに似ています。ちょうどCSSの背景色とボーダー三角 -

CSSの抜粋体が主なコンテナであると私は屋根や家のための画像を使用していない。この例では

body { 
    display: flex; 
    flex-direction: column; 

    height: 100% 
} 
#sky { 
    display: flex; 
    justify-content: center; 
    align-items: flex-end; 
    flex: 1 0 auto; 
    background-color: #0080ff; 
} 
#plot { 
    display: flex; 
    justify-content: center; 
    flex: 0 0 auto; 
    background-color: #808040; 
} 

jsfiddle for a complete exampleを参照してください)。しかしそれは概念を実証しています。

+0

うまくいくかもしれませんが、IEの悪いサポートでは、これは要件に適合しません。 :/ – am1

+0

IE11でうまく動作しますが、その前に...よく分かります.... – michaPau

関連する問題