2016-11-03 14 views
0

何らかの理由で、画像が位置決め列内に含まれていません。私は両方のディスプレイをインラインで使用し、インラインブロックをimgで表示しようとしましたが、それでも動作しません。列は、相対位置のフレックスアイテムです。行は表示です:フレックス。相対位置に絶対配置要素が含まれていません

.row { 
    display: flex; 
    flex-direction: row; 
    flex-wrap: wrap; 
    width: auto; 
    /*margin-right: -1rem; 
    margin-left: -1rem;*/ 
    flex: 0 0 auto; 
    margin-bottom: 10px; 
    position: relative; 
} 


/* Column setup */ 

.col, 
.col-1, 
.col-2, 
.col-3, 
.col-4, 
.col-5, 
.col-6, 
.col-7, 
.col-8, 
.col-9, 
.col-10, 
.col-11, 
.col-12 { 
    box-sizing: border-box; 
    flex: 0 0 auto; 
    margin: 1% 0 1% 1.6%; 
    position: relative; 
} 

img { 
max-width: 100%; 
display: inline-block; 
position: absolute; 
} 

私の完全なコードへのリンクhttp://codepen.io/Limpuls/pen/bBbZmL

+2

相対位置に絶対配置要素が含まれていません。親の内部にイメージが必要な場合は、相対的で絶対的ではない位置に配置する必要があります。 – GvM

+0

@GvM https://css-tricks.com/absolute-positioning-inside-relative-positioning/ – Limpuls

+0

あなたがそれを望むならば、親の高さを画像よりも大きくする必要があります。 – GvM

答えて

2

位置削除left: 0;

img
img{ 
max-width: 100%; 
display: inline-block; 
position: absolute; 
left: 0; /* <<< */ 
} 
+0

ありがとう、それは今働いています。なぜ私たちは 'left:0;'と 'right:0;'を宣言する必要があるのだろうか? – Limpuls

+2

@Limpuls、 'position:absolute'を適用することで、通常のフローから要素を削除しているだけです。実際にどこにでも配置しているわけではありません。要素を配置するには、CSSオフセットプロパティ( 'left'、' right'、 'top'と' bottom')を使用する必要があります。それ以外の場合、オフセットはデフォルトで 'auto'に設定されます。これにより、フローがインフローしていた場合に要素が残ります([詳細](http://stackoverflow.com/q/40226155/3597276))。 –

+1

@Limpulsここにこの動作についての最善の説明は、見て:http://stackoverflow.com/questions/19968979/what-are-the-default-top-left-botton-or-right-values-when- positionabsolute-is?answertab = active#tab-top – jotavejv

0

を適用します。絶対に。 img divには画像が列の中にあります。 このようにする必要があります img {max-width:100%; display:inline-block;}

+0

まず、** position:absolute;を削除することをお勧めします。次の文では、あなたのコードサンプルは、** ** position:absoluteを使用するようアドバイスしています。 '。あなたは正気ですか? – connexo

関連する問題