2013-12-15 5 views
17

Sto usando il bootstrap, cercando di fare in modo che un div abbia un triangolo CSS prima di esso.Triangolo CSS: prima dell'elemento

http://jsfiddle.net/B2XvZ/11/

Ecco il mio non lavoro Codice:

.d:before { 
    width: 0px; 
    height: 0px; 
    border-style: solid; 
    border-width: 10px 15px 10px 0; 
    border-color: transparent #dd4397 transparent transparent; 
} 

Il modo in cui mi piacerebbe farlo sembrare è che ci sia un triangolo rosa verso sinistra a destra prima del testo "questo ", senza spazi tra esso e il div. Ho provato a farlo anche fluttuando gli elementi, senza successo.

+2

aggiungere una proprietà 'content'. –

+1

Per capire come funziona questa forma e per soluzioni alternative, consultare http://stackoverflow.com/q/7073484/1811992 –

+0

Possibile duplicato di [Freccia trasparente/triangolo] (http://stackoverflow.com/questions/23758922/transparent triangolino) –

risposta

28

È necessario specificare la proprietà content.

Per il posizionamento, aggiungere position:relative al genitore e quindi posizionare assolutamente la freccia -15px a sinistra.

jsFiddle example

.d { 
    position:relative; 
} 

.d:before { 
    content:"\A"; 
    border-style: solid; 
    border-width: 10px 15px 10px 0; 
    border-color: transparent #dd4397 transparent transparent; 
    position: absolute; 
    left: -15px; 
} 
+1

perfetto. ho dimenticato la parte del contenuto. grazie- – amagumori

+0

grazie, anche questo ha risolto il mio problema. Ma cosa significa il CSS ISO \ A? –

+2

@FrauWolf '\ A' è un ritorno a capo. Penso di averlo fatto per qualche strana stranezza del browser (probabilmente IE). Non è più necessario, però. 'contenuto: ''' funzionerebbe bene. –

3

È necessario proprietà di contenuto e di alcuni altri

.d:before { 
    content: ''; 
    width: 0px; 
    height: 0px; 
    border-style: solid; 
    border-width: 10px 15px 10px 0; 
    border-color: transparent #dd4397 transparent transparent; 
    display: inline-block; 
    vertical-align: middle; 
    margin-right: 5px; 
}