2015-05-01 13 views
10

Quello che sto cercando di fare SEMBRA semplice, ma non riesco a capire come farlo.Disegno di linee angolate nei CSS

Come potete vedere nella mia immagine ci sono un paio di linee rosse che attraversano il fondo, quindi piegate verso l'alto vicino al lato destro.

C'è un modo in CSS per disegnare una linea come questa?

example showing lines

+0

Vuoi solo linee angolate (o) una linea sopra l'immagine e una linea dietro come nello screenshot? – Harry

+0

Ho solo bisogno di sapere come disegnare linee come quelle. Posso quindi duplicarlo per la seconda riga e impostare i valori z-index per ottenere l'effetto di sovrapposizione. –

+1

Sarebbe [questo] (http://codepen.io/hari_shanx/pen/xGGPrL) sufficiente? – Harry

risposta

24

È possibile creare linee angolate in CSS utilizzando le trasformazioni skew (transform: skew(Xdeg)). Di seguito è riportato un frammento di esempio:

.shape { 
 
    height: 50px; 
 
    width: 200px; 
 
    border-bottom: 2px solid red; 
 
    border-right: 2px solid red; 
 
    -moz-transform: skew(-45deg); 
 
    -webkit-transform: skew(-45deg); 
 
    transform: skew(-45deg); 
 
}
<div class="shape"></div>


Doppia linea con uno sopra l'area di contenuto e una dietro può anche essere fatto utilizzando un singolo elemento (e un paio di pseudos) come nel frammento qui sotto:

.shape:before { 
 
    position: absolute; 
 
    bottom: -5px; 
 
    left: -5px; 
 
    content: ''; 
 
    height: 50px; 
 
    width: 100%; 
 
    border-bottom: 3px solid red; 
 
    border-right: 4px solid red; 
 
    -webkit-transform: skew(-45deg); 
 
    -moz-transform: skew(-45deg); 
 
    transform: skew(-45deg); 
 
} 
 
.shape:after { 
 
    position: absolute; 
 
    content: ''; 
 
    bottom: -10px; 
 
    left: 0px; 
 
    height: 55px; 
 
    width: 100%; 
 
    border-bottom: 3px solid red; 
 
    border-right: 4px solid red; 
 
    -webkit-transform: skew(-45deg); 
 
    -moz-transform: skew(-45deg); 
 
    transform: skew(-45deg); 
 
    z-index: -1; 
 
} 
 
.shape { 
 
    position: relative; 
 
    height: 80px; 
 
    width: 400px; 
 
    background: whitesmoke; 
 
}
<div class="shape"> 
 
    Some text that goes within the element... 
 
</div>

+1

@SherwinFlight: benvenuto amico. Ho anche aggiunto un campione per ottenere l'aspetto esatto come nell'immagine (con solo 1 elemento). Una cosa che deve essere notato è che poiché stiamo facendo una distorsione, il bordo inclinato sarebbe un po 'magro ma che può essere superato rendendo il bordo più spesso dell'altro. – Harry

+0

Sapresti come "tagliare" l'angolo in alto a sinistra di un DIV? Ad esempio, in modo che assomigli ad un pezzo di carta con l'angolo in alto a sinistra ripiegato o rimosso. –

+0

Lo sfondo è a tinta unita? Se sì, potresti usare un triangolo e posizionarlo in alto. In caso contrario, può ancora essere raggiunto, ma avrebbe bisogno di un lavoro extra. – Harry