并列获取div div

时间:2018-07-31 08:11:03

标签: html css

我有一个看起来像这样的div块。

<div id="wrap">
       <div id="columns" class="columns_4">
         <figure>
           <a href="item.php?id={$row['product_id']}"><img src="../resources/{$product_image}" alt="">
           <figcaption>{$row['product_description']}</figcaption>
           <span class="price">&#163;{$row['product_price']}</span>
           <a class="button" href="../resources/cart.php?add={$row['product_id']}">Add to Cart</a>
         </figure>
       </div>
 </div>

尽管在display: inline-block;中使用了CSS,但div仍在层叠层叠,而不是并排坐着(这是我要达到的目的)。

enter image description here

在这种方法下我可能会出错。

  

CSS

*{
  box-sizing:border-box;
  -moz-box-sizing:border-box;
}

body {
  background: #eee;
  min-height: 1000px;
}

#wrap{
    width: 90%;
    max-width: 1100px;
    margin: 50px auto;
}
.columns_2 figure{
   width:49%;
   margin-right:1%;
}
.columns_2 figure:nth-child(2){
    margin-right: 0;
}
.columns_3 figure{
   width:32%;
   margin-right:1%;
}
.columns_3 figure:nth-child(3){
    margin-right: 0;
}
.columns_4 figure{
   width:24%;
   margin-right:1%;
}
.columns_4 figure:nth-child(4){
    margin-right: 0;
}
.columns_5 figure{
   width:19%;
   margin-right:1%;
}
.columns_5 figure:nth-child(5){
    margin-right: 0;
}
#columns figure:hover{
    -webkit-transform: scale(1.1);
    -moz-transform:scale(1.1);
    transform: scale(1.1);

}
#columns:hover figure:not(:hover) {
    opacity: 0.4;
}
div#columns figure {
    display: inline-block;
    background: #FEFEFE;
    border: 2px solid #FAFAFA;
    box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
    margin: 0 0px 15px;
    -webkit-column-break-inside: avoid;
    -moz-column-break-inside: avoid;
    column-break-inside: avoid;
    padding: 15px;
    padding-bottom: 5px;
    background: -webkit-linear-gradient(45deg, #FFF, #F9F9F9);
    opacity: 1;
    -webkit-transition: all .3s ease;
    -moz-transition: all .3s ease;
    -o-transition: all .3s ease;
    transition: all .3s ease;
}

div#columns figure img {
    width: 100%;
    border-bottom: 1px solid #ccc;
    padding-bottom: 15px;
    margin-bottom: 5px;
}

div#columns figure figcaption {
  font-size: .9rem;
  color: #444;
  line-height: 1.5;
  height:60px;
  font-weight:600;
  text-overflow:ellipsis;
}

a.button{
  padding:10px;
  background:salmon;
  margin:10px;
  display:block;
  text-align:center;
  color:#fff;
  transition:all 1s linear;
  text-decoration:none;
  text-shadow:1px 1px 3px rgba(0,0,0,0.3);
  border-radius:3px;
  border-bottom:3px solid #ff6536;
  box-shadow:1px 1px 3px rgba(0,0,0,0.3);
}
a.button:hover{
  background:#ff6536;
  border-bottom:3px solid salmon;
  color:#f1f2f3;
}
@media screen and (max-width: 960px) { 
  #columns figure { width: 24%; }
}
@media screen and (max-width: 767px) {
  #columns figure { width:32%;}
}
@media screen and (max-width: 600px) {
  #columns figure { width: 49%;}
}
@media screen and (max-width: 500px) {
  #columns figure { width: 100%;}
}

[![screenshot][2]][2]

3 个答案:

答案 0 :(得分:1)

取决于创建多个元素的方式:

  • 如果您将“列”用作容器 而不是将float:left;添加到div#columns figure Sample
  • 如果使用“包装纸”作为容器,则需要在float:left;上添加#wrap但您的%宽度会阻止“并排”视图。因此,您需要在某处定义固定大小的宽度(例如body,html或简单的#column),然后将包装大小设置为100%(如果需要,则设置为90%)。 Working

答案 1 :(得分:0)

尝试设置:

#columns {
  float: left;
}

答案 2 :(得分:0)

正如@Chan MT所说,它here(他的密码笔)正常工作。

使用您的网络检查器并检查div的宽度,这可能会引起问题。我猜是因为您的页面大于您提供的页面,所以会有更多CSS可能导致级联。

的确,分享有关它的屏幕截图,以便我们查看是否是由于任何股利造成的。

您也可以用较少的“产品”来检查this codepen,这样就可以看出数量无关紧要。