2012-08-28 16 views
5

Próbuję zrobić styl blockquote gdzie cytaty otwarcia i zamknięcia są większe niż tekst, ale nadal mieści się na swojej linii, coś w tym example http://s17.postimage.org/ypvv8xxtb/blockquote.pngblockquote cytaty styl

Jest to kod mam http://jsfiddle.net/EnL3R/2/

Otwarty cytat pokazuje powyższy tekst, a zarówno otwarte, jak i końcowe cytaty wprowadzają pewne marginesy, zdaję sobie sprawę, że dzieje się tak dlatego, że postać w samej czcionce ma tę białą przestrzeń, czy w ogóle mogę to zrekompensować?

+0

Więc w czym problem? – woz

+0

Edytowałem post, mam nadzieję, że teraz jest jasne –

+2

Pseudoelementy: before &: after wydaje się być lepszym podejściem: http://jsfiddle.net/EnL3R/12/ – LeBen

Odpowiedz

4

Modified padding, margin, display i position atrybuty, a teraz wydaje się być wyświetlany ok:

blockquote span { 
    font-size:100px; 
    color:black; 
    position: relative; 
    display:inline-block; 
    padding:0px; 
} 

blockquote span.primo { 
    margin: -40px 0 -100px 0; 
    bottom: -40px; 
} 

blockquote span.ultimo { 
    margin:-130px 0 0 0; 
    bottom:0px; 
} 

/* IE7 only styles */ 
blockquote span { 
    *display: inline; zoom: 1; /* IE7 fix for inline-block */ 
} 
blockquote span.primo { 
    *margin: -20px; *bottom: -20px; /* IE7 position adjustment */ 
} 
blockquote span.ultimo { 
    *margin: -50px; /* IE7 position adjustment */ 
} 

http://jsfiddle.net/EnL3R/26/ (że żółta obwódka wokół tagu span jest tylko do testowania)

+0

+1 - to rozwiązanie wygląda najłatwiej bez błądzenia z images + działa nawet w starszych przeglądarkach – Danield

3

Wygląda na to, że lepiej wykorzystać obrazy. Jeśli spróbujesz użyć tekstu do cudzysłowu, natkniesz się na fakt, że sam cudzysłów jest tylko niewielką częścią wysokości linii.

Możesz po prostu umieścić zdjęcia w swoich materiałach i użyć vertical-align, aby uzyskać właściwe pozycjonowanie. Jeśli nie potrzebujesz wsparcia dla IE 7 lub poniżej, możesz nawet umieścić je w CSS, w pseudoelementach :before i.

blockquote :first-child:before { 
    content: url('images/openquote.png'); 
    } 

blockquote :last-child:after { 
    content: url('images/closequote.png'); 
    vertical-align: -35px; /* tuned to fit image */ 
} 

Demo: http://jsfiddle.net/EnL3R/17/

+0

Jeśli używasz pseudo elementów do wyświetlenia cytatów, nie ma powodu, aby używać obrazów zamiast tekstu. Możesz ustawić pseudo elementy w dowolny sposób. Zmniejszyłoby to również liczbę żądań http. Lub przynajmniej użyj sprite'a css. – Gidgidonihah

+0

Prawda - Myślę, że po prostu nie lubię strojenia ujemnych marginesów, aby walczyć z dodatkowymi białymi znakami, tylko po to, aby korzystać bezpośrednio z cudzysłowów z czcionki. Wygląda na to, że masz bardzo specyficzny efekt wizualny, a obrazy wydają się bardziej odpowiednie pod względem koncepcyjnym niż użycie CSS do wyodrębniania i renderowania dwóch pojedynczych glifów z twojej czcionki w sposób wyraźnie oddzielony od otaczającego tekstu. – cloudfeet

+0

Punkt dotyczący żądań HTTP jest dobry - jeśli się o to martwisz, możesz użyć identyfikatorów URI "data:", aby uzyskać wszystko w jednym żądaniu, ponieważ obrazy będą niewielkie. – cloudfeet

0

Aktualizacja styl blockquote .. sprawdź poniżej kod do niego.

blockquote { 
    font-size: 18px; 
    padding:20px; 
    text-transform: uppercase; 
} 
blockquote:before { 
    top: 10px; 
    left: 20px; 
    content: "\201C"; 
} 
blockquote:after { 
    top:80px; 
    content: "\201D"; 
} 
blockquote:before, blockquote:after { 
    position: absolute; 
    width: 60px; 
    height: 60px; 
    font-size: 80px; 
    line-height: 1; 
    color: #dd7975; 
} 

check this link więcej zrozumienia .....