Search code examples
htmlcsslayoutflexbox

How to set Back ground Image in the grid?


I am working on sample blog design and trying to learn css & html with flex and grid. I am trying to set back ground image to the grid 1,3,5 . I tried giving the class and add url with image but unable to do. I have provided my code for your reference. it silly question but with grid I am unable to get it.. Code pen link : code pen link

I tried something like this :

.bg{
  background: url(1.jpg);
}

tried to assign this bg class to div but didnt work. I tried removing the back ground color from inner grid but it didnt work.. CSS :

html {
    height: 100%;
  }
  
  body {
    height: 100%;
    margin: 0;
    font-family: sans-serif;
    background-color: seashell;
  }
  
  #page {
    display: flex; /*display:flex; not flexbox */
    height: calc( 100vh - 30px);
    flex-direction: row; /* Change flex-direction to column*/
  }

  #sidebar {
    margin-left: 2.5rem;
    margin-right: 2.5rem;
    width: 100px;
  }
  
  #content{
  flex:1;
  display: grid;
  grid-template-columns: repeat(3,1fr);
  grid-template-rows: auto;
  background-color: #2196F3;
  padding:10px;
 }
  
 #inner-grid{
     flex:1;
     display : grid ;
     grid-template-rows:2fr 2fr;
     grid-gap:5px;
 }

 #inner-grid > div {
    background: lightgreen;
    padding: 8px;
    border: black;
  }
  .one {
    background-color: rgba(255, 255, 255, 0.8);
    border: 1px solid rgba(0, 0, 0, 0.8);
    padding: 20px;
    font-size: 30px;
    text-align: center;
    display: grid;
  }
 .bg{
     background-image: url(/image1.jpg);
     border: crimson;
     display: grid;
 }
  .two {
    background-color: blue;
  }
  
  .three {
    background-color: purple;
  }
  
  .box {
    background-color: #444;
    grid-template-rows: 5;
    grid-template-columns: 10;
    color: #fff;
    border-radius: 5px;
    padding: 30px;
    font-size: 150%;
  }
  
  .nav-list {
    background: #5bb1f9;
    box-shadow: 0px 0px 10px var(--clr-gray200);
    padding: 1rem 0;
    border-radius: var(--radius);
    display: flex;
    justify-content: center;
    -webkit-justify-content: center;
    align-items: center;
    align-items: baseline;
  }
  
  .nav-item {
    list-style: none;
    margin-right: 2rem;
    text-align: center;
  }
  
  .nav-item a {
    text-decoration: none;
    color: black;
    transition: all 200ms ease-in;
    text-align: center;
  }
  
  .nav-item a:hover {
    color: var(--clr-primary-dark);
  }

Html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Blog Post</title>
    <link rel="stylesheet" href="common.css">
    <meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport"/>

    <style>
  
    </style>
  </head>
  <body>

    <div id="header">
      <navbar>
        <ul class="nav-list">
          <li class="nav-item">
            <a 
              href="https://twitter.com/share?ref_src=twsrc%5Etfw" 
              class="twitter-share-button" 
              data-show-count="false"
            >Tweet</a>
            <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
          </li>
          <li class="nav-item">
            <script src="https://platform.linkedin.com/in.js" type="text/javascript">
              lang: en_US
            </script>
            <script type="IN/Share" data-url="https://www.linkedin.com"></script>
          </li>
          <li class="nav-item"><a href="#">Home</a></li>
          <li class="nav-item"><a href="#">Article</a></li>
          <li class="nav-item"><a href="#">Article</a></li>
          <li class="nav-item">Login</li>
        </ul>
      </navbar>
    </div>
    
    <div id="page">
      <div id="sidebar">
        <div>
          My profile
        </div>
        <div>
          My interest
        </div>
      </div>
      <div id="content">
        <div class="one">
          <div id="inner-grid">
            <div>1</div>
            <div>2</div>
        </div>
        </div>
        <div class="one">
          <div id="inner-grid">
            <div>3</div>
            <div>4</div>
        </div>
        </div>
        <div class="one">
          <div id="inner-grid">
            <div>5</div>
            <div>6</div>
        </div>
        </div>
      </div>
    </div>
    <div id="footer">
      <navbar>
          <ul class="nav-list">
              <li class="nav-item"><a href="https://twitter.com/share?ref_src=twsrc%5Etfw" class="twitter-share-button" data-show-count="false">Tweet</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
              </li>
               <li class="nav-item">   <script src="https://platform.linkedin.com/in.js" type="text/javascript">lang: en_US</script>
                <script type="IN/Share" data-url="https://www.linkedin.com"></script></li>
              <li class="nav-item"><a href="#">footer 1</a></li>
              <li class="nav-item"><a href="#">footer 2</a></li>
              <li class="nav-item"><a href="#">footer 3</a></li>
              </ul>
      </navbar>
    </div>
  </body>
  </html>

Solution

  • assign bg class to div(1 , 3, 5) and remove the back ground color from inner grid :)

    html {
        height: 100%;
      }
      
      body {
        height: 100%;
        margin: 0;
        font-family: sans-serif;
        background-color: seashell;
      }
      
      #page {
        display: flex; /*display:flex; not flexbox */
        height: calc( 100vh - 30px);
        flex-direction: row; /* Change flex-direction to column*/
      }
    
      #sidebar {
        margin-left: 2.5rem;
        margin-right: 2.5rem;
        width: 100px;
      }
      
      #content{
      flex:1;
      display: grid;
      grid-template-columns: repeat(3,1fr);
      grid-template-rows: auto;
      background-color: #2196F3;
      padding:10px;
     }
      
     #inner-grid{
         flex:1;
         display : grid ;
         grid-template-rows:2fr 2fr;
         grid-gap:5px;
     }
    
     #inner-grid > div {
        /*background: lightgreen;*/
        padding: 8px;
        border: black;
      }
      .one {
        background-color: rgba(255, 255, 255, 0.8);
        border: 1px solid rgba(0, 0, 0, 0.8);
        padding: 20px;
        font-size: 30px;
        text-align: center;
        display: grid;
      }
     .bg{
         background-image: url('https://picsum.photos/200/300') !important;
          background-repeat: no-repeat;
      background-size: cover;
         border: crimson;
         display: grid !important;
     }
      .two {
        background-color: blue;
      }
      
      .three {
        background-color: purple;
      }
      
      .box {
        background-color: #444;
        grid-template-rows: 5;
        grid-template-columns: 10;
        color: #fff;
        border-radius: 5px;
        padding: 30px;
        font-size: 150%;
      }
      
      .nav-list {
        background: #5bb1f9;
        box-shadow: 0px 0px 10px var(--clr-gray200);
        padding: 1rem 0;
        border-radius: var(--radius);
        display: flex;
        justify-content: center;
        -webkit-justify-content: center;
        align-items: center;
        align-items: baseline;
      }
      
      .nav-item {
        list-style: none;
        margin-right: 2rem;
        text-align: center;
      }
      
      .nav-item a {
        text-decoration: none;
        color: black;
        transition: all 200ms ease-in;
        text-align: center;
      }
      
      .nav-item a:hover {
        color: var(--clr-primary-dark);
      }
    <html lang="en">
      <head>
        <meta charset="utf-8" />
        <title>Blog Post</title>
        <link rel="stylesheet" href="common.css">
        <meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport"/>
    
        <style>
      
        </style>
      </head>
      <body>
    
        <div id="header">
          <navbar>
            <ul class="nav-list">
              <li class="nav-item">
                <a 
                  href="https://twitter.com/share?ref_src=twsrc%5Etfw" 
                  class="twitter-share-button" 
                  data-show-count="false"
                >Tweet</a>
                <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
              </li>
              <li class="nav-item">
                <script src="https://platform.linkedin.com/in.js" type="text/javascript">
                  lang: en_US
                </script>
                <script type="IN/Share" data-url="https://www.linkedin.com"></script>
              </li>
              <li class="nav-item"><a href="#">Home</a></li>
              <li class="nav-item"><a href="#">Article</a></li>
              <li class="nav-item"><a href="#">Article</a></li>
              <li class="nav-item">Login</li>
            </ul>
          </navbar>
        </div>
        
        <div id="page">
          <div id="sidebar">
            <div>
              My profile
            </div>
            <div>
              My interest
            </div>
          </div>
          <div id="content">
            <div class="one">
              <div id="inner-grid">
                <div class="bg">1</div>
                <div>2</div>
            </div>
            </div>
            <div class="one">
              <div id="inner-grid">
                <div class="bg">3</div>
                <div>4</div>
            </div>
            </div>
            <div class="one">
              <div id="inner-grid">
                <div class="bg">5</div>
                <div>6</div>
            </div>
            </div>
          </div>
        </div>
        <div id="footer">
          <navbar>
              <ul class="nav-list">
                  <li class="nav-item"><a href="https://twitter.com/share?ref_src=twsrc%5Etfw" class="twitter-share-button" data-show-count="false">Tweet</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
                  </li>
                   <li class="nav-item">   <script src="https://platform.linkedin.com/in.js" type="text/javascript">lang: en_US</script>
                    <script type="IN/Share" data-url="https://www.linkedin.com"></script></li>
                  <li class="nav-item"><a href="#">footer 1</a></li>
                  <li class="nav-item"><a href="#">footer 2</a></li>
                  <li class="nav-item"><a href="#">footer 3</a></li>
                  </ul>
          </navbar>
        </div>
      </body>
      </html>