2013-06-28 4 views
0

Ma question est similaire à cette question: Arrow Box with CSS Mais au lieu d'une seule boîte j'ai besoin d'aligner plusieurs boîtes. Et encore être en mesure de voir la flèche sur toutes les cases.Aligner des boîtes de flèches css

Dans cet exemple: http://jsfiddle.net/casperskovgaard/LHHzt/1/ J'ai créé deux boîtes de flèches qui flottent vers la gauche. Le problème est que la flèche sur la première case n'est pas visible.

Comment rendre la flèche visible?

HTML:

<div class="arrow"></div> 
<div class="arrow"></div> 

CSS:

.arrow { 
    float: left; 
    width: 128px; 
    height: 100px; 
    background-color: #f0f0f0; 
    border: 1px solid #999; 
    position: relative; 
} 
.arrow:after { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 128px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-left: 12px solid #f0f0f0; 
} 
.arrow:before { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 129px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-left: 12px solid #999; 
} 

EDIT:

La première flèche doit chevaucher la boîte à droite. Voir la solution de artSx: http://jsfiddle.net/LHHzt/6/ La seule chose qui manque à cette solution est qu'il devrait être possible d'ajouter plusieurs (plus de deux) boîtes

+0

S'il vous plaît vérifier mon answe r, je pense que mon violon montre ce que vous êtes après – Pete

Répondre

1

si vous changez le z-index de l'après élément psudeo à 2, puis l'avant élément 1, alors il faut travailler vous avez l'intention:

.arrow { 
    float: left; 
    width: 128px; 
    height: 100px; 
    background-color: #f0f0f0; 
    border: 1px solid #999; 
    position: relative; 
    margin-right:15px; 
} 
.arrow:after { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 128px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-left: 12px solid #f0f0f0; 
} 
.arrow:before { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 129px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-left: 12px solid #999; 
} 

http://jsfiddle.net/peteng/LHHzt/15/

+1

Merci Pete, c'est exactement ce que je recherche :-) –

0

essayer

http://jsfiddle.net/casperskovgaard/LHHzt/1/

.arrow { 
    width: 128px; 
    height: 100px; 
    background-color: #f0f0f0; 
    border: 1px solid #999; 
    position: relative; 
} 
.arrow:after { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 128px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-left: 12px solid #f0f0f0; 
} 
.arrow:before { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 129px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-left: 12px solid #999; 
} 
+0

Pas sûr si vous avez posté le bon code. Mais les boîtes doivent être l'une à côté de l'autre. –

1

ajouter ceci:

.arrow:first-child{ 
z-index:10; 
} 

JsFiddle with correction

+0

C'est ainsi que ça devrait ressembler.Mais je dois aussi pouvoir ajouter plus de boîtes. Si j'ajoute plus de cases, seules la première et la dernière flèche sont visibles. –

+1

vous pouvez sélectionner la flèche si vous voulez => .arrow: nth-enfant (1)/.arrow: nth-enfant (2) etc. – artSx

1

Il suffit d'ajouter un z-index à votre .arrow:before. Voici la version live http://jsfiddle.net/LHHzt/13/

.arrow:before { 
    content: ''; 
    position: absolute; 
    top: 0px; 
    left: 129px; 
    width: 0; 
    height: 0; 
    z-index:2; 
    border: 50px solid transparent; 
    border-left: 12px solid #999; 
} 

Fonctionne avec autant boîte que vous voulez :)

+0

Ceci est proche de ce dont j'ai besoin. Mais de cette façon, les flèches changent de couleur. Ils doivent rester de la même couleur que la boîte. Seule la bordure devrait être gris foncé. –

+1

@CasperSkovgaard: Plz vérifier cela sur http://jsfiddle.net/LHHzt/17/, je semble être d'accord. Il suffit d'ajouter un z-index: 2 à '.arrow: after' et ça marche :) – Xavier

0

il suffit d'ajouter un margin à la flèche ...

.arrow { 
    float: left; 
    width: 128px; 
    height: 100px; 
    background-color: #f0f0f0; 
    border: 1px solid #999; 
    position: relative; 
    margin-right: 15px; 
} 

http://jsfiddle.net/LHHzt/11/

Ou modifiez z-index pour afficher ci-dessus si vous souhaitez les superposer