2016-07-11 7 views
0

4枚の画像があり、各行に2枚ずつ表示したい。それぞれ、width:50%float:leftがあります。各行に2枚の画像しか表示しない

HTML

<section class="opportunity"> 
    <div class="main"> 
     <img src="phone.jpg" > 
     <div class="paragraph">This wil be centered</div> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div>  
    <div class="main"> 
     <img src="phone.jpg"> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div> 
    <div class="main"> 
     <img src="phone.jpg"> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div>  
    <div class="main"> 
     <img src="phone.jpg"> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div>  
    <div class="clearfix"></div> 
</section> 

CSS:

.clearfix{ 
    clear: both; 
} 
section{ 
    text-align: center; 
} 
.main{ 
float:left; 
width:50%; 
text-align: center; 
border:10px solid white; 
width:306px; 
height:306px; 
margin : 50px auto; 
box-shadow: 0px 0px 25px black; 
overflow: hidden; 
} 
.paragraph{ 
-webkit-transform: translateY(-300%); 
border: 5px solid grey; 
background-color: grey; 
opacity: 0.5; 
} 
.main:hover .content, 
    .main:active .content{ 
    -webkit-transform: translateY(-340px); 
    -webkit-transition: -webkit-transform 700ms; 
} 
.content{ 
    width: 306px; 
    height: 306px; 
    background: rgba(51, 102, 255, 0.5);  
} 
img{ 
    height:inherit; 
    width:inherit; 
    -webkit-transition: -webkit-transform 5000ms; 
} 
button{ 
    width: 100%; 
    height: 50px; 
    margin-top: 100px; 
    background: black; 
    border: 0; 
    cursor: pointer; 
    color: white; 
    font: 16px tahoma;  
} 
button:hover 
{ 
    opacity: 0.5; 
} 

問題は、画像のすべてが同じ列内に表示されることです。幅:50%は適用されていないようです。 イメージを同じ行に表示する代わりに、2つずつイメージを表示するにはどうすればよいですか?

答えて

0

要素が行に収まらないため、floatは機能しません。あなたはマージンを設定しました。要素の完全な幅はwidth + margin-left + margin-rightです。これは50%より小さくする必要があります

0

floatの代わりに、2行2列のHTML表を使用してみてください。

<table> 
    <tr> 
    <td>img1</td> 
    <td>img2</td> 
    </tr> 
    ... etc 
</table> 

次に、すべてのテーブルセルをCSSを使用して50%幅に設定します。

+1

が;) – Refilon

+0

あなたは理由を説明できますか? :) – Ephi

+0

携帯電話などで使用しているときには柔軟ではない/レイアウトするのが難しい。また、レイアウトとしてテーブルを使用するのは90年代です。今すぐDIVを使ってスタイルを書いたほうがよかったです。 – Refilon

0

floatmargin:0 autoを使用している場合は、main cssを次のように置き換えてください。

.main{ 
float:left; 
width:50%; 
text-align: center; 
border:10px solid white; 
width:306px; 
height:306px; 
box-shadow: 0px 0px 25px black; 
overflow: hidden; 
} 
2

あなたが割合とピクセルで、幅の2倍を追加し、あなたがそれを削除する必要があります。

.clearfix{ 
 
    clear: both; 
 
} 
 
section{ 
 
    text-align: center; 
 
} 
 
.some-container { 
 
    float:left; 
 
width:50%; 
 
position: relative; 
 
} 
 
.main{ 
 

 
text-align: center; 
 
border:10px solid white; 
 
width:306px; 
 
height:306px; 
 
margin : 50px auto; 
 
box-shadow: 0px 0px 25px black; 
 
overflow: hidden; 
 
} 
 
.paragraph{ 
 
-webkit-transform: translateY(-300%); 
 
border: 5px solid grey; 
 
background-color: grey; 
 
opacity: 0.5; 
 
} 
 
.main:hover .content, 
 
    .main:active .content{ 
 
    -webkit-transform: translateY(-340px); 
 
    -webkit-transition: -webkit-transform 700ms; 
 
} 
 
.content{ 
 
    width: 306px; 
 
    height: 306px; 
 
    background: rgba(51, 102, 255, 0.5);  
 
} 
 
img{ 
 
    height:inherit; 
 
    width:inherit; 
 
    -webkit-transition: -webkit-transform 5000ms; 
 
} 
 
button{ 
 
    width: 100%; 
 
    height: 50px; 
 
    margin-top: 100px; 
 
    background: black; 
 
    border: 0; 
 
    cursor: pointer; 
 
    color: white; 
 
    font: 16px tahoma;  
 
} 
 
button:hover 
 
{ 
 
    opacity: 0.5; 
 
}
<section class="opportunity"> 
 
    <div class="some-container"> 
 
    <div class="main"> 
 
     <img src="phone.jpg" > 
 
     <div class="paragraph">This wil be centered</div> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
    
 
    </div> 
 
    </div> 
 
    </div>  
 
    <div class="some-container"> 
 
    <div class="main"> 
 
     <img src="phone.jpg"> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="some-container"> 
 
    <div class="main"> 
 
     <img src="phone.jpg"> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="some-container"> 
 
    <div class="main"> 
 
     <img src="phone.jpg"> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="clearfix"></div> 
 
</section>

+0

意味があります。しかし今、彼らは2つではなく、お互いの下に表示されています。 –

+0

@EltonSousa、彼らは行ごとに2つのボックスを表示しています。それぞれのウィンドウの幅は50%です。なぜあなたはそれを言うのか分かりません! –

0

あなたは幅が二倍306pxことを削除し、BORDER-サイジングボックスを与える追加されましたこのフィドルを見て、内側から境界線が出ていることを確認してください。https://jsfiddle.net/pwfucx16/

<section class="opportunity"> 
    <div class="main"> 
     <img src="phone.jpg" > 
     <div class="paragraph">This wil be centered</div> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div>  
    <div class="main"> 
     <img src="phone.jpg"> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div> 
    <div class="main"> 
     <img src="phone.jpg"> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div>  
    <div class="main"> 
     <img src="phone.jpg"> 
     <div class="content"> 
      <button>Nokia 7210 Classic</button> 
     </div> 
    </div>  
    <div class="clearfix"></div> 
</section> 

スタイルシート

.clearfix{ 
     clear: both; 
    } 
    section{ 
     text-align: center; 
    } 
    .main{ 
    float:left; 

    text-align: center; 
    border:10px solid white; 
    height:306px; 
     width:50%; 
    margin : 50px auto; 
    box-shadow: 0px 0px 25px black; 
    overflow: hidden; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
    } 
    .paragraph{ 
    -webkit-transform: translateY(-300%); 
    border: 5px solid grey; 
    background-color: grey; 
    opacity: 0.5; 
    } 
    .main:hover .content, 
     .main:active .content{ 
     -webkit-transform: translateY(-340px); 
     -webkit-transition: -webkit-transform 700ms; 
    } 
    .content{ 
     width: 306px; 
     height: 306px; 
     background: rgba(51, 102, 255, 0.5);  
    } 
    img{ 
     height:inherit; 
     width:inherit; 
     -webkit-transition: -webkit-transform 5000ms; 
    } 
    button{ 
     width: 100%; 
     height: 50px; 
     margin-top: 100px; 
     background: black; 
     border: 0; 
     cursor: pointer; 
     color: white; 
     font: 16px tahoma;  
    } 
    button:hover 
    { 
     opacity: 0.5; 
    } 
0

あなたの主な問題は、あなたが.mainためのCSSルール上の2つのwidth性質を持っているという事実です。あなたはwidth〜50%を設定したが、その後306pxの値に後で再び数行を、それをオーバーライドしている:

.main{ 
    float:left; 
    width:50%; 
    // ... 
    width:306px; 
    // ... 
} 

第二に、あなたは.main要素に適用している10pxのボーダーはに取られることはありません50%の幅が計算された場合、要素は20%(2 x 10ピクセル)で50%よりも広くなります。これを修正するには、 `ボーダー・ボックス」にbox-sizingプロパティの値を設定する必要があります:

.main { 
    // ... 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

は、他のいくつかのねじれが同様に整理してありますが、これはあなたの要求された問題を解決します。私はあなたがここで何をしようとしているのかよくわからないので、より多くの問題にぶつかると、別の質問を作成してここにリンクすることができます。

ここでの行の2枚の画像を表示するための私の提案の修正とスニペットです:テーブルを使用しないようにしてください

.clearfix{ 
 
    clear: both; 
 
} 
 
section{ 
 
    text-align: center; 
 
} 
 
.main{ 
 
float:left; 
 
width:50%; 
 
text-align: center; 
 
border:10px solid white; 
 
height:306px; 
 
margin : 50px auto; 
 
box-shadow: 0px 0px 25px black; 
 
overflow: hidden; 
 
-moz-box-sizing: border-box; 
 
box-sizing: border-box; 
 
} 
 
.paragraph{ 
 
-webkit-transform: translateY(-300%); 
 
border: 5px solid grey; 
 
background-color: grey; 
 
opacity: 0.5; 
 
} 
 
.main:hover .content, 
 
    .main:active .content{ 
 
    -webkit-transform: translateY(-340px); 
 
    -webkit-transition: -webkit-transform 700ms; 
 
} 
 
.content{ 
 
    width: 100%; 
 
    height: 306px; 
 
    background: rgba(51, 102, 255, 0.5);  
 
} 
 
img{ 
 
    height: inherit; 
 
    width: inherit; 
 
    -webkit-transition: -webkit-transform 5000ms; 
 
} 
 
button{ 
 
    width: 100%; 
 
    height: 50px; 
 
    margin-top: 100px; 
 
    background: black; 
 
    border: 0; 
 
    cursor: pointer; 
 
    color: white; 
 
    font: 16px tahoma;  
 
} 
 
button:hover 
 
{ 
 
    opacity: 0.5; 
 
}
<section class="opportunity"> 
 
    <div class="main"> 
 
     <img src="http://placehold.it/650x350" > 
 
     <div class="paragraph">This wil be centered</div> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div>  
 
    <div class="main"> 
 
     <img src="http://placehold.it/650x350"> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div> 
 
    <div class="main"> 
 
     <img src="http://placehold.it/650x350"> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div>  
 
    <div class="main"> 
 
     <img src="http://placehold.it/650x350"> 
 
     <div class="content"> 
 
      <button>Nokia 7210 Classic</button> 
 
     </div> 
 
    </div>  
 
    <div class="clearfix"></div> 
 
</section>

+0

実際に動作しています。私は各ボックス間に間隔を置くことができる方法はありますか?パディングを適用していますが、実際には機能していません。 –

+0

実際に動作しています。ボックス間に少し間隔を置く方法はありますか?私は、.hoverreffectクラスの下、上、左、右に余白50ピクセルを試しました。問題は、私がそれを行うとボックスが1つずつ表示され、それ以上の2つではありません。 –

+0

@EltonSousaでは、50%の幅に加えて余白が追加されるため、余白が実際に割れてしまいます。 '.main'の中に別の要素(' div')を追加し、すべてのプレゼンテーションスタイル( 'border'、' box-shadow')を '.main'から新しい' div'に移動する必要があります。これで '.main'にパディングを追加することができます。助けてくれたら、私の答えをupvoteしてください! –

関連する問題