2015-02-22 9 views
5

Niedawno uaktualniłem swój projekt z Bootstrap 3.2.x do 3.3.2 (ostatnie wydanie) i odkryłem ważną różnicę z elementem Media Object.Media-List i Text-Overflow w Bootstrap 3.3.2

chcę użyć w mediach-działu specjalnego mniej wstawek .text-przelewem(), aby dodać następujący atrybut CSS tytułem:

.media-heading { 
    overflow: hidden; 
    text-overflow: ellipsis; 
    white-space: nowrap; 
} 

który działa dobrze (bardzo dobrze) w Bootstrap 3.2 , można go zobaczyć na poniższym plnkr: Media-List in 3.2

Ale ponieważ 3.3.x nie mogę używać wielokropek i text-overflow wewnątrz nagłówka: Media-List in 3.3.2

Możesz porównać obrazek poniżej: View in Bootstrap 3.2.0 View in Boostrap 3.3.2 Jak zatem zachować to samo zachowanie, które opisuję przy pomocy Bootstrap 3.2 w Bootstrap 3.3.x? (Jest to bardzo przydatne na przykład dla użytkowników mobilnych).

Więcej informacji: Modyfikacja układu w obiekcie medialnym został wprowadzony w 3.3.0 i issue was opened (and closed) about this modification i miał reperkusje dla wielu użytkowników. Rozwiązaniem było ustawienie rozmiaru obiektu multimedialnego (media, media-body) na 10000px.

+0

sam problem dla mnie. 1000px to brudny hack, naprawiłeś problem? – Julien

+0

Nie, musimy dodać trochę css, aby odzyskać zachowanie wersji 3.2. Możesz znaleźć problem otwarty w projekcie bootstrap github: https: // github.com/twbs/bootstrap/issues/15958 –

+0

JavaScript nie jest świetnym rozwiązaniem, ale może pomóc w przepełnieniu tekstu. [jQuery.dotdotdot] (http://dotdotdot.frebsite.nl/) działa wspaniale, a nawet pozwala na wielokreskową elipsę. –

Odpowiedz

2

Wygląda na to, że przyczyną problemu jest display: table-cell; w poniższej regule. Zastąpienie go powinno rozwiązać problem.

.media-left, .media-right, .media-body { 
    display: table-cell; /* Here is the issue */ 
    vertical-align: top; 
} 

Dodawanie poniżej fragment wydaje się przywrócić działanie 3.2, ale kto wie, że inne problemy może to stworzyć z kodem 3.3.1 ...

.media-left, .media-right, .media-body { 
    display: block; 
} 

Również nie robi działa z najnowszą wersją (obecnie 3.3.2), ponieważ szerokość .media-body z jakiegoś powodu jest ustawiona na 10000px ... Zmiana na width: auto plus powyższa zmiana sprawiają, że działa ona w wersji 3.3.2. Ale znowu nie mam pojęcia, jakie inne problemy mogą to powodować.

.media-body { 
    width: 10000px; 
} 
+1

Dokonując tej modyfikacji, myślę, że "cofamy się" do CSS wersji 3.2.x. Jeśli nie znajdziesz innego rozwiązania, otworzę nowy numer na ich github ... Dzięki za odpowiedź –

+0

Witaj przy pomocy @KevinDavin udało Ci się rozwiązać ten problem? –

+0

Tak, tylko przez powrót do właściwości Bootstrap 3.2.X. Sprawdź to w moim projekcie github: https://github.com/davinkevin/Podcast-Server/blob/master/src/main/resources/static/app/less/bootstrap-adaptation.less –

0

miałem ten sam problem i rozwiązał ten problem w ten sposób:

.media-heading, 
.media-body > p, 
.media-body > span { 
    word-break: break-word; 
} 
+0

Myślę, że masz na myśli słowo - ** wrap **: break-word? To rozwiązuje mój problem, ale OP poprosił o 'text-overflow: ellipsis', którego nie można osiągnąć w połączeniu z tym. –

0

Po MDO postanowił NOT naprawić ten błąd w v3 * jest tu moja praca arround:

.media-heading, .media-body > p, .media-body > span { 
    word-break: break-all; 
} 

Działa dla 92.19% z globalnie używanych przeglądarek.

1

Mam rozwiązać ten problem przez dodanie kolejnego pojemnika wewnątrz .media-ciała

.media-body{ 
    width: 10000px; 
    position: relative; //media body width overflow fix 
} 
//media body width overflow fix 
.media-body__width-fix { 
    position: absolute; 
    left:0; 
    right:0; 
    top:0; 
    bottom:0; 
} 

Używany tak:

<div class="media-body"> 
    <div class="media-body__width-fix"> 
     <div class="your-ellipsis-overflow-class">your too long text</div> 
    </div> 
</div> 
+0

To podejście nie działa, jeśli wysokość treści w ciele mediów jest różna. –