Ваша проблема связана с использованием `float` в CSS. Когда вы используете `float`, элементы, которые «плавают», выходят из нормального потока документа, что может приводить к тому, что родительские элементы не воспринимают их как свои дочерние элементы. В вашем случае, это объясняет, почему блок `.table_new_users` оказывается внутри блока `.MAIN_CONTENTS`, а не после него.
Вот несколько способов, как можно решить эту проблему:
### 1. Использование clearfix
Одним из самых распространенных решений для этой проблемы является использование clearfix для родительского элемента, чтобы он учитывал размеры своих «плавающих» дочерних элементов. Например, добавьте это CSS-правило к вашему классу `.MAIN_CONTENTS`:
```css
.MAIN_CONTENTS::after {
content: "";
clear: both;
display: table;
}
```
### 2. Использование Flexbox
Другой хороший подход — заменить `float` на `flexbox`. Это более современный способ организации макета и устранит проблемы с обтеканием. Измените CSS для `.MAIN_CONTENTS`:
```css
.MAIN_CONTENTS {
display: flex;
background-color: pink;
}
.main_content {
width: 80%;
padding: 10px;
background-color: blue;
}
.left_bar {
width: 20%;
border-radius: 5px;
margin-top: 15px;
}
```
### 3. Использование `overflow`
Вы также можете установить `overflow: hidden` или `overflow: auto` на `.MAIN_CONTENTS`. Это заставит родительский элемент обрабатывать размеры дочерних элементов, которые плавают:
```css
.MAIN_CONTENTS {
overflow: hidden; /* или overflow: auto; */
background-color: pink;
}
```
### Применение выбора
Наиболее предпочтительный способ — это использование Flexbox, так как он более эластичный и позволяет проще управлять макетом. Однако использование clearfix или `overflow` также решает вашу проблему.
Попробуйте один из этих подходов, и ваша разметка должна заработать так, как вы ожидаете!