2013-12-04 9 views
8

Sto provando a creare un Navbar con Bootstrap 3 che non comprima o avvolga il testo. Mi piacerebbe che il testo fosse semplicemente troncato (o ellissi) invece che a capo - quindi il Navbar rimane su una singola riga senza espansione verticale. (Questo Navbar verrà utilizzata per visualizzare la posizione vista corrente con un unico menu allineato a destra)Il modo migliore per creare Bootbar 3 Navbar senza avvolgere il testo (e non comprimere)

Qualcosa di simile a questo:

<div class="navbar navbar-fixed-top navbar-inverse"> 

    <div class="navbar-header pull-left"> 
     <p class="navbar-text" style="overflow: hidden; white-space: nowrap;"> 
      Trying to get this long line of text to not wrap even if too wide for the view to display. Trying to get this long line of text to not wrap even if too wide for the view to display. 
     </p> 
    </div> 

    <div class="navbar-header pull-right"> 
     <p class="navbar-text">Menu</p> 
    </div> 

</div> 

Come mostrato, ho ingannare con galleggiante CSS, troppo pieno, gli spazi bianchi impostazioni e non riesco a ottenere la giusta combinazione. Inoltre, sto usando due elementi di intestazione navbar per evitare il collasso, ma sono aperto ad altre opzioni se c'è un modo migliore.

Grazie per l'aiuto.

+0

Ho fatto qualcosa di simile due giorni fa. Vedi la mia risposta. – Christina

+3

Non si tratta di una supervisione principale di Bootstrap? –

+0

Correlati: [Mantieni gli elementi della barra di navigazione all'esterno della compressione] (http://stackoverflow.com/questions/18761633/bootstrap-3-keep-navbar-items-outside-the-collapse-without-wrapping-to-a-new- li), [Escludi la voce di menu dalla compressione] (http: // StackOverflow.it/questions/21037833/exclude-menu-item-from-the-collapse-of-bootstrap-3-navbar) –

risposta

4

http://jsbin.com/elezawA/1/

Ecco una versione fissa che Funziona alla grande: http://jsbin.com/elezawA/2

body { 
padding-top: 50px; 
} 

.overflow { 
    position:absolute; 
    top:0; 
    left:0; 
    display: block; 
    text-overflow: ellipsis; 
    white-space: nowrap; 
    overflow: hidden; 
    margin-top: 0; 
    color:#ccc; 
    max-width:90%; 
} 

    .overflow p {color:#ccc;line-height:50px;padding:0 10px;margin:0;display:inline;} 


<div class="navbar navbar-fixed-top navbar-inverse"> 

    <div class="navbar-header"> 
     <span class="overflow"> 
     <p> 
     Trying to get this long line of text to not wrap even if too wide for the view to display. Trying to get this long line of text to not wrap even if too wide for the view to display. 
     </p> 
    </span> 
    </div> 

    <div class="navbar-header pull-right"> 
     <p class="navbar-text">Menu</p> 
    </div> 

</div> 

Andando a dover armeggiare con la percentuale sulle larghezze più piccole per consentire l'area del menu. Fai una larghezza minima su questo e lo capirai. Magari aggiungi un po 'di padding per non coprirlo. Vedrò più tardi oggi o domani su questo.

+1

Grazie - questo funziona alla grande. L'ho creato in jsFiddle prima di vedere il tuo link jsBin http://jsfiddle.net/Ender2050/h27SD/1/. – Ender2050

+1

È quella posizione fissa che ti prenderà dal momento che non c'è larghezza effettiva su di esso poiché ignora la roba normale dei CSS. – Christina

+1

usa il secondo link, ha un padding più piccolo e una percentuale più grande. – Christina

0

Date un'occhiata alla proprietà CSS3 text-warp ->http://www.w3schools.com/cssref/css3_pr_text-wrap.asp

+1

Grazie, ma ho bisogno di una soluzione che funzioni nei browser moderni - e come quella pagina menziona, "Il testo- la proprietà wrap non è supportata in nessuno dei principali browser. " – Ender2050

1

Rimuovere .navbar-text CSS inline, e utilizzare white-space: normal:

enter image description here

<div class="navbar navbar-fixed-top navbar-inverse"> 

    <div class="navbar-header pull-left"> 
     <p class="navbar-text"> 
      Trying to get this long line of text to not wrap even if too wide for the view to display. Trying to get this long line of text to not wrap even if too wide for the view to display. 
     </p> 
    </div> 

    <div class="navbar-header pull-right"> 
     <p class="navbar-text">Menu</p> 
    </div> 

</div> 
.navbar-text { 
    margin-right: 15px; 
    margin-left: 15px; 
    white-space: normal 
} 

Bootply

+0

Grazie - ma sto cercando di far sì che il testo NON si sposti come hai mostrato - quindi appare tutto su un Navbar a una riga. – Ender2050

2

Se si consente javascript/jquery; aggiungi anche l'intestazione di overflow al tuo .pull-left div; <div class="navbar-header pull-left" style="overflow: hidden;">

e utilizzare questo:

$(function() { 
    $('.pull-left').css('max-width', ($(window).width() - $('.pull-right').width()) + 'px'); 
}); 

See: http://bootply.com/98610 nota che si dovrà fare il ricalcolo sui cambiamenti dimensioni dello schermo utilizzando questa soluzione.

Se si potesse dare la vostra destra nav una larghezza fissa e consentire CCS3 necessario si può fare lo stesso con:

.pull-left 
{ 
/* Firefox */ 
max-width: -moz-calc(100% - 60px); 
/* WebKit */ 
max-width: -webkit-calc(100% - 60px); 
/* Opera */ 
max-width: -o-calc(100% - 60px); 
/* Standard */ 
max-width: calc(100% - 60px); 
} 
.pull-right{width:60px;} 

vedi anche: https://stackoverflow.com/a/14101451/1596547

Problemi correlati