Добавить границу CSS при наведении курсора, не перемещая элемент

Возможный дубликат:
CSS hover border делает встроенные элементы слегка отрегулированными

У меня есть строка, в которой я использую подсветку фона для наведения.

.jobs .item:hover {
    background: #e1e1e1;
    border-top: 1px solid #d0d0d0;
}

Однако, когда граница добавляет к элементу 1px дополнительный, он делает его "перемещаться". Как бы компенсировать вышеуказанное движение здесь (без использования фонового изображения)?

Ответ 1

Вы создаете границу, но имеете тот же цвет, что и фон (или transparent, если вам не нужно поддерживать более старые версии IE (< 7).

.jobs .item {
    background: #eee;
    border-top: 1px solid #eee;
}

.jobs .item:hover {
    background: #e1e1e1;
    border-top: 1px solid #d0d0d0;
}

Ответ 2

добавить margin:-1px;, который уменьшает 1px с каждой стороны. или если вам нужна только сторона, вы можете сделать margin-left:-1px и т.д.

Ответ 3

Попробуйте, это может решить вашу проблему.

Css:

.item{padding-top:1px;}

.jobs .item:hover {
    background: #e1e1e1;
    border-top: 1px solid #d0d0d0;
    padding-top:0;
}

HTML:

<div class="jobs">
        <div class="item">
            content goes here
        </div>
</div>

Смотрите скрипт для вывода: http://jsfiddle.net/dLDNA/

Ответ 4

Добавьте border в обычный элемент, тот же color, что и background, чтобы его не видно. Таким образом, элемент имеет border: 1px независимо от того, находится ли он в курсе или нет.