2013-06-28 2 views
0

Мой вопрос похож на этот вопрос: Arrow Box with CSS Но вместо всего 1 коробки мне нужно выровнять несколько ящиков. И все же сможете видеть стрелку на всех коробках.Выравнивание css arrow boxes

В этом примере: http://jsfiddle.net/casperskovgaard/LHHzt/1/ Я создал две стрелочные коробки, которые плавают влево. Проблема в том, что стрелка на первом поле не видна.

Как сделать видимую стрелку?

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:

Первая стрелка должна перекрывать поле справа. Смотрите решение от artSx: http://jsfiddle.net/LHHzt/6/ Единственное, что отсутствует из этого решения заключается в том, что это должно быть возможно добавить несколько (более двух) коробки

+0

Пожалуйста, проверьте мой answe r, я думаю, что моя скрипка показывает, что вы после – Pete

ответ

1

если изменить Z-индекс из после psudeo элемента 2, а затем, прежде чем элемент к 1, то он должен работать вы намерены:

.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

Спасибо, Пит, это именно то, что я ищу :-) –

0

попробовать это

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

Не уверен, что вы отправили правильный код. Но коробки должны быть рядом друг с другом. –

1

добавить следующее:

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

JsFiddle with correction

+0

Так оно и должно выглядеть.Но я также должен иметь возможность добавлять больше ящиков. Если я добавлю больше ящиков, будет видна только первая и последняя стрелки. –

+1

вы можете выбрать стрелку, если хотите => .arrow: nth-child (1)/.arrow: nth-child (2) и т. Д. – artSx

1

Просто добавьте z-index в ваш .arrow:before. Вот живая версия 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; 
} 

Работает с, как многие коробки, как вы хотите :)

+0

Это близко к тому, что мне нужно. Но таким образом стрелки меняют цвет. Они должны оставаться того же цвета, что и коробка. Только граница должна быть темно-серой. –

+1

@CasperSkovgaard: Plz проверить это http://jsfiddle.net/LHHzt/17/, мне кажется, все в порядке. Просто добавьте z-index: 2 в '.arrow: after' и он работает :) – Xavier

0

Просто добавьте margin стрелке ...

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

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

Или изменить z-index, чтобы отобразить выше, если вы хотите, чтобы они накладывались

0

Простое добавление поля к стрелке устраняет проблему.

Смотреть это JSFiddle: http://jsfiddle.net/LHHzt/9/

Я просто добавил

margin-right: 15px;