Подтвердить что ты не робот

Display: table-cell, border-spacing не работают с кнопками?

Итак, я использую display: table-cell, чтобы поместить две кнопки рядом друг с другом, чтобы, если текст от одного переполнения до следующей строки, обе кнопки имеют одинаковую высоту. У меня есть border-collapse: separate, и я использую border-spacing, чтобы поместить пространство между ними. Он отлично работает, если я использую что-то вроде <div class="button">, но как только я использую элемент <button>, среднее пространство исчезает.
JSFiddle: http://jsfiddle.net/uASbb/

Теперь, используя <div>, теперь отлично (если не семантически точно), так что мне в основном просто интересно, если кто-то знает, что именно происходит здесь.
Примечание. Я также заметил некоторое (другое) странное поведение с использованием элементов <input> в этой же ситуации: http://jsfiddle.net/G5SFX/1/

Является ли display: table-cell просто не поддерживаться в этих случаях? Это ошибка?

Спасибо!

EDIT: похоже, вы просто не можете применить кнопку display: table-cell к кнопке; он по умолчанию возвращает значение inline-block. Смотрите этот скриншот от Chrome WebInspector:
table-cell -> inline-block

Теперь остаются вопросы: является ли это преднамеренным? Это спецификация или это только браузер? Можем ли мы изменить его?

4b9b3361

Ответ 1

Вставка элемента button в div является хорошим решением (на вашем месте я бы тоже выбрал его), но если вы хотите отображать элементы button бок о бок с пространством между ними без помощь от div, вы можете попробовать это для своего класса .item:

.item {
    display: table-cell;
    width: 46%;
    background: aliceBlue;
    border: 1px solid black;
    margin: 1%;
}

Width сводится к 46%, чтобы a margin of 1% вокруг каждого элемента button. Теперь у вас есть пространство между ними, а также если вы измените размер окна, второй элемент button не попадет под первую.

Пример: http://jsfiddle.net/codenighter/H7TZU/

Надеюсь, что это поможет.

EDIT: Кажется, что border-spacing (на самом деле ни один из block стиль не работает) не работает с button или input. Но он работает с другими встроенными элементами, такими как span, h1 или b. Таким образом, для input и button свойство display: table-cell не может быть правильно применено (я изменил значение Width для button и input, и он показал, а для span и b Width остался фактически на 50%).

Примеры: http://jsfiddle.net/codenighter/HrTZS/