2012-06-04 12 views

risposta

10

Ecco la mia soluzione, utilizzando le forme CSS da Chris Coyier.

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

4 div aggiuntivi vengono inseriti tramite JavaScript (beh, in realtà jQuery) per ciascuno dei vostri contenitori che si desidera a forma in questo modo. Questi div sono posizionati assolutamente negli angoli del suo genitore, e sono arredate di conseguenza, come descritto nel link postato da Sven Bieder

+0

Si può fare con un solo elemento in più –

+1

Buono a sapersi @VladimirStarkov, grazie per questo commento perspicace :) – dDejan

3

È possibile comporre questo utilizzando posizione assoluta :before e :after elementi con la tecnica 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

Questo suona come un buon inizio, la cura per condividere codice di esempio ? – zehelvion

+0

Questo sembra buono ma potresti spiegare il codice? Non capisco appieno come funziona? – zehelvion

+1

È un vecchio trucco di fare un triangolo fuori dal pezzo d'angolo di un bordo. In questo caso è un triangolo bianco che copre una porzione della scatola blu. È possibile modificare le impostazioni in: dopo per vedere come funziona. Usane un altro con: prima di coprire l'angolo in alto a sinistra. Ecco come funziona: http://stackoverflow.com/questions/7073484/how-does-this-css-triangle-shape-work –

21

Guardate qui. Ci si trova tutto ciò che serve:

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

Modifica Nel caso in cui la connessione viene persa:

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

Sì hai ragione, l'ho cambiato –

+0

Ma non hai accettato rispondi adesso. Vergogna. Il tuo è migliore –

+0

Non è un problema. Quando l'altra risposta funziona meglio per lui, allora va bene. Alla fine si tratta di aiutare le persone e non di chi viene accettato. –

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>

Problemi correlati