web-dev-qa-db-fra.com

Comment créer un panneau à onglets dans Bootstrap

Quelle classe dois-je utiliser pour les onglets? Est-ce qu'il y a un?

je fais ce qui suit et a l'air mauvais :-( 

Une navigation par onglets + un panneau avec et 0 remplissage entre eux-

    <div id="dashboardheader" class="container" style="padding-top: 20px;">
        <ul class="nav  nav-tabs tab-pane">
            <li class="active"><a href="#">Dashboard</a></li>
        </ul>
    </div>

    <div id="dashboardpanel " style="padding-top: 0px">
        <div class="panel panel-primary container" style="padding-top: 30px;">
            <div class="row">
                <div class="col-md-offset-2 col-md-8 col-md-offset-2">
                    <div class="row">
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" onclick="OpenDialog()" />
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" />
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" />
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" />
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-2 col-md-8 col-md-offset-2">
                    <div class="row">
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" />
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" />
                        <img src="..\..\Content/Images/Dashboard/fgh.png" class="btn  btn-lg" role="button" />
                    </div>
                </div>
            </div>
        </div>
    </div>

quel est l'alternatif?

15
user3801502

Je pense que ce que vous voulez, c'est juste le bootstrap tabs normal

<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
  <li class="active"><a href="#home" role="tab" data-toggle="tab">Home</a></li>
  <li><a href="#profile" role="tab" data-toggle="tab">Profile</a></li>
  <li><a href="#messages" role="tab" data-toggle="tab">Messages</a></li>
  <li><a href="#settings" role="tab" data-toggle="tab">Settings</a></li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
  <div class="tab-pane active" id="home">...</div>
  <div class="tab-pane" id="profile">...</div>
  <div class="tab-pane" id="messages">...</div>
  <div class="tab-pane" id="settings">...</div>
</div>

_ { Démo dans jsFiddle

Avec un peu de style, vous pouvez obtenir ce que vous voulez:

screenshot


Pour la V4, vous voudrez styler avec la classe .nav-tabs class et appeler également le plugin JavaScript

64
KyleMit

Voici quelques astuces simples que vous pouvez ajouter et qui vous permettent d'inclure .nav.nav-tabs dans un .panel .panel-heading 

Un exemple codepen: http://codepen.io/anon/pen/utGaK

À mon humble avis, il ne semble pas aussi "propre" que les composants sont utilisés indépendamment sans styles supplémentaires .. 

Je l'ai également testé avec .panel-title en utilisant .pull-right sur le .nav. Pendant que cela fonctionnait, je trouvais préférable d’ajouter .clearfix à l’en-tête car les onglets sont 1/2px too tall ATM. Devrait être simple à résoudre. 

Voici le code que j'utilise dans l'exemple ci-dessus.

Par exemple : 

<div class="panel panel-default">
    <div class="panel-heading">
        <!-- Nav tabs -->
        <ul class="nav nav-tabs" role="tablist">
            <li class="active"><a href="#home" role="tab" data-toggle="tab">Home</a></li>
            <li><a href="#profile" role="tab" data-toggle="tab">Profile</a></li>
            <li><a href="#messages" role="tab" data-toggle="tab">Messages</a></li>
            <li><a href="#settings" role="tab" data-toggle="tab">Settings</a></li>
        </ul>

    </div>

    <!-- Tab panes + Panel body -->
    <div class="panel-body tab-content">
        <div class="tab-pane active" id="home">HOME</div>
        <div class="tab-pane" id="profile">PROFILE</div>
        <div class="tab-pane" id="messages">MESSAGES</div>
        <div class="tab-pane" id="settings">SET</div>
    </div>
</div>

C'est le moins:

// Need to compensatve for padding in panel-heading
// Must be a way to invert this
// variable - @panel-heading-padding.  
@panel-heading-padding-negate: -10px -15px;

.panel {
    .panel-heading {
        .nav-tabs {
            margin:@panel-heading-padding-negate;
            border-bottom-width:0;

            > li {
                > a {
                    // re-apply the original padding 
                    padding:@panel-heading-padding;
                    margin-bottom:1px;

                    border:solid 0 transparent;
                    &:hover {
                        border-color: transparent;
                    }


                }

                &.active > a {
                    &, 
                    &:hover,
                    &:focused {
                        border:solid 0 transparent;                         
                    }
                }
            }
        }
    }
}

METTRE À JOUR

J'ai ajouté ce qui suit à la définition li et supprimé le margin-right & border-radius du > li > a afin que, lorsque je tire le nav situé à droite de l'en-tête, il soit plus net et plus propre.

            &:first-child > a { 
                border-top-left-radius:@panel-border-radius;
            }
            &:last-child > a {
                border-top-right-radius:@panel-border-radius;
            }

Voici un codepen mis à jour: http://codepen.io/anon/pen/hJsEC

6
Andrew Scott

Un extrait de Bootsnipp fait ceci: http://bootsnipp.com/snippets/MaA0A

Il contient du CSS pour permettre l'incorporation d'onglets dans l'en-tête du panneau comme ceci:

<div class="panel with-nav-tabs panel-default">
    <div class="panel-heading">
        <ul class="nav nav-tabs">
            <!--...-->
        </ul>
    </div>
    <div class="panel-body">
        <div class="tab-content">
            <!--...-->
        </div>
    </div>
</div>

Résultat:

 tabbed panel example

3
Tereza Tomcova

Nous avons trouvé une solution de style simple basée sur la structure html d'Andrew Scott:

.panel-heading>.nav-tabs {
    border-bottom: none;
    margin-bottom: -10px;
}
2
user1633272

  <ul  class="nav nav-tabs  ">
      <li class="active" > <a href="#One" data-target="#One" data-toggle="tab"> One </a>  </li>
      <li  ><a  href="#Two" data-target="#Two" data-toggle="tab"> Two </a> <li>  
    </ul> 
  <div class="tab-content clearfix">
    <div class="tab-pane fade in active" id="One">
    This is one 
    </div>
    <div class="tab-pane fade  " id="Two">
    This is Two 
    </div>
  </div> 

0
Ajay Rathore