2017-11-29 9 views
2

私はCSSグリッドを理解しようとする学生です。特定のdiv列や行をすべて変更せずにサイズを変更し、絵などの要素をグリッドに挿入するにはどうすればよいですか?CSSグリッドを使ってdivの高さを変更する

私はここでそれを試みた:https://codepen.io/lukeheald/pen/bYQNgj

私は、私はそれが彼らのすべての高さを変える調整したい特定のdivをターゲットにする場合。

body{ 
 
     font-family: 'Anton', sans-serif; 
 
     margin: 0; 
 
    } 
 
    
 
    /* Main sidebar style, dark background and transition.*/ 
 
    
 
    #sidebar{ 
 
     background: black; 
 
     width: 200px; 
 
     height: 100%; 
 
     display: block; 
 
     position: absolute; 
 
     left: -200px; 
 
     top: 0px; 
 
     transition: left 0.3s linear; 
 
    } 
 
    
 
    /* Sidebar visibile transition and position*/ 
 
    
 
    #sidebar.visible{ 
 
     left: 0px; 
 
     transition: left 0.3s linear; 
 
    } 
 
    
 
    /* ul list styles*/ 
 
    
 
    ul{ 
 
     margin: 0px; 
 
     padding: 0px; 
 
    } 
 
    
 
    /* list styles*/ 
 
    
 
    ul li{ 
 
     list-style: none; 
 
    } 
 
    
 
    /* link styles such as underlining and color etc.*/ 
 
    
 
    ul li a{ 
 
     background:#1C1E1F; 
 
     color: #fff; 
 
     border-bottom: 1px solid #111; 
 
     display: block; 
 
     width: 180px; 
 
     padding: 10px; 
 
     text-decoration: none; 
 
    } 
 
    
 
    /* Sidebar button styles for lines.*/ 
 
    
 
    #sidebar-btn{ 
 
     display: inline-block; 
 
     vertical-align: middle; 
 
     width:50px; 
 
     height: 15px; 
 
     cursor: pointer; 
 
     margin: 20px; 
 
     position: absolute; 
 
     top: 0px; 
 
     right: -80px; 
 
      
 
    } 
 
    
 
    /* Edit physical lines of button.*/ 
 
    
 
    #sidebar-btn span{ 
 
     height: 5px; 
 
     background: black; 
 
     margin-bottom: 5px; 
 
     display: block; 
 
    } 
 
    
 
    /* changing 2 line to have smaller width than top.*/ 
 
    
 
    #sidebar-btn span:nth-child(2){ 
 
     width: 75%; 
 
    } 
 
    
 
    /* changing third line to be smaller than 2nd line */ 
 
    
 
    #sidebar-btn span:nth-child(3){ 
 
     width: 50%; 
 
    } 
 
    
 
    
 
    /*Grid start*/ 
 
    
 
    .grid{ 
 
     display: grid; 
 
     grid-template-columns: 1fr 1fr; 
 
     grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr; 
 
     grid-template-areas: 
 
      "title title" 
 
      "image1 image1" 
 
      "text1 text1" 
 
      "image2 image2" 
 
      "text2 text2" 
 
      "footer footer"; 
 
    } 
 
    
 
    .title { 
 
     grid-area: title; 
 
     justify-self: center; 
 
     background-color: white; 
 
     
 
    } 
 
    
 
    #hero{ 
 
     height: 300px; 
 
     
 
    } 
 
    
 
    .image1 { 
 
     grid-area: image1; 
 
     background-color: blue; 
 
    } 
 
    
 
    .text1 { 
 
     grid-area: text1; 
 
     background-color: green; 
 
    } 
 
    
 
    .image2 { 
 
     grid-area: image2; 
 
     background-color: orange; 
 
    } 
 
    
 
    .text2 { 
 
     grid-area: text2; 
 
     background-color: pink; 
 
    } 
 
    
 
    .footer { 
 
     grid-area: footer; 
 
     background-color: purple; 
 
    } 
 
    
 
    
 
    
 
    @media screen and (min-width: 736px) 
 
    { 
 
     .grid{ 
 
     display: grid; 
 
     grid-template-columns: 1fr 1fr; 
 
     grid-template-rows: 1fr 1fr 1fr 1fr; 
 
     grid-template-areas: 
 
      "title title" 
 
      "image1 text1" 
 
      "image2 text2" 
 
      "footer footer"; 
 
    }
<head> 
 
     <meta charset="UTF-8"> 
 
     <title>Grid Practice</title> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     <link rel="stylesheet" type="text/css" href="css/style.css"> 
 
     <link rel="stylesheet" type="text/css" href="css/animate.css"> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
     <link href="https://fonts.googleapis.com/css?family=Anton" rel="stylesheet"> 
 
     <script src="jquery/jquery.js"></script> 
 
    
 
    </head> 
 
    
 
    <body> 
 
    
 
    <!–– Sidebar Start ––> 
 
     
 
     <div id="sidebar"> 
 
    
 
      <ul> 
 
       <li><a href="#">HOME</a></li> 
 
       <li><a href="#">ABOUT</a></li> 
 
       <li><a href="#">DEMO</a></li> 
 
       <li><a href="#">CONTACT US</a></li> 
 
       <li><a href="#">SOCIAL MEDIA</a></li> 
 
      </ul> 
 
    
 
      <div id="sidebar-btn"> 
 
       <span></span> 
 
       <span></span> 
 
       <span></span> 
 
      </div> 
 
     </div> 
 
     
 
     
 
    <!–– Sidebar End ––> 
 
     
 
     
 
     <!–– hero ––> 
 
      <div class="grid"> 
 
      <div id="hero" class="title">Hero 
 
      </div> 
 
      
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
      <div class="image1">image1</div> 
 
      <div class="text1">text1</div> 
 
      <div class="image2">image2</div> 
 
      <div class="text2">text2</div> 
 
      <div class="footer">footer</div> 
 
     </div> 
 
    
 
     
 
     
 
     
 
    </body> 
 

 

 

 

答えて

1

あなたが行の高さまたは列の幅を変更すると、その変更は、行全体を横切って起こります。したがって、行/列のすべてのグリッド項目に自然に影響します。

問題を解決する1つの方法は、多数の小さな行/列を持つグリッドを作成することです。それから、あなたのアイテムがあなたの望む長さを達成するのに十分な行/列にまたがっているようにしてください。

私の例では、2列12行のグリッドコンテナがあります。しかし、それはわずか3行のように見えます。私は個々の項目の高さを設定するのにspanキーワードを使用します。 (あなたがspanを使用する必要はありません。Grid provides multiple methods for sizing and positioning items.

ここ

article { 
 
    display: grid; 
 
    grid-template-columns: 1fr 1fr; 
 
    grid-template-rows: repeat(12, 1fr); 
 
    grid-row-gap: 5px; 
 
    height: 75vh; 
 
} 
 

 
section:nth-child(1) { grid-column-start: 1; grid-row: 1/span 3; } 
 
section:nth-child(2) { grid-column-start: 2; grid-row: 1/span 4; } 
 
section:nth-child(3) { grid-column-start: 1; grid-row: 5/span 2; } 
 
section:nth-child(4) { grid-column-start: 2; grid-row: 5/span 3; } 
 
section:nth-child(5) { grid-column-start: 1; grid-row: 9/span 4; } 
 
section:nth-child(6) { grid-column-start: 2; grid-row: 9/span 2; } 
 

 
/* for illustration only */ 
 
section:nth-child(odd) { background-color: lightgreen; } 
 
section:nth-child(even) { background-color: orangered; } 
 
article     { border: 1px solid gray;  }
<article> 
 
    <section></section> 
 
    <section></section> 
 
    <section></section> 
 
    <section></section> 
 
    <section></section> 
 
    <section></section> 
 
</article>

+1

マイケルの答えをありがとう、これも私の最終的な解決策を見つけるのを助けた。 –

1

はあなたの例のペンを使用して、グリッド・コンテナーを変更する例です。これはあなたが探しているものですか?

他のものに影響を与えることなく、ただ1つのグリッド容器変更:列の幅を変更 https://codepen.io/suefeng/pen/XzyXVb

.image1 { 
    grid-area: image1; 
    background-color: blue; 
    width: 200px; 
    height: 200px; 
} 

をので、一方が狭く、一方が広い: 各行を変更https://codepen.io/suefeng/pen/vWQLpe

@media screen and (min-width: 736px) 
{ 
    .grid { 
     display: grid; 
     grid-template-columns: .5fr 1.5fr; 
     grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr; 
     grid-template-areas: 
      "title title" 
      "image1 text1" 
      "image2 text2" 
      "image3 text3" 
      "image4 text4" 
      "footer footer"; 
    } 
} 

別の高さへ: https://codepen.io/suefeng/pen/jaQWjN

@media screen and (min-width: 736px) 
{ 
    .grid { 
     display: grid; 
     grid-template-columns: .5fr 1.5fr; 
     grid-template-rows: .5fr 1fr 1.5fr 2fr 2.5fr 3fr; 
     grid-template-areas: 
      "title title" 
      "image1 text1" 
      "image2 text2" 
      "image3 text3" 
      "image4 text4" 
      "footer footer"; 
    } 
} 
+0

こんにちは、私に戻って時間を割いてくれてありがとう。私はそれが私が達成しようとしている最後の例だと信じています。私は、一番上の私のヒーローが真ん中のイメージを持つ大きなフルスクリーンの空白になるようにしたい。 http://www.boxmodeldigital.com/our-work/rentokil/ グリッドでこれを達成できますか?あなたのコードでは、これを大きくしている部分があります。 '' grid-template-rows:.5fr 1fr 1.5fr 2fr 2.5fr 3fr; グリッドテンプレート領域 " –

+0

こんにちはスー、上記の答えに基づいて残りの部分を把握するために管理ありがとうございます。 –

関連する問題