
お世話になります
フォームのテキストボックスに表示する文字(value)を「上下左右中央」にしたいのですが
「上下中央」ができずに困っています(IE6、firefox) ※safari3では中央になりました
以下のhtmlを書いています。
paddingやverticalなど試してみたのですが…
(buttonのvertical-align:bottom;は、これが無いと上へズレてしまうので、書きました。
これも意味がわかりません。。)
とても基本的なことなのですが
検索しても解決策を見つけられませんでした。よろしくお願いします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style><!--
form input {
margin-bottom:10px;
color:#fff;
border:none;
font-size:12px;
}
form input.mlmg-text {
width:150px; height:26px;
background-color:green;
padding:2px 5px;
text-align:center;
vertical-align:center;
}
form input.mlmg-buttton {
width:50px; height:30px;
color:#fff; background-color:blue;
vertical-align:bottom;
}
--></style>
</head>
<body>
<form method="post">
<input type="text" class="mlmg-text" name="user_mail" value="上下中央に配置したい"><input type="button" class="mlmg-buttton" name="join" value="GO"><br />
<input type="text" class="mlmg-text" name="user_mail_resign" value="上に寄っちゃう"><input type="button" class="mlmg-buttton" name="resign" value="GO">
</form>
</body>
</html>

No.2ベストアンサー
- 回答日時:
少々マークアップから変えてみましたが、以下のサンプルで検証したところ、IE6/7、Firefox2/3、Safari3、Opera9.61等での結果はほぼ同じになりました。
----------------------------------------------------------------------
【サンプル】
----------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>サンプル</title>
<style type="text/css">
<!--
ul.hoge {
list-style: none;
margin: 0;
padding: 0;
}
ul.hoge li {
zoom: 100%;
margin-bottom: 10px;
}
ul.hoge li:after {
display: block;
clear: left;
height: 0;
visibility: hidden;
content: "";
}
ul.hoge input {
float: left;
margin: 0;
padding: 0;
text-align: center;
line-height: 100%;
border: none;
color: #fff;
font-size: 12px;
}
ul.hoge input.mlmg-text {
width: 150px;
height: 1em;
padding: 0.5em;
background-color: green;
}
ul.hoge input.mlmg-buttton {
width: 50px;
height: 2em;
background-color: blue;
}
-->
</style>
</head>
<body>
<form method="post" action="#">
<ul class="hoge">
<li><input type="text" class="mlmg-text" name="user_mail" value="上下中央に配置したい" /><input type="button" class="mlmg-buttton" name="join" value="GO" /></li>
<li><input type="text" class="mlmg-text" name="user_mail_resign" value="上に寄っちゃう" /><input type="button" class="mlmg-buttton" name="resign" value="GO" /></li>
</ul>
</form>
</body>
</html>
----------------------------------------------------------------------
ポイントは以下の様な点です。
・inputをulの子要素としてマークアップ(内容を見たところ、送信ボタンのリストの様ですので)。
・inputの余白や行の高さ等を初期化して、textタイプとbuttonタイプのベースのスタイルを揃える。
・inputをfloatで横並びにさせるので、親要素のliで回り込み状態をクリア。
・textタイプとbuttonタイプの高さを揃える。高さは相対的に計算ができる様にemで指定。
buttonタイプの場合は描画領域の高さに対して自動的にセンタリングされるので2emとし、textタイプの場合は要素(valueの値の文字部分)の高さを1emと考え、残りの1emを半分づつ上下paddingとして追加。
いかがでしょうか?
※今回の場合、"vertical-align: middle;"はinputの描画領域(ボックス)とvalueの値の文字部分との位置関係を示すものではないので、実現したいスタイルの為に適切なプロパティではありません。
abrilさま、ありがとうございます
いただいたhtmlで、見事、実現しました!
リストをfloatさせて、かつafterでclearするのですね
専門家さんならではのポイントまで教えていただいて、
質問内容以上のことを、勉強させていただきました。
本当にありがとうございました
No.3
- 回答日時:
ブラウザにはデフォルトでそれぞれ異なるCSSがかかっているので、まずはCSSをリセットしましょう。
/*---------------------------------------------------リセット--*/
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td{
margin:0; padding:0;
}
table{
border-collapse:collapse; border-spacing:0;
}
fieldset, img{
border:0;
}
address, caption, cite, code, dfn, em, strong, th, var{
font-style:normal; font-weight:normal;
}
ol, ul{
list-style:none;
}
caption, th{
text-align:left;
}
h1, h2, h3, h4, h5, h6{
font-size:100%; font-weight:normal;
}
q:before, q:after{
content:”;
}
abbr, acronym{
border:0;
}
/*--------------------------------------------------/リセット--*/
あとは下記を参考にしてください。
/*--------------"form " はこの場合あってもなくても良いので削除--*/
input {
margin-bottom:10px;
color:#fff;
border:none;
font-size:12px;
vertical-align:middle;/*--------------追加--*/
text-align:center;/*------------------追加--*/
}
input.mlmg-text {
width:150px; height:22px;/*-----------変更--*/
background-color:green;
padding-top:8px;/*--------------------変更--*/
/*text-align:center;------------------削除--*/
/*vertical-align:center;--------------削除--*/
}
input.mlmg-buttton {
width:50px; height:30px;
color:#fff; background-color:blue;
/*vertical-align:bottom;--------------削除--*/
}
ありがとうございます!
いま手元で試してみたところ、
height:22px;/*-----------変更--*/
padding-top:8px;/*--------------------変更--*/
の変更だけで、うまく行きました。感謝!
No.1
- 回答日時:
vertical-alignの中央値はmiddleです。
heightとline-heightをem値で指定してはどうでしょう?
この回答への補足
★すみません、なぜか(?)何もせずして、IE6では上下左右中央になっていました。未解決はfirefox3のみとなります。よろしくお願いします。
metametamuさま、さっそくのアドバイスをありがとうございます!
>vertical-alignの中央値はmiddleです。
ぎゃ!おはずかしい…ありがとうございます
けれど vertical-align:middle; も効果ありませんでした。
input type="text"の側のpaddingをとり、
text、button の heightとline-heightを3emにしたところ、
残念ながら、、上下中央にはならず、かつ、textとbuttonの高さが
ズレてしまいました。
(これも意味が分からないのですが、ともにpx指定にし、かつ
textにpaddingを設定すると、高さが合うのです。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP php ログイン 1 2022/11/01 00:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
入力フォームとセレクトボック...
-
widthやheightの数値に単位(px...
-
サイト名を入れ方がわかりませ...
-
css初心者 フレックスボックス...
-
CSSのfloatの回り込み解除について
-
CSSでfloatした要素の高さを100...
-
【スタイルシート?】同行内で...
-
safariでの横並びリスト(List...
-
画像イメージの上下左右、欲し...
-
divで囲まれたpaddingの指定を...
-
<form>タグのプルダウンメニュ...
-
【CSSについて】リストをフロー...
-
初歩的かもしれませんが回り込...
-
ネガティブマージン
-
safariだけ、cssが効きません!
-
FC2ショッピングカート 写真の...
-
CSSでDIVで挟んでいるのに背景...
-
ブロック要素の右下寄せ
-
iPhoneのSafariで動くCSSを書き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSSがなぜかfont-sizeだけ効か...
-
form input テキストを上下中央...
-
【CSS】ヘッダーの高さが不明の...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
余分な縦スクロールバーが出て...
-
W3Cのソースコードの検証サービ...
-
表示倍率を変えるとレイアウト...
-
safariでの横並びリスト(List...
-
<div>と<div>の間の10px程の...
-
border-style:solidで文字がずれる
-
入力フォームとセレクトボック...
-
div内に外部のurlを表示させたい
-
divの中にspanを右寄せにするに...
-
dl,dt,ddタグでdtに対して、row...
-
divで囲まれたpaddingの指定を...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
おすすめ情報