2017-08-28 48 views
2

我想將孩子的元素放到其父母的網格中。是否可以繼承/使用父母的列模板?

一種方法是讓孩子使用與父母相同的規則與grid-column: 1/4的所有列。這將會產生幾行網格佈局。所以最終的結果會很差。

.parent-wrapper { 
 
    display: grid; 
 
    grid-template-columns: auto auto auto; 
 
} 
 

 
.child-wrapper { 
 
    /* make it inherit from parent */ 
 
    /* so that it displays as..: */ 
 
    /* Item A ... Item B ... Item C */ 
 
} 
 

 
.child-wrapper-attempt { 
 
    grid-column: 1/4; 
 
    display: grid; 
 
    grid-template-columns: auto auto auto; 
 
}
<h3>Problem..</h3> 
 
<div class="parent-wrapper"> 
 
    <div>Header A</div> 
 
    <div>Header B</div> 
 
    <div>Header C</div> 
 
    <div class="child-wrapper"> 
 
    <div>Item A</div> 
 
    <div>Item B</div> 
 
    <div>Item C</div> 
 
    </div> 
 
</div> 
 

 
<br> 
 
I'd like to make it display as.. 
 
<p>Item A ... Item B ... Item C</p> 
 
Aligned with the headers.. 
 

 
<hr> 
 

 
<h3>attempt...</h3> 
 
<div class="parent-wrapper"> 
 
    <div>Header A</div> 
 
    <div>Header B</div> 
 
    <div>Header C</div> 
 
    <div class="child-wrapper-attempt"> 
 
    <div>Item A</div> 
 
    <div>Item B</div> 
 
    <div>Item C</div> 
 
    </div> 
 
    <div class="child-wrapper-attempt"> 
 
    <div>Different lenghts of</div> 
 
    <div>content..</div> 
 
    <div>and see what happens..</div> 
 
    </div> 
 
</div>

更新 - 響應:自動VS FR result auto vs 1fr

更新2次網格,就是我要找的。但不幸的是目前還不能使用。

我會繼續打開這個問題,雖然對於我的具體情況,我使用了<ng-container>,這樣它使用相同的網格佈局。然而,問題在於,像點擊,懸停這樣的事情會變得稍微複雜一些。

<div class="parent-wrapper"> 
    <div>Header A</div> 
    <div>Header B</div> 
    <div>Header C</div> 
    <ng-container *ngFor="let item of items | async"> 
    <div>{{item.a}}</div> 
    <div>{{item.b}}</div> 
    <div>{{item.c}}</div> 
    </ng-container> 
</div> 
+2

可能感興趣的:https://rachelandrew.co.uk/archives/2017/07/20/why-display-contents-is-not-css-grid-layout -subgrid/ – vals

+0

是的,子網格...這正是我正在尋找... – user7552

回答

0

該錯位是由auto值引起的。改爲嘗試1fr

.parent-wrapper { 
 
    display: grid; 
 
    grid-template-columns: auto auto auto; 
 
} 
 

 
.child-wrapper { 
 
    /* make it inherit from parent */ 
 
    /* so that it displays as..: */ 
 
    /* Item A ... Item B ... Item C */ 
 
} 
 

 
.child-wrapper-attempt { 
 
    grid-column: 1/4; 
 
    display: grid; 
 
    grid-template-columns: 1fr 1fr 1fr; /* adjustment */ 
 
} 
 

 
div:not(.parent-wrapper):not(.child-wrapper):not(.child-wrapper-attempt) { 
 
    border: 1px dashed red; 
 
}
<h3>Problem..</h3> 
 
<div class="parent-wrapper"> 
 
    <div>Header A</div> 
 
    <div>Header B</div> 
 
    <div>Header C</div> 
 
    <div class="child-wrapper"> 
 
    <div>Item A</div> 
 
    <div>Item B</div> 
 
    <div>Item C</div> 
 
    </div> 
 
</div> 
 

 
<br> 
 
I'd like to make it display as.. 
 
<p>Item A ... Item B ... Item C</p> 
 
Aligned with the headers.. 
 

 
<hr> 
 

 
<h3>attempt...</h3> 
 
<div class="parent-wrapper"> 
 
    <div>Header A</div> 
 
    <div>Header B</div> 
 
    <div>Header C</div> 
 
    <div class="child-wrapper-attempt"> 
 
    <div>Item A</div> 
 
    <div>Item B</div> 
 
    <div>Item C</div> 
 
    </div> 
 
    <div class="child-wrapper-attempt"> 
 
    <div>Different lenghts of</div> 
 
    <div>content..</div> 
 
    <div>and see what happens..</div> 
 
    </div> 
 
</div>

+0

嗨,這確實對齊它的正確,但我使用'汽車'的原因是,它可以更好地使用可用空間(見更新後的文章)。當然,我可以做:'1fr 1fr 2fr'或更多取決於我的內容。但它是不可能與自動? – user7552

+1

'auto'算法根據內容大小來設置列的大小。因爲您使用不同的容器,所以沒有理由認爲基於內容的項目將與父項目一致。沒有關聯。 –