2017-01-03 2 views
0

Я использую шрифт удивительные значки, и я хочу, чтобы они располагались друг над другом. Я также хочу, чтобы пользователь мог взаимодействовать с ними, нажимая на них.Шрифт awesome icons element space имеет нежелательное перекрытие

Проблема в том, что элемент каждой иконки занимает больше места, чем нужно, и перекрывается. Поэтому, когда пользователь думает, что они нажимают на верхнюю, они в конечном итоге активируют прослушиватель для нижнего.

Вот HTML:

<div class="arrow-container"> 
    <i class="fa fa-sort-asc comment-vote up-vote-comment" aria-hidden="true"></i> 
    <i class="fa fa-sort-desc comment-vote down-vote-comment" aria-hidden="true"></i> 
</div> 

и CSS:

.black-arrow{ 
    color: black; 
} 

.up-vote-comment{ 
    width: 100%; 
} 
.down-vote-comment{ 
    position: relative; 
    top: -15px; 
} 

.comment-vote{ 
    font-size: 20px; 
} 

это важно для меня, что две стрелки выстраиваются точно на одной линии по горизонтали и довольно близко по вертикали, как они находятся в this скрипке.

Кто-нибудь знает, как заставить их не перекрываться в пространстве занятых элементов? Я попытался установить высоту стрелки внизу, но только что занятое пространство элемента было выше самой стрелки.

ответ

0

Если добавить высоту верхней стрелки и некоторые Z-индексы, так что верхняя стрелка стека над нижней стрелкой, вы можете добиться того, что вы хотите:

.black-arrow { 
    color: black; 
} 
.up-vote-comment { 
    width: 100%; 
    height: 12px; 
    z-index: 2; 
    overflow: hidden; 
} 
.down-vote-comment { 
    top: -13px; 
    z-index: 1; 
} 
.comment-vote { 
    font-size: 20px; 
    display: inline-block; 
    position: relative; 
} 

Updated fiddle - Я добавил консольный протоколирование к щелчку стрелки, так что вы можете увидеть, один нажат

+1

прохладный. Не думал об этом. Благодаря! – user3494047

+0

Добро пожаловать, рад, что смогу помочь :) – Pete

1

Вы можете использовать следующий код: EDIT

.comment-vote { 
     font-size: 20px; 
     position: initial; 
     width: 100%; 
     display: inline-block; 
    } 

    .arrow-container { 
     width: 30px; 
     position: absolute; 
     top: 0px; 
     left: 0px; 
    } 

Таким образом, вы можете использовать класс .arrow-контейнера для размещения стрелки.

+1

у меня есть две проблемы с этим Soluti on: во-первых, они слишком далеко друг от друга по вертикальной оси, а во-вторых, если вы проверите нижнюю стрелку, вы увидите, что ее пространство не покрывает собственно стрелку. Это проблема, если я хочу, чтобы пользователь взаимодействовал с этой стрелкой. – user3494047

+0

CSS был обновлен до «опрятного» решения. – vicgoyso

0

Сочетание контейнеров и абсолютного позиционирования. У вас может быть даже 2px пробел между стрелками.

.comment-icon-wrapper { 
    height: 10px; 
    width: 12px; 
    overflow: hidden; 
    position: relative; 
    margin-bottom: 2px; 
} 
.comment-vote { 
    position: absolute; 
    display: block; 
} 
.comment-vote { 
    font-size: 20px; 
    line-height: 20px; 
    display: block; 
    background-color: red; 
} 
.comment-vote:hover { 
    cursor:pointer; 
} 
.down-vote-comment { 
    position: relative; 
    top: -9px; 
    background-color: blue; 
} 

https://jsfiddle.net/w6ybL3nb/5/ (фоны для выделения пространства)

+0

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

+0

Хорошо, я изменил свой ответ, попробуйте сейчас – dees91

+0

Прохладный. Выглядит хорошо. Мне нужно подумать о том, какое решение лучше для меня. – user3494047