2012-06-04 13 views

Odpowiedz

10

Oto moje rozwiązanie, używając kształtów CSS z Chrisem Coyier.

http://jsfiddle.net/dDejan/XSs9L/

4 dodatkowe div są wstawiane za pośrednictwem JavaScript (dobrze, faktycznie jQuery) dla każdego z pojemników, które mają być ukształtowane w ten sposób. Te div są umieszczone całkowicie w rogach jest dominująca, a są one odpowiednio urządzone w sposób opisany w linku wysłana przez Sven Bieder

+0

Można to zrobić tylko z jednym dodatkowym elementem –

+1

Dobrze wiedzieć @ VladimirStarkov, dziękuję za ten wnikliwy komentarz :) – dDejan

3

można komponować to za pomocą absolutnie położenie :before i :after elementów z wykorzystaniem techniki CSS triangles.

<div class="box"></div> 

css:

.box { 
    background-color:#2020ff; 
    height:50px; 
    width:50px; 
    position:relative 
} 

.box:after { 
    content:" "; 
    width: 0; 
    height: 0; 
    border-top: 10px solid #ffffff; 
    border-bottom: 10px solid transparent; 
    border-right:10px solid #ffffff; 
    position:absolute; 
    top:-9px; 
    right:0px; 

} 
+0

To brzmi jak dobry początek, opieka udostępnić przykładowy kod ? – zehelvion

+0

To wygląda dobrze, ale czy możesz wyjaśnić kod? Nie w pełni rozumiem, jak to działa? – zehelvion

+1

To stara sztuczka polegająca na zrobieniu trójkąta z narożnego kawałka granicy. W tym przypadku jest to biały trójkąt, który zakrywa część niebieskiego pudełka. Możesz edytować ustawienia w: po, aby zobaczyć, jak to działa. Użyj innego z: before, aby ukryć lewy górny róg. Oto, jak to działa: http://stackoverflow.com/questions/7073484/how-does-this-css-triangle-shape-work –

21

Spójrz tutaj. Tam znajdziesz wszystko, czego potrzebujesz:

http://css-tricks.com/examples/ShapesOfCSS/

Edit W przypadku, gdy związek idzie utracone:

CSS

#octagon { 
    width: 100px; 
    height: 100px; 
    background: red; 
    position: relative; 
} 

#octagon:before { 
    content: ""; 
    position: absolute; 
    top: 0; left: 0; 
    border-bottom: 29px solid red; 
    border-left: 29px solid #eee; 
    border-right: 29px solid #eee; 
    width: 42px; height: 0; 
} 

#octagon:after { 
    content: ""; 
    position: absolute; 
    bottom: 0; 
    left: 0; 
    border-top: 29px solid red; 
    border-left: 29px solid #eee; 
    border-right: 29px solid #eee; 
    width: 42px; 
    height: 0; 
} 
+0

Tak, masz rację, zmieniłem to –

+0

Ale nie dostałeś akceptacji Odpowiedz teraz. Wstyd. Twój jest lepszy. –

+0

Nie jest problemem. Kiedy druga odpowiedź działa lepiej dla niego, to jest w porządku. W końcu chodzi o pomoc ludziom, a nie o to, kto zostanie zaakceptowany. –

1

box { 
 
    background-color: transparent; 
 
    position: fixed; 
 
    width: 300px; 
 
    height: 300px; 
 
} 
 
svg { 
 
    width: 300px; 
 
    height: 300px; 
 
} 
 
polygon { 
 
    visibility: visible; 
 
    background: black; 
 
    stroke: white; 
 
}
<box> 
 
    <svg> 
 
    <polygon points="0 250, 50 300, 300 300, 300 50, 250 0, 0 0" /> 
 
    </svg> 
 
</box>

Powiązane problemy