Дизайн таблицы в модуле раскладки css flexbox - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь написать разметку и CSS для табличного дизайна в модуле flexbox!

Вот дизайн

enter image description here

Вот разметка

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.header-area {
  margin: 50px auto;
  max-width: 800px;
}

.flextable-header {
  width: 100%;
  background: #f7f7f7;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  height: 45px;
}

.flextable-header span {
  width: 20%;
  text-align: center;
}

.flextable-header .amount {
  flex: auto;
  text-align: right;
  padding-right: 30px;
}

.flextable-content {
  height: 100px;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
}

.flextable-content div {
  width: 20%;
  text-align: center;
}

.text-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  font-size: 15px;
  height: 100%;
}

#dates {
  text-align: left;
  display: inline-block;
}

.flextable-content .money {
  flex: auto;
  text-align: right;
  padding-right: 30px;
}

.flextable-content div img {
  width: 120px;
  height: 80px;
  border-radius: 5px;
  object-fit: cover;
  object-position: center;
}
<div class="header-area">

  <div class="flextable-header">
    <span>Photos</span>
    <span>Date</span>
    <span class="amount">Amount</span>
  </div>

  <div class="flextable-content">
    <div><img src="https://i.imgur.com/VzV3NwJ.jpg" alt=""></div>

    <div class="text-left">
      <div>Business</div><br/>
      <div id="dates">25 December 2019</div>
    </div>

    <div class="money">3500 <small>Taka</small></div>

  </div>

</div>

У меня стопка с выравниванием даты и нижней границей в соответствии с дизайном, который я помещаю сверху!

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Вы можете упростить свой код, как показано ниже, и использовать простой градиент для линии:

* {
  box-sizing: border-box;
}

.header-area {
  margin: 50px auto;
  max-width: 800px;
}

.flextable-header,
.flextable-content{
  background: #f7f7f7;
  display: flex;
  align-items: center;
  height: 45px;
}

.flextable-header > span:first-child {
  min-width:130px;
  text-align:center;
}

.flextable-header .amount,
.flextable-content .money{
  margin-left:auto;
  padding-right: 30px;
}

.flextable-content {
  height: 100px;
  background:linear-gradient(grey,grey) bottom right/calc(100% - 130px) 1px no-repeat;
  padding-bottom:10px;
  margin:10px 0;
}
.flextable-content:last-child {
  background:none;
}

.flextable-content > img {
  max-width:120px;
  border-radius: 5px;
}

.text-left {
  padding-left:10px;
  font-size: 15px;
}
<div class="header-area">

  <div class="flextable-header">
    <span>Photos</span>
    <span>Date</span>
    <span class="amount">Amount</span>
  </div>

  <div class="flextable-content">
    <img src="https://i.imgur.com/VzV3NwJ.jpg" alt="">

    <div class="text-left">
      <div>Business</div>
      <div class="dates">25 December 2019</div>
    </div>

    <div class="money">3500 <small>Taka</small></div>

  </div>
  <div class="flextable-content">
    <img src="https://i.imgur.com/VzV3NwJ.jpg" alt="">

    <div class="text-left">
      <div>Business</div>
      <div class="dates">25 December 2019</div>
    </div>

    <div class="money">3500 <small>Taka</small></div>

  </div>
  <div class="flextable-content">
    <img src="https://i.imgur.com/VzV3NwJ.jpg" alt="">

    <div class="text-left">
      <div>Business</div>
      <div class="dates">25 December 2019</div>
    </div>

    <div class="money">3500 <small>Taka</small></div>

  </div>

</div>
0 голосов
/ 26 декабря 2018

Добавьте width: 100% к вашим датам (используйте в качестве класса, а не id, идентификатор должен быть уникальным) Добавьте разделительный элемент div внизу.

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.header-area {
  margin: 50px auto;
  max-width: 800px;
}

.flextable-header {
  width: 100%;
  background: #f7f7f7;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  height: 45px;
}

.flextable-header span {
  width: 20%;
  text-align: center;
}

.flextable-header .amount {
  flex: auto;
  text-align: right;
  padding-right: 30px;
}

.flextable-content {
  height: 100px;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
}

.flextable-content div {
  width: 20%;
  text-align: center;
}

.text-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  font-size: 15px;
  height: 100%;
}

div.dates {
  text-align: left;
  display: inline-block;
  width: 100%;
}

.flextable-content .money {
  flex: auto;
  text-align: right;
  padding-right: 30px;
}

.flextable-content div img {
  width: 120px;
  height: 80px;
  border-radius: 5px;
  object-fit: cover;
  object-position: center;
}

.spacer{
  height: 1px;
  background-color: #e5e5e5;
  width: 78%;
  float: right;
  margin-right: 2%;
}
<div class="header-area">

  <div class="flextable-header">
    <span>Photos</span>
    <span>Date</span>
    <span class="amount">Amount</span>
  </div>

  <div class="flextable-content">
    <div><img src="https://i.imgur.com/VzV3NwJ.jpg" alt=""></div>

    <div class="text-left">
      <div>Business</div><br/>
      <div class="dates">25 December 2019</div>
    </div>

    <div class="money">3500 <small>Taka</small></div>

  </div>
  <div class="spacer"></div>

</div>

И чтобы дать отдых другим пользователям, вы также можете изменить структуру HTML и использовать границу в качестве разделителя

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.header-area {
  margin: 50px auto;
  max-width: 800px;
}

.flextable-header {
  width: 100%;
  background: #f7f7f7;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  height: 45px;
}

.flextable-header span {
  width: 20%;
  text-align: center;
}

.flextable-header .amount {
  flex: auto;
  text-align: right;
  padding-right: 30px;
}

.flextable-content {
  height: 100px;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
}

.img-container {
  flex-basis: 20%;
  flex-shrink: 0;
  flex-grow: 0;
  text-align: center;
}

.border-container{
  flex-basis: 78%;
  flex-shrink: 0;
  flex-grow: 0;
  display: flex;
  align-items: center;
  border-bottom: 1px solid #e5e5e5;
  margin-right: 2%;
  padding-bottom: 15px;
  height: 100%;
}

.text-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  font-size: 15px;
  height: 100%;
}

div.dates {
  text-align: left;
  display: inline-block;
  width: 100%;
}

.flextable-content .money {
  flex: auto;
  text-align: right;
  padding-right: 30px;
}

.flextable-content div img {
  width: 120px;
  height: 80px;
  border-radius: 5px;
  object-fit: cover;
  object-position: center;
}
<div class="header-area">

  <div class="flextable-header">
    <span>Photos</span>
    <span>Date</span>
    <span class="amount">Amount</span>
  </div>

  <div class="flextable-content">
    <div class="img-container"><img src="https://i.imgur.com/VzV3NwJ.jpg" alt=""></div>
    <div class="border-container">
      <div class="text-left">
        <div>Business</div><br/>
        <div class="dates">25 December 2019</div>
      </div>

      <div class="money">3500 <small>Taka</small></div>
    </div>
  </div>

</div>
...