2013-07-26 22 views
34

Chcę zastosować niestandardowy styl CSS do tytułu i zawartości popover w Bootstrap, jednak wydaje mi się, że mój CSS jest ignorowany.Zastosuj CSS do popover w Bootstrapie

Jak zastosować specyficzny styl CSS odpowiednio do tytułu i treści?

$("#poplink").popover({ 
 
    html: true, 
 
    placement: "right", 
 
    trigger: "hover", 
 
    title: function() { 
 
     return $(".pop-title").html(); 
 
    }, 
 
    content: function() { 
 
     return $(".pop-content").html(); 
 
    } 
 
});
html, body { 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.pop-div { 
 
    font-size: 13px; 
 
    margin-top: 100px; 
 
} 
 
.pop-title { 
 
    display: none; 
 
    color: blue; 
 
    font-size: 15px; 
 
} 
 
.pop-content { 
 
    display: none; 
 
    color: red; 
 
    font-size: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="pop-div"> 
 
    <a id="poplink" href="javascript:void(0);">Pop</a> 
 
    <div class="pop-title">Title here</div> 
 
    <div class="pop-content">Content here</div> 
 
</div>

Na przykład: http://jsfiddle.net/Mx4Ez/

Odpowiedz

55

Przyczyną wydaje się być to, że JavaScript jest tworzenie zupełnie nowych elementów do wyświetlenia samego popover. Te nowe elementy mają różne nazwy klas css niż oryginały.

warto dodać to do Twojego CSS:

.popover-title { 
    color: blue; 
    font-size: 15px; 
} 
.popover-content { 
    color: red; 
    font-size: 10px; 
} 

Aktualizacja

zależności od wersji biblioteki używasz, nazwy mogą być różne. Jeśli powyższe nie działa, spróbuj zamiast tego użyć .popover-header i .popover-body.

+5

Jakikolwiek sposób zastosować go tylko do określonego 'popover'? Miałem nadzieję na coś w rodzaju: '.popover ({templateCss: {...}})'. – Domi

+2

Jeden dobry sposób to zrobić z arkuszami stylów. Osobiście unikam próby ustawiania stylów za pomocą javascript, aby uniknąć wielokrotnego wywoływania funkcji .popover (..). Oto skrzypce, w jaki sposób bym to zrobił: http://jsfiddle.net/n8e92k4n/11/ –

+0

Używam Angular. Więc jeśli popover miał opcję 'css' (lub jeszcze lepiej, opcję' class'), [Angular Bootstrap UI] (http://angular-ui.github.io/bootstrap/#/popover) pozwoliłoby na zrobienie dostosowania w szablonie kątowym. JS nie byłby wzruszony :) – Domi

5

Nowo utworzone elementy mają następującą hierarchię:

.popover 
    |_ .popover-title 
    |_ .popover-content 

który jest wtryskiwany po elemencie, który wyzwala popover (można określić konkretny pojemnik do zatłoczonego popover poprzez ustawienie opcji container, w którym to przypadku style zostaną ustawione przy użyciu elementu przekazanego jako kontener). Tak tytułować się popover można użyć CSS, jak w poniższym przykładzie:

<div id="my-container"> 
    <a href="#" id="popover-trigger">Popover This!</a> 
</div> 

<style> 
    .popover-title { color: green; } /* default title color for all popovers */ 

    #my-container .popover-title { color: red; } /* specific popover title color */ 
</style> 
3

Jeśli masz wiele popovers na stronie i tylko chcą projektować jednego z nich można wykorzystać popover za template opcję, aby dodać kolejną klasę:

$("#myElement").popover({ 
    template: '<div class="popover my-specific-popover" role="tooltip">...' 
}); 

zacząłem używając tylko wartość domyślną dla template z docs i dodał my-specific-popover do atrybutu klasy.

Powiązane problemy