2016-03-29 5 views
0

Wie erstellt man eine Funktionalität eines Dropdown-Menüs, das eine kleine Beschreibung in Sideway-Spalte hat, wenn man über einen Link schwebt? Kann es durch reines CSS erreicht werden?Seitenbeschreibung bei Hover im Dropdown-Menü in Bootstrap

http://codepen.io/anon/pen/aNyORv

<nav class="navbar navbar-default" role="navigation"> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 
     <span class="sr-only">Toggle navigation</span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     </button> 
    </div> 
    <!--/.navbar-header--> 

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
     <ul class="nav navbar-nav"> 

      <li class="dropdown"> 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown">Two Column <b class="caret"></b></a> 
       <ul class="dropdown-menu multi-column columns-2"> 
        <div class="row"> 
         <div class="col-sm-6"> 
          <ul class="multi-column-dropdown"> 
           <li><a href="#">title 1</a></li> 
           <li><a href="#">title 2</a></li> 
          </ul> 
         </div> 
         <div class="col-sm-6"> 
          <ul class="multi-column-dropdown"> 
           <li>This is visible by default or when hovering over Title 1</li> 
           <li>This is hidden but visible when hovering over Title 2</li> 
          </ul> 
         </div> 
        </div> 
       </ul> 
      </li> 
     </ul> 
    </div> 
    <!--/.navbar-collapse--> 
</nav> 
<!--/.navbar--> 

Antwort

1

Die Funktionalität, die Sie nach sind in der Regel mit Bootstrap Tooltip oder Bootstrap Popover vorgesehen ist. Beide sind vollständig style -fähig und anpassbar. Außerdem sind sie mobilfreundlich (siehe Randnummer (n) am Ende der Antwort).

Alternativ können Sie so etwas verwenden. Bitte beachten Sie die min-height Ihrer .columns-2>.col-xs-6 auf einen Wert groß genug, um neu einstellen müssen, die Beschreibungen ohne Scrollbar zu passen (wenn eine der Beschreibungen groß genug ist, um es zu brauchen):

.dropdown-menu.columns-2 { 
 
\t min-width: 400px; 
 
} 
 
.dropdown-menu li a { 
 
\t padding: 5px 15px; 
 
\t font-weight: 300; 
 
} 
 
.multi-column-dropdown { 
 
\t list-style: none; 
 
    margin: 0px; 
 
    padding: 0px; 
 
} 
 
.multi-column-dropdown li a { 
 
\t display: block; 
 
\t clear: both; 
 
\t line-height: 1.428571429; 
 
\t color: #333; 
 
\t white-space: normal; 
 
} 
 
    
 

 
.multi-column-dropdown .columns-2 { 
 
    position: relative; 
 
} 
 
.multi-column-dropdown li a { 
 
    width: 100%; 
 
    height: 100%; 
 
    padding: 7px 15px; 
 
} 
 
.columns-2>.col-xs-6 { 
 
    /* adjust this to accomodate the height of your descriptions on all screens */ 
 
    min-height: 100px; 
 
    
 
} 
 
.multi-column-dropdown li:first-child .li-description { 
 
    display: inline-block; 
 
} 
 
.multi-column-dropdown li .li-description { 
 
    display: none; 
 
    position: absolute; 
 
    width: 100%; 
 
    left: 100%; 
 
    top: 0; 
 
    padding: 7px 15px; 
 
    background-color: #FBFBFB; 
 
} 
 
.multi-column-dropdown li:hover .li-description { 
 
    display: inline-block; 
 
} 
 
@media(min-width: 768px) { 
 
    .multi-column-dropdown li .li-description { 
 
    background-color: white; 
 
    } 
 
    .columns-2>.col-xs-6 { 
 
    /* adjust this to accomodate the height of your descriptions on all screens */ 
 
    min-height: 160px; 
 
    } 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css" rel="stylesheet"/> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> 
 

 
<nav class="navbar navbar-default" role="navigation"> 
 
    <div class="navbar-header"> 
 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 
 
     <span class="sr-only">Toggle navigation</span> 
 
     <span class="icon-bar"></span> 
 
     <span class="icon-bar"></span> 
 
     <span class="icon-bar"></span> 
 
     </button> 
 
    </div> 
 
    <!--/.navbar-header--> 
 

 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
 
     <ul class="nav navbar-nav"> 
 

 
      <li class="dropdown"> 
 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown">Two Column <b class="caret"></b></a> 
 
       <ul class="dropdown-menu multi-column columns-2"> 
 
        
 
         <div class="col-xs-6"> 
 
          <ul class="multi-column-dropdown"> 
 
           <li><a href="#">title 1</a><div class="li-description">This is visible by default or when hovering over Title 1</div></li> 
 
           <li><a href="#">title 2</a><div class="li-description">This is hidden but visible when hovering over Title 2. It is a longer description and we need <code>min-height</code> on <code>.columns-2>.col-xs-6</code> so it doesn't create a scrollbar...</div></li> 
 
          </ul> 
 
         </div> 
 
         <div class="col-xs-6">&nbsp;</div> 
 
         
 
        
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </div> 
 
    <!--/.navbar-collapse--> 
 
</nav> 
 
<!--/.navbar-->

Seitennotizen auf Ihrem Codepen:

  • Sie laden zwei Versionen von jQuery. Das ist eine große NO NO.
  • Sie sollen .row innerhalb eines Elternteils mit margin: 0 15px;, wie .container verwenden. Dies erzeugt eine unerwünschte horizontale Bildlaufleiste in Ihrer Zeile. Achten Sie auf das Markup von Bootstrap.

Nebenbei bemerkt auf dem UI-Architektur:

  • Mehr als die Hälfte des Internet der heutigen Benutzer sind von einem Touch-Gerät. Wie sollen sie hover und sehen Sie die Beschreibung?
+0

Vielen Dank, ich werde den Code erkunden. Ich wusste, Bootstrap hat Code für Tooltips, aber ich hätte nie gedacht, dass es in diesem Beispiel nützlich sein könnte. Für mobile Benutzer ist diese Beschreibung nur für Desktop-Benutzer erforderlich, ich werde versuchen, sie auf anderen Bildschirmen zu verbergen – Marko

Verwandte Themen