css: ie сдвигает текстовое значение и фон кнопки

#css #internet-explorer #button #submit

#css #internet-explorer #кнопка #Отправить

Вопрос:

У меня есть кнопка отправки в списке:

     <ul>
        <li><input type="submit" value="Pls don't shift" /></li>
    </ul>
  
  • У li и ввода разные фоны, и они должны быть позиционируемыми.
  • Ввод должен иметь динамическую ширину (в зависимости от значения).
  • Значение ввода должно быть почти внизу ввода.

Эти вещи уменьшают количество возможностей для решения проблемы.

И проблема именно в этом: IE8 и IE9 сдвигают текст значения, а IE8 также сдвигает фон.

Я попытался решить эту проблему и создал этот css (это всего лишь «debug-css»):

     li {
    display: block;
    width: auto;
    border: 1px solid red;
    padding: 0;
    margin: 0;
    float: left;
    overflow: hidden;
    }
    input,
    input:active:hover {
    display: block;
    background: url(tools-48x48.png)  no-repeat center center;
    width: auto;
    height: 60px;
    border: 1px solid transparent;
    outline: none;
    color: #fff;
    text-align: center;
    position: relative;
    overflow: visble;
    padding: 0 10px;
    margin: 2px;
}
input:active:hover {
border: 1px solid red;
}
  

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

Это был момент, когда я хотел написать здесь. Как отключить кнопки отправки: активное состояние в IE?

Спасибо!

Комментарии:

1. У меня тоже есть эта проблема, и это сводит меня с УМА! Я надеюсь, вы нашли это haslayout.net/css/Button-Background-Shift-On-active-Bug — в котором даже не упоминается аспект текстовой ценности?

2. Я сделал эту скрипку в соответствии с вашим кодом jsfiddle.net/f67Vw Итак, если я прав, основная проблема заключается в том, что текст сдвигается на 1 пиксель вниз и на 1 пиксель вправо, когда я щелкаю и удерживаю курсор мыши над текстом?

Ответ №1:

Я протестировал это в IE9, и когда я удаляю несколько стилей, которые «не используются», вводимый текст не сдвигается при нажатии на него.

удалены стили:

 li {
    width: auto;
    border: 1px solid red;
    padding: 0;
    margin: 0;
    overflow: hidden;
}
input,
input:active:hover{
    background: url(tools-48x48.png) no-repeat center center;
    outline:none;
}
  

и добавил стили

 input,
input:active:hover{
    position: relative;
    overflow: visible;

}
  

Смотрите Мою скрипку для получения более подробной информации здесь: http://jsfiddle.net/f67Vw/4 /

Другим хорошим вариантом, по-видимому, является замена его тщательно оформленным a элементом.

HTML

 <ul>
    <li>
        <a href="#" class="button">Doesn't shift</a>
    </li>
</ul>
  

CSS

 .button {
    display: block;
    width: auto;
    height: 19px;
    border: 1px solid transparent;
    color: #000;
    text-align: center;
    padding: 20px 10px;
    margin: 2px;
    text-decoration:none;
}
  

Снова смотрите Мою скрипку для получения более подробной информации здесь: http://jsfiddle.net/f67Vw/4 /

Комментарии:

1. Извините, но IE8 сдвигает текст, а также фон. Вы должны добавить к нему некоторое изображение, чтобы наблюдать эффект смещения фона: jsfiddle.net/f67Vw/43

2. Я использую IE9, и в вашем первом примере (фактическая кнопка) текст смещается. : (