2012-12-29 16 views
8

Mam mały problem z CSS 3, mianowicie stworzyłem taki obiekt z pojedynczym przedmiotem. Oto obraz tego, co chcę osiągnąć:CSS 3 - zaokrąglone narożniki po i przed stanami

enter image description here

Oto co ja:

CSS:

body{ 
background:grey; 
    padding:10px; 
} 
#talkbubble { 
margin:0 auto; 
box-shadow: 3px 10px 7px #deefe5; 
    width: 590px; 
    height: 160px; 
    background: white; 
    position: relative; 
    border-radius:10px; 
    border-bottom-left-radius:0px; 
} 
#talkbubble:before { 
box-shadow: 10px 10px 5px #deefe5; 
    content:""; 
    position: absolute; 
    background:white; 
    top: 100%; 
    width: 228px; 
    height: 62px; 
    border-bottom-left-radius:   10px; 
    border-bottom-right-radius:   10px; 

} 
#talkbubble:after{ 
    content:""; 
    position: absolute; 
    top:100%; 
    left:228px; 
    border-top: 10px solid white; 
    border-right: 10px solid transparent; 
    background:white; 


}​ 

HTML:

<div id="talkbubble"></div>​ 

I jsFiddle demo

Jak zaokrąglić kąt między dwiema częściami?

+0

Nie jestem pewien, ale to może pomóc: http: // www .w3.org/TR/css3-background/# corner-clipping – Victor

+1

Nie możesz. blisko pytanie. –

Odpowiedz

2

Krótka odpowiedź: nie możesz.

Udało Ci się utworzyć pudełko : po element DIV, ale jeśli zaczniesz wprowadzać tekst do DIV, nie "przepłynie" do dolnej sekcji.

Aby osiągnąć cel, do którego dążysz w CSS3, potrzebujesz co najmniej 3 elementów DIV i efektów przezroczystości, a problem z przepełnieniem tekstu będzie nadal występował.

+0

Można zaoszczędzić sobie tyle czasu, tworząc obraz .PNG jako tło i stosując wystarczającą ** dopełnienie **, aby tekst dobrze pasował do bańki. Będziesz mieć również wydajność, która działa dla ~ 10% użytkowników, którzy wciąż korzystają z przeglądarek innych niż CSS3, takich jak IE 8. –

4

Zrobione z here informacje można uzyskać w ten sposób:

body 
{ 
    background:grey; 
    padding:10px; 
} 
#talkbubble 
{ 
    margin:0 auto; 
    box-shadow: 3px 10px 7px #deefe5; 
    width: 590px; 
    height: 160px; 
    background: white; 
    position: relative; 
    border-radius:10px; 
    border-bottom-left-radius:0px; 
} 
#talkbubble:before 
{ 
    box-shadow: 10px 10px 5px #deefe5; 
    content:""; 
    position: absolute; 
    background:white; 
    top: 95%; 
    width: 228px; 
    height: 62px; 
    border-bottom-left-radius: 10px; 
    border-bottom-right-radius: 10px; 
} 
#talkbubble:after 
{ 
    content:""; 
    position: absolute; 
    top:100%; 
    left:228px; 
    background:-webkit-radial-gradient(100% 100%, circle, rgba(204, 0, 0, 0) 10px, white 10px); 
    width: 10px; 
    height: 10px; 
}​ 

http://jsfiddle.net/uCRMQ/2

// Tylko cień w tle nie działają. Teraz działa cień tła (w tym rozmiarze).

Lg
warappa

2

Worx jak czar: http://jsfiddle.net/42DJh/7/

prostu zastąpić to:

#talkbubble:after{ 
    content:""; 
    position: absolute; 
    top:100%; 
    left:228px; 
    border-top: 10px solid white; 
    border-right: 10px solid transparent; 
    border-top: 10px solid transparent; 
    border-left: 10px solid transparent; 
    border-top-left-radius:10px; 
    background:transparent; 
    box-shadow: -3px -3px 1px white; 
} 
+0

i Richards Obawy związane z płynnością nie stanowią problemu, po prostu zamień "wysokość: 160px" na "min. wysokość: 160px 'i wszystko płynie gładko; –

Powiązane problemy