Как исправить отображение border-bottom в таблице с overflow-x: auto?
Делаю таблицу на flexbox, столкнулся с проблемой отображения бордера.
Vue.config.devtools = false
Vue.config.productionTip = false
const vm = new Vue({
el: "#table"
})
.table {
display: flex;
flex-flow: column nowrap;
overflow-x: auto;
}
.row {
width: 100%;
display: flex;
flex-flow: row nowrap;
align-items: flex-start;
border-bottom: 1px solid #d0d0d0;
}
.column {
flex: 1 0 150px;
max-width: 150px;
}
.cell {
padding: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div class="table" id="table">
<div class="row" v-for="row in 3">
<div class="column" v-for="column in 10">
<div class="cell">
Row: {{ row }} <br>
Column {{ column }}
</div>
</div>
</div>
</div>
Ответы (1 шт):
Автор решения: frozencoast
→ Ссылка
Заменяем flex на inline-flex и вуаля:
Vue.config.devtools = false
Vue.config.productionTip = false
const vm = new Vue({
el: "#table"
})
.table {
/* display: flex;
Использование inline-flex предотвращает выход
дочерних элементов за рамки родителя */
display: inline-flex;
flex-flow: column nowrap;
overflow-x: auto;
}
.row {
width: 100%;
/* display: flex;
И снова спасает inline-flex */
display: inline-flex;
flex-flow: row nowrap;
align-items: flex-start;
border-bottom: 1px solid #d0d0d0;
}
.column {
/* flex: 1 0 150px;
max-width: 150px;
Используем конкретную ширину для корректного
расчета ширины родительского контейнера
можно комбинировать max-width и min-width */
width: 150px;
}
.cell {
padding: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div class="table" id="table">
<div class="row" v-for="row in 3">
<div class="column" v-for="column in 10">
<div class="cell">
Row: {{ row }} <br>
Column {{ column }}
</div>
</div>
</div>
</div>
