2011-08-18 12 views
12

Mam projekt Chcę zaimplementować, która obejmuje tytułowy tekst pojawiający się z własnym kolorem tła, wyściełany przez 10px, na obrazie, par przykład:zakresowe background-color & napawające problemy

http://i.stack.imgur.com/E7EpS.png

pierwszy przykład na tym zdjęciu dobrze działa i jest prosty:

.greenbox {width:520px; height:261px; position:relative;} 
.greenbox span { padding:0 10px; background:#000; position:absolute; left:0; bottom:40px; } 

Problem powstaje, gdy tekst przelewa na innej linii, wówczas wyściółka elementy przęseł nie ma wpływu na tekst na podziały wiersza, to czyni tak:

http://i.stack.imgur.com/pY18f.png

Każdy użytkownik wie alternatywa, czyli jak oni ustawić ten projekt się tak, że kolor tła & wyściółka była spójna?

góry dzięki

EDIT: Miałem uproszczony kod, aby to zwięzły, ale przeoczył istotną rolę. W rzeczywistości to w następujący sposób:

.greenbox {width:520px; height:261px; position:relative;} 
.greenbox a {position:absolute; left:0; bottom:40px; } 
.greenbox span { padding:0 10px; background:#000; } 

Z HTML jak:

<div class="greenbox"> 

    <a href="link"><span>The Title Goes Here</span></a> 

</div> 

Zatem przedział pozostaje rolki, owinięte w bezwzględne położenie kotwicy.

+0

Podaj przykład swojego kodu znaczników. JsFiddle to dobra metoda robienia tego – Curt

+0

Opublikowanie znaczników w twoim pytaniu jest w rzeczywistości preferowaną metodą, z [jsfiddle] (http://jsfiddle.net/), która jest drugorzędna. Jeśli rozumiem to poprawnie, myślę, że jest to rodzaj "błędu", jest tu pytanie o to z wieloma nieudanymi próbami jako rezolucją, spróbuję to znaleźć. –

+0

Znaleziono: [CSS tworzy dopełnienie przed line-breakiem] (http://stackoverflow.com/q/6099857) –

Odpowiedz

6

mam rozwiązać coś podobnego wcześniej: Add padding at the beginning and end of each line of text

mam okradziony to rozwiązanie od siebie i dopasować go do swojej sprawy.

Należy pamiętać, że korekty line-height i padding mogą być bardzo trudne do uzyskania .

Patrz:http://jsbin.com/ahoyug

HTML:

<div class="greenbox"> 
    <a href="#"><span><span> 
     The Title Goes Here, with overflow 
    </span></span></a> 
</div> 

CSS:

.greenbox {width:500px; height:200px; position:relative; background:green} 

.greenbox > a { 
    font: 50px sans-serif; 
    line-height: 1.14; 
    padding: 0; 
    border-left: 20px solid #000; 
    position: absolute; 
    left: 0; 
    bottom: 60px; 
    text-decoration: none; 
    color: #fff 
} 
.greenbox > a > span { 
    background: #000 
} 
.greenbox > a > span > span { 
    position: relative; 
    left: -10px 
} 
+0

Cudownie! Cóż, to jest okropne, podwójne, ale to działa. Border-left -> świetne myślenie boczne tam :) –

+0

Tak, zgadzam się. Szkoda, że ​​nie można tego zrobić bardziej elegancko. – thirtydot

+0

Zaktualizowany jsbin robi to z box-shadow, elegancki, jeśli mogę powiedzieć, co jest w istocie poprawką jednoliniową. – lintuxvi

4

Nieco łatwym sposobem jest dodanie border po lewej stronie link i następnie dodaj dwa wr appers, następnie ustaw najpierw na lewo, a drugi z powrotem na prawo, więc chciałby w jakiś sposób: http://jsfiddle.net/kizu/fNGgN/4/

+0

Zupełnie zrobiłbym to samo! :) – thirtydot

+2

Haha, tak, rzeczywiście! Zmodyfikowałem moją wersję z dodatkowym opakowaniem, ponieważ dzięki niemu możesz być niezależny od granicy: http://jsfiddle.net/kizu/fNGgN/5/ :) – kizu

+0

Idealne rozwiązanie. – bottleboot