• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSS テキストフィールドの文字入力位置)

CSSテキストフィールドの文字入力位置をカスタマイズする方法

このQ&Aのポイント
  • テキストフィールドの文字を上に表示させるためのCSSプロパティを調整しても、Safariでの表示が思った通りにならない問題について、解決策を教えてください。
  • CSSでテキストフィールドの文字入力位置をカスタマイズする方法を紹介しています。画像を背景に使用している場合、Safariでの表示が正しくならない問題が発生することがあります。
  • テキストフィールドの文字入力位置をカスタマイズしたいが、Safariでの表示が思った通りにならない問題が発生しています。CSSプロパティの調整など、解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答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{}とか、書いてらっしゃる。メンテナンスが、すごく難しい。詳細度というとてもよい手段が用意されているので、それを使えば、もっとスリムに指定できそう。  .

ageha_lie
質問者

お礼

> MMとかYYについては、文字のほうがよいかと、そうすると画像は一種類で済む。ずらせば縦の色(FSTD)の部分は隠せる。 ご指摘のとおり、MM, DD, YYYYを文字に差し替え、画像もひとつにしてみました。 HTMLは<span><input type="text"><br />MM</span>とし、(IEだと改行を入れないと一列に並んでしまったため、改行を入れています。)CSSをいじってみるとうまく表示されました!ありがとうございました!できることならお会いして御礼を言いたいくらいです!!!! それと、idを使っている箇所にはjavascriptを使っています。getElementByIdで。。今思えばクラスでもいいですね; 本当にありがとうございました!

その他の回答 (4)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.5

>(IEだと改行を入れないと一列に並んでしまったため、改行を入れています。)  span{}に、display:block;text-align:center;を追加でよいと思いますが?  差し出がましいですが、私は、 ・HTMLのマークアップが適切なら、デザインのためだけのidやclassは、一切使わないですむ。  例)div div.(class) ul{}    div ul{}        で区別する。 ・詳細度と継承をきちんと利用すると、プロパティの指定は1回ですむ。  例)font-style:などをあちこちで書かない。 ・配置や枠組みのスタイルシートと、色指定のスタイルシートは別シートにする  これって、デザイン変更にとっても便利・・代替スタイルシートを利用できる環境向けにフォントサイズや配置の異なるシートを用意すればよい。  スタイルシートを小さくすることで、ページ読み込みだけでなくメンテナンスが容易になる。後日のメンテナンスって大事ですから。  がんばってください。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答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: それぞれのフィールドは、どのようにデザインするのか?  

ageha_lie
質問者

補足

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ドットコム」を直接入力していただければ実物をご覧頂けます。最初にでてくる年齢バリデーションのフォームがそれです。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

書き漏らしたので 基本は、きちんとHTMLが書けている事 (div内に何でも入れられるが、やはり段落要素は明記すべき) とかけていることと。  CSSはセオリーどおりに記述すること、ブロック要素なら配置を決める。内部で絶対配置をしたければ、親ブロックにはstatic(デフォルト)以外を設定することなど  詳細度によって、div.Text内のpにはクラスやIDは不要--子孫セレクタ--詳細度は(12)。(念のため)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答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>

ageha_lie
質問者

補足

情報が少なくて申し訳ありませんでした。そして width:130px; height:91px; が正しかったです。 このテキストはフォーム内のテキストフィールドなので、HTMLは <form> <input class="text" type="text" /> <input type="submit" value="Submit" /> </form> となっています。 画像の1967とあるのはユーザーが入力する文字で、デフォルトでは空になっています。

関連するQ&A