Создание столбцов из пролетов

Я получаю {patients} и помещаю его в div:

<div className = "patients">
   {patients}
</div>

Он содержит Имя и Фамилия, каждая строка в двух диапазонах:

Создание столбцов из пролетов (Инструменты разработки)

Создание столбцов из пролетов (Текущее состояние)

Как стилизовать эти интервалы в столбцах (подобных таблице)?

Создание столбцов из пролетов (ожидаемый результат)

---РЕДАКТИРОВАТЬ---

Содержание {patients} меняется. Это результат поиска, поэтому приходят разные имена, иногда больше, иногда меньше. Я не могу применить стиль к ним отдельно. См. код.

что ты пробовал? дисплей, поплавок даже положение может сделать это.

G-Cyrillus 27.05.2019 16:56
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
1
26
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать display с table/table-row/table-cell или использовать display block с исправлением или сделать каждую строку flexbox с фиксированной шириной или какое-то другое решение. Есть много способов добиться этого.

Интересно, но мне нужно одно полное решение :) Добавлен атрибут display: table-row; в класс patients, и само по себе это ничего не меняет.

Andy Vincent 27.05.2019 17:12
    <div class = "patients">
      <div class = "patient">
        <span>Eric</span>
        <span>Car</span>
         <span>Car</span>
      </div>
      <div class = "patient">
        <span>Eric</span>
        <span>Car</span>
         <span>Car</span>
      </div>
      <div class = "patient">
        <span>Eric</span>
        <span>Car</span>
         <span>Car</span>
      </div>
      <div class = "patient">
        <span>Eric</span>
        <span>Car</span>
         <span>Car</span>
      </div>
    </div>

CSS
----

.patients {
  border: 1px solid black;
  display: table;
  width: 100%;
  border-bottom: none;
}

.patient {
  display: table-row;
}

.patient > span {
  display: table-cell;
  border-bottom: 1px solid black;
}

пожалуйста, дайте мне знать, работает ли приведенный выше фрагмент кода нормально для вас?

yaswanth 27.05.2019 17:12

Спасибо, к сожалению, я получаю {patients}, который имеет динамический контент, это могут быть разные имена, иногда больше, иногда меньше.

Andy Vincent 27.05.2019 17:16

вы можете написать пациентам.карта (пациент => вернуться ())

yaswanth 27.05.2019 17:19

В операторе return вы можете вернуть вышеуказанную разметку

yaswanth 27.05.2019 17:19

Где написать patients.map(patient => return ())? Может быть, если бы вы могли обновить ответ, я бы увидел все это там.

Andy Vincent 27.05.2019 17:24

Используете ли вы какой-либо libray, такой как react js, или вы пытаетесь сделать это в простом javascript?

yaswanth 27.05.2019 17:28

Реагируйте, это было то, что у меня было раньше: render () { let patients = this.props.patients.map((p) => { return <PatientListItem key = {p.globalId} patient = {p} selected = {p.globalId === this.props.selected} onClick = {(e) => this.props.selectPatient(p)}/> }); return (

Andy Vincent 27.05.2019 17:31

Так что у меня есть (p) вместо patient, которое вы предлагаете. Я попробую это.

Andy Vincent 27.05.2019 17:36

<div className = "patients"> this.props.patients.map(patient => { return ( <div className = "patient" key = {patient.globalId}> <span>{patient.name}</span> < span>{patient.surName}</span> </div> }) </div>

yaswanth 27.05.2019 18:06

В конце концов, вместо того, чтобы создавать patient в коде React, я выбрал его с помощью .patients > * { . Спасибо за вашу приверженность!

Andy Vincent 27.05.2019 19:59

Извините, пропустил это :)

Andy Vincent 27.05.2019 23:19
Ответ принят как подходящий

Flexbox идеально подходит для такого макета. Создайте макет flexbox в каждой строке, указав обертку .patientdisplay: flex;:

.patient {
  display: flex;
  justify-content: space-between;
}

Правило justify-content: space-between помещает промежутки на левый и правый края доступного пространства, одна из моих любимых вещей, которые может делать flexbox.

.patients {
  border: 1px solid black;
  max-width: 250px;
}
.patient {
  display: flex;
  justify-content: space-between;
  border-top: 1px solid black;
}
.patient span {
  padding: 0 20px; // gives a little space around each span
}
.patient:first-child {
  border-top: none;
}
<div class = "patients">
   <div class = "patient">
    <span>Eri</span>
    <span>Car</span>
   </div>
   <div class = "patient">
    <span>Dude</span>
    <span>Ok</span>
   </div>
   <div class = "patient">
    <span>Nice</span>
    <span>One</span>
   </div>
</div>

Другие вопросы по теме