Проблема, с которой вы сталкиваетесь, заключается в том, что видимая граница на самом деле применяется не к tr
, а к td
в таблице.
Так что вам нужно отредактировать свой CSS вместо цели td
внутри строк.
.with-top-border > td {
border-top: 2px solid black !important;
}
new Vue({
el: '#app',
data() {
return {
fields: [
'age',
'first_name',
'last_name',
{ key: 'active', tdClass: 'border border-primary' }
],
items: [
{ age: 40, first_name: 'Dickerson', last_name: 'Macdonald', active: false },
{ age: 21, first_name: 'Larsen', last_name: 'Shaw', active: false },
{ age: 89, first_name: 'Geneva', last_name: 'Wilson', active: true },
{ age: 38, first_name: 'Jami', last_name: 'Carney', active: false },
{ age: 40, first_name: 'Dickerson', last_name: 'Macdonald', active: true },
{ age: 21, first_name: 'Larsen', last_name: 'Shaw', active: true },
{ age: 89, first_name: 'Geneva', last_name: 'Wilson', active: true },
{ age: 38, first_name: 'Jami', last_name: 'Carney', active: false }
]
}
},
methods: {
setTbodyTrClass(item) {
const classes = [];
if(item.active) classes.push('custom-border');
return classes;
}
}
})
.custom-border > td {
border-top: 3px solid green !important;
}
<link href="https://unpkg.com/bootstrap@4.4.1/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://unpkg.com/bootstrap-vue@2.13.0/dist/bootstrap-vue.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@2.13.0/dist/bootstrap-vue.js"></script>
<div id="app">
<b-table :items="items" :tbody-tr-class="setTbodyTrClass"></b-table>
</div>