Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как выровнять по вертикали текст в кнопке? / 12 сообщений из 12, страница 1 из 1
19.06.2014, 09:51
    #38673868
ser79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
Приветствую!

Проблема в том, что если рядом располагаются 2 кнопки, одна задана через <a>, другая через <button> (или <input type="submit" - неважно), то текст выровненный по центру/вертикали выглядит не на одном уровне! Более сносно выглядет в хроме, в ФФ и ИЕ разъезжается. Что делать? Прочитал весь интернет, пробовал разное, но ничего не получилось!

Вот код кнопки на CSS:
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
.button1 {
	display: inline-block;
	outline: none;
	cursor: pointer;

	vertical-align: middle;
	text-align: center;
	box-sizing: content-box;
	-moz-box-sizing: content-box;

	text-decoration: none;
	font: normal bold 12pt Calibri, Helvetica, Arial, sans-serif;
	padding: 0px 5px;
	text-shadow: #faf4c0 1px 1px 0;

	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;

	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.5);
	-moz-box-shadow: 0 1px 2px rgba(0,0,0,.5);

	box-shadow: 0 1px 2px rgba(0,0,0,.5);
}
.button1:hover {
	text-decoration: none;
}
.button1:active {
	position: relative;
	top: 1px;
}

.orange1 {
	color: #000000;
	border: solid 1px #000000;
	background: #f9b042;
	background: -webkit-gradient(linear, left top, left bottom, from(#f9b042), to(#ba6d2e));
	background: -moz-linear-gradient(top,  #f9b042,  #ba6d2e);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9b042', endColorstr='#ba6d2e');
}
.orange1:hover {
	background: #ba6d2e;
	background: -webkit-gradient(linear, left top, left bottom, from(#ba6d2e), to(#f9b042));
	background: -moz-linear-gradient(top,  #ba6d2e,  #f9b042);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ba6d2e', endColorstr='#f9b042');
}
.orange1:active {
	color: rgba(0,0,0,.6);
	background: -webkit-gradient(linear, left top, left bottom, from(#ba6d2e), to(#f9b042));
	background: -moz-linear-gradient(top,  #ba6d2e,  #f9b042);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ba6d2e', endColorstr='#f9b042');
}



и код на html:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
              <tr>
                <td width="10"></td>
                <td align="left"><?php echo '<a class="button1 orange1" style="width:70px; height:24px;"  href="' . tep_href_link(FILENAME_LOGIN, '', 'SSL') . '">' .  'back' . '</a>'; ?></td>
                <td align="right"><?php echo '<button type="submit" class="button1 orange1" style="width:70px; height:24px;">continue</button>'; ?></td>
                <td width="10"></td>
              </tr>
        </table></td>
      </tr>
...



Вот как оно выглядит в ФФ (см. аттач.).
...
Рейтинг: 0 / 0
19.06.2014, 10:18
    #38673890
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
ser79,

1. удалить все margin. padding
2. выставить одинаковый размер шрифта и высоту строки.
3. выставить одинаковый vertical-align

После этого надписи должны расположиться на одной линии.

Если этого не произошло, накрайняк подкорректировать padding для кнопок отдельно (button.button1{...})
...
Рейтинг: 0 / 0
19.06.2014, 10:35
    #38673920
ser79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
Програмёрser79,

1. удалить все margin. padding
2. выставить одинаковый размер шрифта и высоту строки.
3. выставить одинаковый vertical-align

После этого надписи должны расположиться на одной линии.

padding убрал. margin не было.
Добавил в css line-height: 24px;
vertical-align итак стоит миддл.
Всё равно криво.

авторподкорректировать padding для кнопок отдельно (button.button1{...})
Опять же в разных браузерах отобразиться по разному. Оно не критично, если кнопки располагаются не рядом.
А если рядом... то сразу видно дисгармонию!
...
Рейтинг: 0 / 0
19.06.2014, 10:52
    #38673941
ser79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
В общем добавил в css строчку line-height: 24px;
Во всех остальных браузерах всё хорошо, по центру. Тестировал в Опере, ИЕ, Хроме, Сафари.

А вот в ФФ всё никак не лечиться!
...
Рейтинг: 0 / 0
19.06.2014, 11:23
    #38673983
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
ser79,
так пойдет?
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<style>
.GradCmd {
	background:-moz-linear-gradient(top, #FDFDFD, #D1D1D1);
	background:-webkit-linear-gradient(top, #FDFDFD, #D1D1D1);
	background:linear-gradient(top, #FDFDFD, #D1D1D1);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FDFDFD', EndColorStr='#D1D1D1');
	background:-ms-linear-gradient(top, #FDFDFD, #D1D1D1);
	width:70px;
	height:20px;
	border:1px solid #999;
	padding:1px;
	float:left;
	border-radius:5px;
	font:10pt/20px sans-serif;
	text-align:center;
	cursor:pointer;
	margin:3px;
}
.GradCmd:active {
	padding:2px 0 0 2px;
}
</style>
<body>
	<div class="GradCmd">Back</div>	<div class="GradCmd">Continue</div>
</body>
</html>

...
Рейтинг: 0 / 0
19.06.2014, 18:15
    #38674676
ser79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
user89,

В вашем примере не выводится через <a> и <button>, а просто текст в ДИВе.
...
Рейтинг: 0 / 0
19.06.2014, 18:24
    #38674684
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
ser79,

Как вариант, насколько помню в файрфоксе в средствах отладки (уж где они не помню, пользовался раза 2 и то с пол года назад) есть так же как и в хроме применённые к элементу стили (часть из которых генерирует сам браузер). На крайняк можно сравнить их, и разобраться в чём там дело. Какие-то позиционирующие явно должны отличаться. Так что отладчик в руки и ... :)
...
Рейтинг: 0 / 0
19.06.2014, 18:31
    #38674698
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
ser79user89,
В вашем примере не выводится через <a> и <button>, а просто текст в ДИВе.Я button давно не использую.
У DIV можно сделать любой внешний вид, в событии OnClick - любые операции, например проверка на значения, и если всё ОК, то submit на сервер. Для визуальной имитации щелчка используем псевдокласс :active
...
Рейтинг: 0 / 0
19.06.2014, 18:43
    #38674714
ser79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
user89,

Решение хорошее. Код на JS не подскажете? А то я не силён!
...
Рейтинг: 0 / 0
19.06.2014, 19:11
    #38674733
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
ser79,
Сразу нажмите на DIV, имитирующий кнопку
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<!DOCTYPE html>
<html>
<style>
.GradCmd {
	background:-moz-linear-gradient(top, #FDFDFD, #D1D1D1);
	background:-webkit-linear-gradient(top, #FDFDFD, #D1D1D1);
	background:linear-gradient(top, #FDFDFD, #D1D1D1);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FDFDFD', EndColorStr='#D1D1D1');
	background:-ms-linear-gradient(top, #FDFDFD, #D1D1D1);
	width:70px;
	height:20px;
	border:1px solid #999;
	padding:1px;
	float:left;
	border-radius:5px;
	font:10pt/20px sans-serif;
	text-align:center;
	cursor:pointer;
	margin:3px;
}
.GradCmd:active {
	padding:2px 0 0 2px;
}
</style>
<body>
 <form id="myform" onsubmit="return false;">
  <table>
  <tr>
    <td> <label for="Edit1">ФИО</label> </td>
    <td> <input id="Edit1" name="Edit1" type=text placeholder="введите ФИО" required> </td>
    <td> <span id="txtError"></span> </td>
  </tr>
  <tr>
    <td colspan=3 align=center> <div class="GradCmd" onclick="validate()">Continue</div>  </td>
  </tr>
  </table>
</form>

<script type='text/javascript'>
  function validate() {
	  elem = document.getElementById('txtError');
    if (document.getElementById('Edit1').value.length > 0) {
      elem.innerHTML = 'Правильно!';
      elem.style['color'] = 'green';
			alert('Данные проверены. Можно отправлять на сервер');
      document.getElementById('myform').submit();
    }
    else {
      elem.innerHTML = 'Не правильно!';
      elem.style['color'] = 'red';
    }
  }
</script>
</body>
</html>

...
Рейтинг: 0 / 0
20.06.2014, 07:19
    #38674889
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
В FF 3 помню баг был с выравниванием внутри кнопок, но должны были починить, столько лет прошло, пример .
...
Рейтинг: 0 / 0
20.06.2014, 08:20
    #38674912
ser79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выровнять по вертикали текст в кнопке?
st_st,

баг видимо ещё не исправили, но пример помог! Спасибо!!!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как выровнять по вертикали текст в кнопке? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]