2017-05-29 84 views
2

我有两个柔性行。第一行有6个与flex: 1相等的列。第二行的列为flex: 4,列为flex:2。列有margin-right: 10px集,除了连续的最后一个孩子。柔性列不匹配

http://jsbin.com/gufihoyaha/edit?html,css,output

.row { 
 
    display: flex; 
 
} 
 

 
.row .col { 
 
    margin-right: 10px; 
 
    background-color: coral; 
 
} 
 

 
.row .col:last-child { 
 
    margin-right: 0; 
 
} 
 

 
.flex-1 { 
 
    flex: 1; 
 
} 
 

 
.flex-4 { 
 
    flex: 4; 
 
} 
 

 
.flex-2 { 
 
    flex: 2; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
<div class="row"> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
</div> 
 
<div class="row"> 
 
    <div class="col flex-4">4</div> 
 
    <div class="col flex-2">2</div> 
 
</div> 
 
</body> 
 
</html>

但结果跟我想象的不同:

enter image description here

我想是这样的:

enter image description here

问题: 为什么会发生这种情况,以及如何解决这个问题?

回答

1

只有display:grid实际上能够正确地做到这一点:

不幸的是,在这个时候,它是安静的新不落实每一个地方。见http://caniuse.com/#search=grid

要多了解一下:https://css-tricks.com/snippets/css/complete-guide-grid/

.row { 
 
    display: grid; 
 
    grid-template-columns: repeat(6, 1fr); 
 
} 
 

 
.row .col { 
 
    background-color: coral; 
 
    margin-right: 10px; 
 
} 
 

 
.row .col:last-child { 
 
    margin-right: 0; 
 
} 
 

 
.flex-1 {} 
 

 
.flex-4 { 
 
    grid-column: auto/span 4; 
 
} 
 

 
.flex-2 { 
 
    grid-column: auto/span 2; 
 
}
<div class="row"> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
    <div class="col flex-1">1</div> 
 
</div> 
 
<div class="row"> 
 
    <div class="col flex-4">4</div> 
 
    <div class="col flex-2">2</div> 
 
</div>