Я пытаюсь создать приложение-календарь, в котором я добавляю события (кнопки) в календарь (таблицу). Однако я борюсь с коллизиями событий.
Моя структура данных для календаря выглядит следующим образом: это таблица с двумя строками (один заголовок, одно тело). Столбцы первой строки имеют идентификатор дня. Во второй строке указаны события этого дня.
Проблема : Если я добавляю несколько событий в ячейку второй строки и возникает коллизия, то события перекрываются. Я пытался обойти это с помощью flexbox. Это работает с двумя перекрывающимися тегами, но теперь размер неперекрывающихся тегов также изменяется !!! И если нет столкновения событий, я хочу, чтобы тег имел максимальную ширину.
Я помещаю визуальное представление проблемы здесь: См. Фото здесь
Я помещаю Полный (-i sh) код здесь на случай, если я не даю полную информацию ниже: https://codepen.io/samuel-solomon/pen/oNbKeRm
Вот моя проблема столкновения:
<td class="day_Block">
<div class="d-flex flexbox_Edits" id="M">
<button class="btn event_Button_Text event_Button event_Button_CS_2" style="height: 12rem; top: 0rem; background-color: rgb(83, 94, 235);">M8:00 - 12:00<br>CS 2<br></button>
<button class="btn event_Button_Text event_Button event_Button_CS_1" style="height: 21rem; top: 18rem; background-color: rgb(254, 44, 84);">M2:00 - 9:00<br>CS 1<br></button>
<button class="btn event_Button_Text event_Button event_Button_CS_1" style="height: 21rem; top: 18rem; background-color: rgb(19, 202, 145);">M2:00 - 9:00<br>CS 1<br></button>
</div>
</td>
Вот моя CSS:
.day_Block {
position: relative;
}
.flexbox_Edits {
top:0;
position:relative;
width:100%;
height: 42rem;
}
.event_Button {
border-width: 2px;
max-width: 100%;
border-radius: 8px;
border-style: inset solid solid;
align-items: flex-start;
align-self: stretch;
position: relative;
width: 100%;
float: left;
left: 0;
overflow: hidden;
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
}
.event_Button_Text {
word-wrap: break-word;
text-align: left;
float: left;
line-height: 1.25rem;
font-family: 'Montserrat';
font-weight: 550;
letter-spacing: 0.06rem;
display: inline-flex;
font-size: 0.8em !important;
}