У меня есть этот макет:
По сути, я хочу добавить несколько вложенных столбцов внутри этих вкладок.
Что я пробовал:
Проблема в том, что столбцы внутри этих конкретных вкладок перекрываются, между ними нет отступов.
Что я делаю неправильно?
Вот jsfiddle
Спасибо!
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<link href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel = "stylesheet"/>
<div class = "row">
<div class = "fruits col-md-8">
<nav>
<div class = "nav nav-tabs" id = "nav-tab" role = "tablist">
<a class = "nav-item nav-link active" id = "nav-home-tab" data-toggle = "tab" href = "#nav-content1" role = "tab" aria-controls = "nav-content1" aria-selected = "true">Content 1</a>
<a class = "nav-item nav-link" id = "nav-content2-tab" data-toggle = "tab" href = "#nav-content2" role = "tab" aria-controls = "nav-content2" aria-selected = "false">Content 2</a>
</div>
</nav>
<div class = "tab-content" id = "nav-tabContent">
<div class = "tab-pane fade show active" id = "nav-content1" role = "tabpanel" aria-labelledby = "nav-content1-tab">
<div class = "row">
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
</div>
<div class = "tab-pane fade" id = "nav-content2" role = "tabpanel" aria-labelledby = "nav-content2-tab">...</div>
</div>
</div>
</div>
<div class = "fruits-news col-md-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class = "btn btn-secondary" href = "#" role = "button">View details »</a></p>
</div>
</div>
<hr>





Колонки работают как положено. Однако содержимое столбцов (очень длинные слова) не нарушается и, следовательно, переполняет столбцы. Использовать:
p {
overflow-wrap: break-word;
}
https://codeply.com/go/5Bi5s4n5DS
Примечание. Панель 2-й вкладки также находится внутри панели 1-й вкладки в вашей разметке, поэтому 2-я вкладка не работает.
В Bootstrap нет полей для столбцов, поэтому лучше работать с отступами, которые у них есть. Вы можете поместить границу на элемент, который находится внутри ваших столбцов, и вы увидите расстояние между ними, и оттуда вы можете добавить отступ к этому внутреннему элементу (в данном случае теги p).
Также есть добавление word-wrap: break-word, если вы хотите, чтобы ваши длинные строки текста переносились.
.row {
background: #f8f9fa;
margin-top: 20px;
}
.col-md-4 p {
border: solid 1px #6c757d;
padding: 10px;
word-wrap: break-word;
}<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<div class = "container">
<div class = "row">
<div class = "fruits col-md-8">
<nav>
<div class = "nav nav-tabs" id = "nav-tab" role = "tablist">
<a class = "nav-item nav-link active" id = "nav-home-tab" data-toggle = "tab" href = "#nav-content1" role = "tab" aria-controls = "nav-content1" aria-selected = "true">Content 1</a>
<a class = "nav-item nav-link" id = "nav-content2-tab" data-toggle = "tab" href = "#nav-content2" role = "tab" aria-controls = "nav-content2" aria-selected = "false">Content 2</a>
</div>
</nav>
<div class = "tab-content" id = "nav-tabContent">
<div class = "tab-pane fade show active" id = "nav-content1" role = "tabpanel" aria-labelledby = "nav-content1-tab">
<div class = "row">
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
</div>
<div class = "tab-pane fade" id = "nav-content2" role = "tabpanel" aria-labelledby = "nav-content2-tab">...</div>
</div>
</div>
</div>
<div class = "fruits-news col-md-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class = "btn btn-secondary" href = "#" role = "button">View details »</a></p>
</div>
</div>
<hr>
</div>
<!-- /container -->В bootstrap4 вам не нужно устанавливать класс как col-md-(number), просто col-md
Просто замените это:
HTML:
<div class = "row">
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
<div class = "col-md-4">
<p>asdlaklsdlkasdlksadkldsakldsaklsda</p>
</div>
</div>
К
HTML:
<div class = "container">
<div class = "row">
<div class = "col-sm">
One of three columns
</div>
<div class = "col-sm">
One of three columns
</div>
<div class = "col-sm">
One of three columns
</div>
</div>
</div>
Jsfiddle: Здесь
Столбцы не пересекаются. Эти слова длиннее столбцов. Вам нужно сломать их.