vuejs+bs(4.3.1) tabs(頁籤)

bootstrap = 4.3.1(card) fontawesome = 4.7 vuejs = 2.6.12

by cactus77kiki

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
    
    <div id="vapp">
    <!--display: inline-block效果:外div寬度依據內div調整-->
        <div style="margin:20px;display: inline-block;min-width: 1000px;">
            <!--外框調整色系-->
            <!--<div class="card text-center border-primary mb-3 ">-->
            <div class="card text-center panel-info">
                <!--搭配css之註1:headerzone調整背景色系、字體色系-->
                <!--搭配css之註2:新增alert-info色系-->
                <div class="card-header alert-info panel-info-header">
                    <ul class="nav nav-tabs card-header-tabs">
                        <li class="nav-item">
                            <a v-on:click="activetab=1"
                                v-bind:class="[ activetab === 1 ? 'nav-link active' : 'nav-link' ]" href="#"
                                style="color: #337ab7;"><i class="fa fa-binoculars"></i> CheckList</a>
                        </li>
                        <li class="nav-item">
                            <a v-on:click="activetab=2"
                                v-bind:class="[ activetab === 2 ? 'nav-link active' : 'nav-link' ]" href="#"
                                style="color: #337ab7;"><i class="fa fa-bar-chart"></i> Rates</a>
                        </li>
                        <li class="nav-item">
                            <a v-on:click="activetab=3"
                                v-bind:class="[ activetab === 3 ? 'nav-link active' : 'nav-link' ]" href="#"
   ...

CSS

.panel .panel-heading .nav.nav-tabs {
            position: relative;
            bottom: -5px;
            height: 29px;
            border: none;
            margin-top: -9px;
            margin-left: -9px;
        }

        .panel .panel-heading .nav.nav-tabs li a {
            height: 35px;
            line-height: 17px;
            border: 1px solid transparent;
        }

        .card .card-header .nav.nav-tabs li a:not(.active):hover,
        .card .card-header .nav.nav-tabs li a:not(.active):focus {
            background: rgba(0, 0, 0, 0.05);
        }

        .card .card-header .nav.nav-tabs li.active a {
            border: 1px solid #407AB9;
            border-bottom-color: transparent !important;
            background: #FFF;
        }

        /*---自訂 s---*/
        /*註1:此部分(panel-info/primary/success/warning/danger)可以自訂色系;bs4.3.1與bs3.3.7又不同;*/
        /*註2:若要使用bs4.3.1預設設系,可以參考'alert'之色系,將此部分之自訂顏色要mark,並搭配異動html套用之css*/
        .panel-info {
            /*border-color: #C1E8F2 !important;*/
        }

        .panel-info-header {
            /*background-color: #d9edf7 !important;*/
        }

        /*---自訂 e---*/

        /* Colors */
        .card.panel-default .card-heading .nav.nav-tabs li a {
            color: #555;
        }

        .card.panel-default .card-heading .nav.nav-tabs li.active a {
            border-color: #DDDDDD;
        }

        .card.panel-primary .card-heading .nav.nav-tabs li a {
            color: #FFF;
        }

        .card.panel-primary .card-heading .nav.nav-tabs li.active a {
            color: #407AB9;
        }

        .card.panel-success .card-heading .nav.nav-tabs li a {
            color: #67B857;
        }

        .card.panel-success .card-heading .nav.nav-tabs li.active a {
            border-color: #D8E9C5;
        }

        .card.panel-warning .card-heading .nav.nav-tabs li a {
            color: #8a6d3b;
        }

        .card.panel-warning .card-heading .nav.nav-tabs li.active a {
           ...

JavaScript

/* ref: bs5官網(card)component
   bootstrap = 4.3.1  fontawesome = 4.7 vuejs = 2.6.12
   notes: bs5無panel元件了,且官網提供之card使用方式與bs3.7.7有差異,故css與bs3.7.7之版本有差異
*/
var appinstance = new Vue({
            el: '#vapp',
            data: {
                msg: 'test',
                activetab: 1,
            },
            computed: {

            },
            methods: {
                initialize() {
                    this.activetab = 2;
                }
            },
            created() {
                //this.initialize();
            }
        });