Выравнивание базовой линии кнопки YUI с базовой линией текста рядом с ней - PullRequest
1 голос
/ 24 июня 2009

Я хотел бы отобразить кнопку YUI рядом с некоторым текстом, но базовая линия текста кнопки YUI не совпадает с базовой линией текста рядом с ней. Семейство и размер шрифта идентичны как для текста кнопки, так и для текста рядом с ней.

Если я использую обычную кнопку HTML, базовые линии текста правильно выстраиваются.

Вот живой пример проблемы.

Как получить базовые линии текста для выравнивания?

Ответы [ 6 ]

1 голос
/ 25 июня 2009

Так как кнопка .yui имеет свойство display: inline-block, она будет вести себя как блок, но останется встроенной.

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

Поскольку кнопка имеет min-height: 2em, вам придется выполнить некоторые ручные настройки. Это:

.yui-skin-sam .yui-button {
    margin-bottom: -0.5em; /* adjust for 2em min-height */
    vertical-align: baseline; /* use consistent baseline */
}

дал мне хорошие результаты в IE7, FF3 и Chrome, но между ними все еще есть небольшое несоответствие. Возможно, вам придется изучить, какие другие свойства применяются к первому диапазону, первому дочернему диапазону и кнопке, которые вызывают небольшие несоответствия. Конечно, вы также можете настроить селектор так, чтобы он применялся только к одному экземпляру кнопки, а не ко всем кнопкам yui.

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

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

1 голос
/ 24 июня 2009

Заключите соседний текст в тег span со следующими стилями:

<span style="vertical-align: middle; display: inline-block; margin-top: -1.1em;">
   YUI Button:
</span>
0 голосов
/ 16 сентября 2009

Чтобы кнопка выровнялась с текстом рядом с ней:

  1. Убедитесь, что кнопка (в данном случае div) имеет значение inline-block. Это действительно сложная часть, поэтому я немного написал о том, как заставить IE6 + и другие браузеры соблюдать строчный блок .
  2. Добавьте vertical-align: middle на кнопку и текст.
0 голосов
/ 15 сентября 2009

Вы можете попробовать использовать отрицательный margin-bottom, чтобы потянуть кнопку вертикально вниз; если вы используете то же значение, что и для отступа текста внутри кнопки или для самой кнопки, оно может быть правильно расположено.

Я на работе, и пишу это на IE6 (я знаю, я знаю ...), так что я не могу смотреть слишком внимательно (нет Firebug и т. Д. - не ИТ-профессионал), но если вы использовали vertical-align: baseline; или что-то похожее, оно позиционирует элемент, а не текст внутри него, к базовой линии окружающего текста.

Вы также можете попробовать использовать line-height: $height;, где $ height равно высоте кнопки по вертикали; что заставляет окружающий текст вертикально центрироваться в пределах этой высоты. Никаких гарантий, но это может / должно сработать.

0 голосов
/ 26 июня 2009

Я попробовал стилизовать кнопку с нуля. Следующий CSS - это то, что я придумал. Преимущество заключается в том, что прилегающий к кнопке текст не нужно заключать в какие-либо дополнительные элементы. Он отлично работает в последних версиях Internet Explorer, Firefox и Safari. Firefox 2 неправильно измеряет высоту кнопки, и IE 6 и 7 каждый ее используют по-своему.

Вот живой пример этого кода.

.yui-button {
  display: inline-block;
  background: transparent url(http://yui.yahooapis.com/2.7.0/build/assets/skins/sam/sprite.png) repeat-x scroll 0 0;
  border-color: #808080;
  border-style: solid;
  border-width: 1px 0;
  margin: auto 0.25em;
}
.yui-skin-sam .yui-button .first-child {
  display: inline-block;
  border-color: #808080;
  border-style: solid;
  border-width: 0 1px;
  margin: 0 -1px;
}
.yui-skin-sam .yui-button button {
  background-color: transparent;
  border: medium none;
  margin: 0;
  min-height: 2em;
  padding: 0 10px;
}
0 голосов
/ 24 июня 2009

В строке 7 в button.css есть

.yui-button {
   display:-moz-inline-box;
   vertical-align:text-bottom;
}

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


Интересно. По предоставленной вами ссылке нумерация сверху вниз, a = выровнена, n = не выровнена, разные браузеры показывают:

ie6 1 n, 2 n, 3 n 
ie7 1 a, 2 n, 3 n 
ie8 1 a, 2 n, 3 a 
ff2 1 a, 2 n, 3 a 
ff3 1 a, 2 n, 3 n 
saf 1 a, 2 a, 3 a 
chr 1 a, 2 a, 3 a

Удаление вертикального выравнивания исправляет это в ff2, но не в ff3.

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

Я не знаю, почему между safari / chrome, ff2 и ff3 такая большая разница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...