1

I want to create a table using flexbox. The output should be like this:

enter image description here

The code I have tried is:

.row {
  display: flex;
}

.field {
  flex-grow: 1;
}
<div class="row">
   <div class="field">Name</div>
   <div class="field">DOB</div>
   <div class="field">Address</div>
   <div class="field">Telephone Number</div>
   <div class="field">Sex</div>
</div>
<div class="row">
   <div class="field">Peter Parker</div>
   <div class="field">28/02/1991</div>
   <div class="fieldgrow">
      Lorem ipsum, or lipsum as it is sometimes known, is a dummy text.
   </div>
   <div class="field">1233</div>
   <div class="field">M</div>
</div>
<div class="row">
   <div class="field">Peter Parker</div>
   <div class="field">28/02/1991</div>
   <div class="fieldgrow">
      Lorem ipsum, or lipsum as it is sometimes known, is a dummy text.
   </div>
   <div class="field">1233</div>
   <div class="field">M</div>
</div>

I am a newbie to HTML and CSS. Where am I making a mistake? Can anyone please help?

newbie
  • 530
  • 1
  • 9
  • 36

2 Answers2

1

You need to change your HTML and CSS slightly. This looks exactly like an HTML table:

.flex {
  display: flex;
}

.row {
  flex: 1;
  border: 1px solid grey;
}
<div class="flex">
  <div class="row">
    Name
  </div>
  <div class="row">
    DOB
  </div>
  <div class="row">
    Address
  </div>
  <div class="row">
    Telephone Number
  </div>
  <div class="row">
    Sex
  </div>
</div>

<div class="flex">
  <div class="row">
    Peter Parker
  </div>
  <div class="row">
    28/02/1991
  </div>
  <div class="row">
    Lorem ipsum, or lipsum as it is sometimes known, is a dummy text.
  </div>
  <div class="row">
    1233
  </div>
  <div class="row">
    M
  </div>
</div>

<div class="flex">
  <div class="row">
    Peter Parker
  </div>
  <div class="row">
    28/02/1991
  </div>
  <div class="row">
    Lorem ipsum, or lipsum as it is sometimes known, is a dummy text.
  </div>
  <div class="row">
    1233
  </div>
  <div class="row">
    M
  </div>
</div>
Aryan Beezadhur
  • 4,503
  • 4
  • 21
  • 42
-1

you can use CSS as for child div

    .row {
        display: flex;
        flex-wrap: nowrap;
        background-color: greenyellow
    }

    .row>div {
        flex-grow: 1;
        background-color: #f1f1f1;
        width: 100px;
        margin: 10px;
        line-height: 75px;
        font-size: 30px;
    }

your table will be generated definatly

  • 1
    It does not work. It assigns the same grow to all divs whereas my requirement is that the Address should occupy more space. Please see the attached image in question :) – newbie Jun 29 '20 at 12:56