2013-12-16 12 views
9

Czy można zapobiec nakładaniu się tekstu w tym samym elemencie (na przykład na h1)? Proszę zobaczyć przesadny przykładowy obraz poniżej - w moim przypadku użycia chciałbym, aby tekst był bardzo jasny biały, ale zamiast tego cień zachodzi na niego i powoduje mętne szare obszary.Jak zapobiec nakładaniu się cienia tekstowego na nakładający się tekst w poprzedniej linii?

zrobiłem obniżoną przypadek testowy, żeby wykazać, że: http://codepen.io/approach/pen/LgaIe

Uwaga: Celowo użył małego line-height aby wyróżnić ten problem

+2

Dodam, ja celowo stosuje się małe ' "wysokość linii", aby podkreślić problem! –

+0

wygląda jak błąd. Nie nakłada się, jeśli ustawisz go w dół. – vals

+0

Widoczna jest tylko możliwość, należy zduplikować element, ustawić zduplikowany element przy użyciu przezroczystej czcionki, zestawu cieni i niższego indeksu Z. – vals

Odpowiedz

0

Można spróbować czegoś takiego:

h1 { 
    text-shadow: 0 0 2px white, 0 0 10px grey, 0 0 4px black; 
} 

Możesz mieć nieograniczoną liczbę cieni tekstu. dlatego umieszczając najpierw biały, może pomóc usunąć szary/czarny. Dostosuj piksele i takie, aby uzyskać działanie zgodne z oczekiwaniami.

+0

Dzięki. Teoretycznie wydaje się, że powinno działać. Będę eksperymentować i złożyć raport. –

3

O ile wiem, nie można.

Spróbuj użyć mniejszego cienia lub zmień tekst na większy o line-height.

+0

Dzięki za odpowiedź. Zobacz mój komentarz pod pierwotnym pytaniem powyżej - zapomniałem wspomnieć o "wysokości linii". –

0

myślę, trzeba zrobić swoje większe line-height, powiedzmy line-height: 1.3em;

+0

Dzięki za odpowiedź. Zobacz mój komentarz pod pierwotnym pytaniem powyżej - zapomniałem wspomnieć o "wysokości linii". –

3

można rozważyć wprowadzenie kolejną warstwę tekstu powyżej zacienionej tekście:

Basic Working Example

<div class="cover"> 
    <h1><a href="#">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Impedit eveniet eos deleniti provident ab nam laborum at voluptatem est iste ratione quis error perspiciatis debitis.</a></h1> 

</div> 

.cover{ 
position:absolute; 
top:0; 
} 
.cover h1 a{ 
color: white; 
} 

lub zapisać trochę czasu i pisania:

jQuery Working Example

$(function() { 
    $('.wrapper').children().clone().css({ 
     position: 'absolute' 
    }).prependTo('body'); 
}); 
1

użytkowania element pseudo.

http://codepen.io/andrewtibbetts/pen/OXzvOd

pierwsze, uzyskać zawartość powtarzającego się atrybutu na elemencie:

<div class="text-shadow" data-content="This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow.">This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow. This text has a shadow.</div> 

Następnie CSS:

.text-shadow { 
    position: relative; 
    text-shadow: 0 -.5em 1em black; 
    color: transparent; 

    &:after { 
     content: attr(data-content); 
     position: absolute; 
     top: 0; 
     left: 0; 
     color: #fff; 
     text-shadow: none; 
    } 
} 
+0

Wow, to działa świetnie! – jeremyhoover

Powiązane problemy