フォーム内テキストフィールドの文字入力位置について質問です。
テキストフィールドに背景画像を使っているのですが、文字を入力する時の文字位置をカスタマイズしたいのです。添付している画像の半透明な四角とYYYYの文字までが画像です。現在フィールドの真ん中に表示されている入力文字を上に(20pxくらい)表示させたいです。
Firefox, IEでは完璧な位置で表示されるのですが、なぜかSafariだけ画像のような位置に表示されてしまいます。Sarafiのみのハックを使っていろいろ試しているのですが、なかなか思った通りに表示されません。
使っているCSS:
.text {
background: url(images/form_text.png) no-repeat 0 0;
width:74px;
border:0 none;
height:91px;
margin-bottom:15px;
padding:3px 0 0 10px;
}
下記の値を調節してみました:
line-height
padding
vertical-align
height
が、全て変化ありませんでした。
なにか案がありましたら教えてください。
No.4ベストアンサー
- 回答日時:
なるほどね。
>padding-left:10px; を入れてるので
ソースを見て、firebugを使って色々代えてみたのですが、Safari独特のpadding/margin設定を無視する部分は、この方法では駄目ですね。
逆にSafariに合わせてのほうがよいかもしれません。
海外の情報も検索してみたのですが、はっきり言って無理と言う結論です。そもそもSafariでも、この部分はバージョン(1,2と3)によってずいぶん違うみたいです。
<span><input type="text"></span>で囲んでspanを指定したほうがよさそうです。
>widthは画像によって変わります。
MMとかYYについては、文字のほうがよいかと、そうすると画像は一種類で済む。ずらせば縦の色(FSTD)の部分は隠せる。
そうすると、配置もうまく設定できそう。
<span><input type="text">MM</span>
として、
div#restriction{
position:relative;
}
div#restriction span{
float:left;
width:****;
}
やたらとidが多いようですが、デザインのためですか?
#restriction input{}
ですむところを
#month, #day, #year{}とか、書いてらっしゃる。メンテナンスが、すごく難しい。詳細度というとてもよい手段が用意されているので、それを使えば、もっとスリムに指定できそう。
.
> MMとかYYについては、文字のほうがよいかと、そうすると画像は一種類で済む。ずらせば縦の色(FSTD)の部分は隠せる。
ご指摘のとおり、MM, DD, YYYYを文字に差し替え、画像もひとつにしてみました。
HTMLは<span><input type="text"><br />MM</span>とし、(IEだと改行を入れないと一列に並んでしまったため、改行を入れています。)CSSをいじってみるとうまく表示されました!ありがとうございました!できることならお会いして御礼を言いたいくらいです!!!!
それと、idを使っている箇所にはjavascriptを使っています。getElementByIdで。。今思えばクラスでもいいですね;
本当にありがとうございました!
No.5
- 回答日時:
>(IEだと改行を入れないと一列に並んでしまったため、改行を入れています。
)span{}に、display:block;text-align:center;を追加でよいと思いますが?
差し出がましいですが、私は、
・HTMLのマークアップが適切なら、デザインのためだけのidやclassは、一切使わないですむ。
例)div div.(class) ul{}
div ul{} で区別する。
・詳細度と継承をきちんと利用すると、プロパティの指定は1回ですむ。
例)font-style:などをあちこちで書かない。
・配置や枠組みのスタイルシートと、色指定のスタイルシートは別シートにする
これって、デザイン変更にとっても便利・・代替スタイルシートを利用できる環境向けにフォントサイズや配置の異なるシートを用意すればよい。
スタイルシートを小さくすることで、ページ読み込みだけでなくメンテナンスが容易になる。後日のメンテナンスって大事ですから。
がんばってください。
No.3
- 回答日時:
>width:130px; height:91px;
>が正しかったです。
>このテキストはフォーム内のテキストフィールドなので、HTMLは
><form>
><input class="text" type="text" />
><input type="submit" value="Submit" />
></form>
それじゃ対処の方法はまるで違う。<form>の中の、テキスト入力コントロール<input type="text">ですね。
Q: 単純にform内には、二つのコントロールしかないのか?
Q: 背景画像の実サイズは?
Q: text入力コントロールのサイズは?
Q: それぞれのフィールドは、どのようにデザインするのか?
この回答への補足
Q: 単純にform内には、二つのコントロールしかないのか?
全てを書くと
<form>
<input id="month" name="month" type="text" maxlength=2 />
<input id="day" name="day" type="text" maxlength=2 />
<input id="year" name="year" type="text" maxlength=4 />
<!-- ↑これを例にあげました -->
<br />
<select id="province" name="province">
<option value="BC">British Columbia</option>
<option value="AB" >Alberta</option>
<!-- ...いくつかオプションがあります -->
</select>
<input class="enter" width="119px" type="image" height="34px" src="images/btn_enter.png" />
</form>
Q: 背景画像の実サイズは?
width: 140px, height: 91pxです。
padding-left:10px; を入れてるのでCSSでは10pxほど引いてwidth:130pxとしています。
Q: text入力コントロールのサイズは?
?文字サイズのことでしょうか??
Q: それぞれのフィールドは、どのようにデザインするのか?
各フィールドのidによって違う背景があり、widthは画像によって変わります。(heightは共通です。)
ワケあってURLは載せられないので「okspringドットコム」を直接入力していただければ実物をご覧頂けます。最初にでてくる年齢バリデーションのフォームがそれです。
No.2
- 回答日時:
書き漏らしたので
基本は、きちんとHTMLが書けている事
(div内に何でも入れられるが、やはり段落要素は明記すべき)
とかけていることと。
CSSはセオリーどおりに記述すること、ブロック要素なら配置を決める。内部で絶対配置をしたければ、親ブロックにはstatic(デフォルト)以外を設定することなど
詳細度によって、div.Text内のpにはクラスやIDは不要--子孫セレクタ--詳細度は(12)。(念のため)
No.1
- 回答日時:
画像サイズや、挿入したい文字列の情報がないため、あくまで推測でしか提示しない。
なお、画像サイズ、W91 H74 として(提示のCSSは逆?)
下記サンプルては、読みやすいためにタブを全角スペースに変換してあるので、テストするときは戻すこと。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>Untitled</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
<!--
div.Text {
position:relative; /* これでこのブロック内でabsoluteが使える */
margin-left:auto; /* とりあえずセンターに配置してみる */
margin-right:auto;
background: url(images/form_text.png) no-repeat 50% 50% rgb(0,60,60);
width:91px;
border: none;
height:74px;
margin-bottom:15px;
padding:0px;
}
div.Text p{ /* .Text内のpのみに適用 */
font-weight: bold;
color: rgb(255,255,0);
margin: 0px;
padding:0px;
position:absolute;
top: 52px; /* 1951の文字の下線あたり */
width:100%;
text-align:center;
}
-->
</style>
</head>
<body>
<h1>title</h1>
<h2>subTitle</h2>
<div class="abstract">
<p>
</p>
</div>
<div class="Text">
<p>YYYY</p><!-- 本来段落要素だよ。 -->
</div>
</body>
</html>
この回答への補足
情報が少なくて申し訳ありませんでした。そして
width:130px; height:91px;
が正しかったです。
このテキストはフォーム内のテキストフィールドなので、HTMLは
<form>
<input class="text" type="text" />
<input type="submit" value="Submit" />
</form>
となっています。
画像の1967とあるのはユーザーが入力する文字で、デフォルトでは空になっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- その他(ブログ) シーサーブログのタイトル文字位置とブログ説明文字位置の変更方法 2 2022/09/22 20:55
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS 検索窓とcssハックについて 3 2022/04/22 12:21
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
CSS、width100%でもできる余白
-
【CSSについて】リストをフロー...
-
HTMLのiframeの入れ子について
-
【HTML】【CSS】【Swiper】 元...
-
CSSでボックスのheightが0になる
-
定義リスト dl dd dt
-
テーブル内の文字が揃わない
-
ヘッダーの高さが合わない
-
定義リストに下線をつけたいと...
-
divで囲まれたpaddingの指定を...
-
div内に外部のurlを表示させたい
-
定義リストで先頭にアイコン
-
外側のdivの高さを入れ子のdiv...
-
デスクトップ用のWEBサイトをス...
-
透明divの下に長い余白ができて...
-
背景が下まで表示されないんです。
-
Webサイトretinaディスプレイのcss
-
枠線でメイン部分を囲み、フッ...
-
CSS リンクを枠で囲み背景色を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
表示倍率を変えるとレイアウト...
-
CSSがなぜかfont-sizeだけ効か...
-
CSS、width100%でもできる余白
-
W3Cのソースコードの検証サービ...
-
CSS:animation開始位置の設定
-
CSSで指定した背景画像にリンク...
-
<div>と<div>の間の10px程の...
-
余分な縦スクロールバーが出て...
-
CSSでボックスのheightが0になる
-
【CSS】ヘッダーの高さが不明の...
-
スクロールボックスを中央に配...
-
li 黒丸含んで移動する方法
-
border-style:solidで文字がずれる
-
【HTML&CSS】フッター下部の余...
-
Media Queries 4 で 非推奨とな...
-
初心者html・CSS ウィンドウを...
おすすめ情報