2017-12-25 47 views
0

私はCSS grid-template-areasを学びたいと思っています。CSSグリッドテンプレートエリアの孫要素を移動する

しかし、私のコードが意図したエリアのテンプレートのように機能していません。

"タイトルタイトル"
"の両方-Aの両方-B"
"左から右"、左側
を「 -b右-b "

すべての左の項目は、対応する(" a "または" b ")右の項目の左側にある必要があります。

* { 
 
    border: 1px solid black; 
 
} 
 

 
.wrapper { 
 
    display: grid; 
 
    grid-template-areas: "title title" 
 
         "both-a both-b"      
 
         "left-a right-a" 
 
         "left-b right-b"; 
 
} 
 

 
.wrapper > header { 
 
    grid-area: title; 
 
} 
 

 
.both > .topic-a { 
 
    grid-area: both-a; 
 
} 
 

 
.both > .topic-b { 
 
    grid-area: both-b; 
 
} 
 

 
.left > .topic-a { 
 
    grid-area: left-a; 
 
} 
 

 
.left > .topic-b { 
 
    grid-area: left-b; 
 
} 
 

 
.right > .topic-a { 
 
    grid-area: right-a; 
 
} 
 

 
.right > .topic-b { 
 
    grid-area: right-b; 
 
} 
 

 

 
.left-side { 
 
    color: red; 
 
} 
 

 
.right-side { 
 
    color: blue; 
 
}
<article class="wrapper"> 
 
<header><h1>Title</h1></header> 
 

 
<section class="both"> 
 
<section class="topic-a"> 
 
<ol> 
 
<li>both-A 1st item</li> 
 
<li>2nd item</li> 
 
<li>3rd item</li> 
 
</ol> 
 
</section> 
 
<section class="topic-b"> 
 
<ol> 
 
<li>both-B 1st item</li> 
 
<li>2nd item</li> 
 
<li>3rd item</li> 
 
</ol> 
 
</section> 
 
</section> 
 

 
<section class="left-side"> 
 
<section class="topic-a"> 
 
<ol> 
 
<li>left-A 1st item</li> 
 
<li>2nd item</li> 
 
<li>3rd item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
</ol> 
 
</section> 
 
<section class="topic-b"> 
 
<ol> 
 
<li>left-B 1st item</li> 
 
<li>2nd item</li> 
 
<li>3rd item</li> 
 
</ol> 
 
</section> 
 
</section> 
 

 
<section class="right-side"> 
 
<section class="topic-a"> 
 
<ol> 
 
<li>right-A 1st item</li> 
 
<li>2nd item</li> 
 
<li>3rd item</li> 
 
</ol> 
 
</section> 
 
<section class="topic-b"> 
 
<ol> 
 
<li>right-B 1st item</li> 
 
<li>2nd item</li> 
 
<li>3rd item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
<li>nth item</li> 
 
</ol> 
 
</section> 
 
</section> 
 

 
</article>

私はそれはおそらく、愚かな間違いだけど、私はそれを把握することはできません。任意のヘルプとメリーXマスのための

感謝!:)

+1

グリッドは、親と子の関係に取り組んでいます。グリッドの大部分にグリッド区域スタイルを与えていますが、これは機能しません。 – vals

+0

@valsああ、私は見る!ヘッドアップをありがとう!グリッドを入れ子にしますか?フレックスボックスですか?問題は残っていますが、これらは異なるセクションの子供です...おそらく私は親を削除して孫の代わりに子供にする必要があります。 – flen

+0

あなたの決定はあなたのものです...しかし、おそらくあなたはグリッドの内側にフレックスボックス私が見ることができるレイアウト – vals

答えて

0

さてさて、多分これが誰かを助けます。 CSSの両方flexboxgridが唯一の直接子供の項目として(そうが可能アイテムではない)を持っているので

それは、私がやりたいことはできません。

したがって、私は2つのセクションを除外し、left-abとright-abの両方を同じ親の下に置かなければなりませんでした。このようにして、私はright-aの隣にleft-aright-bの次にleft-bを持つことができます。

これは、結果コードです:
(!私のCSSのスキルは非常に悪いです、修正は非常に歓迎されるでしょう)

* { 
 
    border: 1px black solid; 
 
} 
 

 
.wrapper { 
 
    display: grid; 
 
    grid-template-areas: "title" "both" "left-right"; 
 
} 
 

 
.wrapper>header { 
 
    grid-area: title; 
 
} 
 

 
.both { 
 
    grid-area: both; 
 
    display: flex; 
 
    flex-flow: row nowrap; 
 
    align-items: stretch; 
 
} 
 

 
.both>* { 
 
    flex: 1; 
 
} 
 

 
.left-right { 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
    align-items: stretch; 
 
} 
 

 
.left-right>* { 
 
    flex: 1; 
 
    min-width: 40%; 
 
} 
 

 
.both>.topic-a { 
 
    order: 1; 
 
} 
 

 
.both>.topic-b { 
 
    order: 2; 
 
} 
 

 
.topic-a.left-side { 
 
    order: 3; 
 
} 
 

 
.topic-b.left-side { 
 
    order: 5; 
 
} 
 

 
.topic-a.right-side { 
 
    order: 4; 
 
} 
 

 
.topic-b.right-side { 
 
    order: 6; 
 
} 
 

 
.left-side { 
 
    color: red; 
 
    background-color: #FCC; 
 
} 
 

 
.right-side { 
 
    color: blue; 
 
    background-color: lightblue; 
 
}
<article class="wrapper"> 
 
    <header> 
 
    <h1>Title</h1> 
 
    </header> 
 

 
    <section class="both"> 
 
    <section class="topic-a"> 
 
     <ol> 
 
     <li>both-A 1st item</li> 
 
     <li>2nd item</li> 
 
     <li>3rd item</li> 
 
     </ol> 
 
    </section> 
 
    <section class="topic-b"> 
 
     <ol> 
 
     <li>both-B 1st item</li> 
 
     <li>2nd item</li> 
 
     <li>3rd item</li> 
 
     </ol> 
 
    </section> 
 
    </section> 
 

 
    <div class="left-right"> 
 

 

 
    <section class="topic-a left-side"> 
 
     <ol> 
 
     <li>left-A 1st item</li> 
 
     <li>2nd item</li> 
 
     <li>3rd item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     </ol> 
 
    </section> 
 
    <section class="topic-b left-side"> 
 
     <ol> 
 
     <li>left-B 1st item</li> 
 
     <li>2nd item</li> 
 
     <li>3rd item</li> 
 
     </ol> 
 
    </section> 
 

 

 

 
    <section class="topic-a right-side"> 
 
     <ol> 
 
     <li>right-A 1st item</li> 
 
     <li>2nd item</li> 
 
     <li>3rd item</li> 
 
     </ol> 
 
    </section> 
 
    <section class="topic-b right-side"> 
 
     <ol> 
 
     <li>right-B 1st item</li> 
 
     <li>2nd item</li> 
 
     <li>3rd item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     <li>nth item</li> 
 
     </ol> 
 
    </section> 
 

 

 
    </div> 
 

 
</article>

関連する問題