• 締切済み

上付き文字と下付き文字を同時に左揃えにできますか.

上付き文字と下付き文字を同時に使い, それらの左端位置を揃える方法はありますか. ご存知でしたら教えてください. よろしくお願いします. 次のような回答はご遠慮願います. ・テーブルを使う ・後の方をposition: relative;にしleftを指定する(汎用性に欠けます) ・画像を使う

  • HTML
  • 回答数5
  • ありがとう数5

みんなの回答

回答No.5

何がしたいのかわかりませんでしたが、No.3の画像でわかりました。 数式はMathMLか画像で、、、としか言いようがないと思います。 sub{margin-left: -1ex} とか、(未検証です) 2文字なら-2exとか、HTMLを書くときに字数に合わせてインラインスタイルシートで書くのがベターかと思います。 SVG、、、まあ、画像の一種ですが。 対応ブラウザなら<object>か<img>で表示できますし、テキストエディタで編集も可能です。 <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg width="30px" height="30px" version="1.1" xmlns="http://www.w3.org/2000/svg"> <text x="4px" y="18px" style="fill:rgb(0,0,0);font-family:serif;font-size:10pt;text-anchor:start">X</text> <text x="15px" y="12px" style="fill:rgb(0,0,0);font-family:serif;font-size:10pt;text-anchor:start">2</text> <text x="15px" y="24px" style="fill:rgb(0,0,0);font-family:serif;font-size:10pt;text-anchor:start">0</text> </svg>

KanjiTalk
質問者

お礼

SVG(IE用に+VMLですね)を使う方法は余計面倒になりますね…(測る場所が増える) よく考えるとleftを指定すると元の位置に空白が残ってしまうのでマージンを指定するのが無難ですね. 最終手段ですがoffsetWidthとかで前の要素(補足に書いた例の場合sub)の幅を取得して,後の要素の(sup)マージンを動的に指定するしかないでしょうか…

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

>毎回添字の幅を計算して指定しないといけないという意味です  なら無理です。  XML + XSLT で字数を数えてなんて無理だと思います。  HTMLを入力する時点で、<sub>の文字数はわかるので、その時点でrelattveのleftを指定するしかないでしょう。  それか、もうTexで書くしか・・・

KanjiTalk
質問者

お礼

>それか、もうTexで書くしか… そうなんですよね,普段は数式をMathJaxで書いているのですが, (ちなみに MathJax.CallBack.Queue( ["Post", MathJax.Hub.Startup.signal, "Process"], ["Process", MathJax.Hub], ["Post", MathJax.Hub.Startup.signal, "End"] ).Process(); すれば後から追加した<script type="math/tex">をパースできます 余計なお世話ですね,すみません) HTMLでシンプルに書いた方がいい場合もあるのです(説明は割愛).

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

Texだと、$X_0^2$ですね。 MathMLで書くというのが本来でしょうね。 MathMLについては調べてください。 ここでは、HTMLでの方法に限定して説明 ★後の方をposition: relative;にしleftを指定する(汎用性に欠けます)  欠けません。というか必要です。  添え字の幅が決まっていないため、その幅を指定しないと揃いません。  もちろん、項自体をインラインブロックにして、内部でabsoluteを使うことも可能ですが、項の主たる文字(ここでいう x )の字数の関係でその文字をずらして、ずらした分前に寄せるという複雑でもっと汎用性の欠けるものになります。 <p class="math"> x<sub>0</sub><sup style="left:-0.5em;">2</sup>=y <!-- ここでleft:-0.5emで、その前のsub内の文字数に合わせる --> </p> スタイルシート <style type="text/css"> <!-- html,body{padding:0px;margin:0px;} p.math{font-size:1.5em;padding-left: 5em;} p.math sub{font-size:0.6em;} p.math sup{font-size:0.6em;position:relative;top:-0.2em;} --> </style>

KanjiTalk
質問者

お礼

画像まで付けていただき,ありがとうございますm(__)m

KanjiTalk
質問者

補足

すみません,汎用性に欠けるというのは,毎回添字の幅を計算して指定しないといけないという意味です(プロポーショナルフォントでは単純にemでは計算できません). MathMLは知っているのですが,ブラウザごとに対応状況が異なるので…

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

そもそもどういうマークアップなのですか? たとえば、数学とか化学とか・・・

KanjiTalk
質問者

補足

すみません,説明が足りなかったかもしれません. 例えば,x<sub>0</sub><sup>2</sup>などです. これで0と2の左端位置を揃えたいんです…無理でしょうか. (subなどは非推奨だった気がするので,spanタグをCSSでいじったものと読み替えてください)

  • LHS07
  • ベストアンサー率22% (510/2221)
回答No.1

Wordで数式エディターを使います。

KanjiTalk
質問者

補足

えっと…そういう意味ではないんですよ. ちなみに数式エディタを使うのは「画像を使う」に該当します(確かWordでHTMLで書き出すと,IEではVML,それ以外のブラウザでは代替画像で表示されるはずです)

関連するQ&A

  • floatした画像の下揃えについて

    こんにちは。 HTMLとCSSで添付した画像のようなレイアウトを組みたいと考えているのですが、 CSSでfloat:rightを指定した画像を下揃えにする方法が分からず、詰まっています。 position:absolute;等で画像を絶対位置指定する方法なども試みてみたのですが、 文章が上手く回りこまないため、何か良い方法など知っておりましたら教えてください。

    • ベストアンサー
    • HTML
  • left (right) プロパティについて

    次のように、ベース画像の上に別の画像をのせて表示させています。 <style> <!-- .box { position:relative; left:50%; } .baseimage { position:relative; z-index:1; left:-225px; } .image1 { position:relative; z-index:2; left:-100px; top:-200px; } .image2 { position:relative; z-index:2; left:-100px; top:-300px; } --> </style> <div class="box"> <img src="baseimage.jpg" class="baseimage"> <img src="image1.jpg" width="30" height="30" class="image1"> <img src="image2.jpg" width="30" height="30" class="image2"> </div> このとき、image1 と image2 の左端からの距離が一致せず、ずれてしまいます。 それは何故なのでしょうか? コーディングに問題があるのでしょうか? お教えいただけると幸いです。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • tableの位置の設定&既定文字を隠す

    HTML&CSS初心者です。 既定文字を消せないので、同じ色のtableを作成し、上に重ねて隠そうと思ったのですが、既定文字の位置にtableを移動すると、他に指定して動かしている既定の下部のtableが崩れます。 修正箇所、または違う方法があればアドバイスよろしくお願いします。 <table style="position:relative; margin-top:-1910px; margin-left:-2px;"> <table width="200" border="0" cellspacing="1" cellpadding="1"> <tr><td> <font style="background:ffffff"> <font size="3" color="0000ff">こんにちは</font></font><br /> </td></tr> </table> </table>

    • ベストアンサー
    • HTML
  • テーブルでこんなときはどっちの方がいい?

    今、ホームページを作っているのですが、 疑問が出たので、質問させていただきます。 今、テーブルを使ってとても複雑なものを作っているのですが、 縦横10段ぐらいのセルがあって、 とても複雑にセル同士をつないでいます。 テーブルを使ったわけは、 これもまた複雑な外枠にたくさんの画像を使うからです。 そこで、疑問なのですが、 それでしたら、複雑な外枠の画像をCSSの position:relative で位置を指定してしまいたいのですが、 どうでしょうか? ページの重さの面から見て、 どちらの方が軽くなるでしょうか? また、relativeタグで指定したときに デメリットはありますか? ご回答おねがいします。

  • テーブルを使わずにコーディングをしたい

    添付の画像のようなページを テーブルを使わずdivだけで作成することは 可能でしょうか? 青のしかく、黄色のしかくなどは 一枚の画像として背景で指定して プルダウンのタブをそれぞれの四角の 下に配置したいのですが 場所もバラバラなので困っています。 position:absolute; などを使っても、 サイトのCSSが複雑で どこかでposition:relative;を使っているようで 位置がブラウザによって変わってしまったり 全画面表示の時の位置と 縮小した画面の時では場所が全然違います。 何か方法をご存知の方いらっしゃいましたら 教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • positionについて下記の認識で正しいでしょう

    positionについて下記の認識で正しいでしょうか? ・relativeは動かしたい要素自体にpositionプロパティをつける。親要素にpositionプロパティはいらない。 { position: relative; top:100px; left:10px } ・absolute; 絶対。 親要素の背景 { width: 100%; position: relative; background: url(../img01.jpg) no-repeat left top; } 子要素の動かしたい要素 .box.box02 p{ position: absolute; left: 0; top: 0; } _______________ ・absoluteは、親要素も何も関係なしにブラウザ上の上から何PX左から何PXと指定して、要素を配置でできる。 ただし例外として、 親ボックスにpositionプロパティのstatic以外の値が指定されている場合には、親ボックスの左上が基準位置となります。 親ボックスにpositionプロパティのstatic(初期値)以外の値が指定されていない場合には、ウィンドウ全体の左上が基準位置となります。(個人的に単独で使う事はほぼないです) ・relativeは、親要素から、何PX左から何PXと指定して、要素を配置でできる 補足また、まとめて指定する方法はマージンのようにないのでしょうか?

    • ベストアンサー
    • CSS
  • top プロパティについて

    昨日「left (right) プロパティについて」という質問をした者です。 質問とご回答は次のとおりです。 >次のように、ベース画像の上に別の画像をのせて表示させています。 ><style> ><!-- > .box { position:relative; left:50%; } > .baseimage { position:relative; z-index:1; left:-225px; } > .image1 { position:relative; z-index:2; left:-100px; top:-200px; } > .image2 { position:relative; z-index:2; left:-100px; top:-300px; } > --> > </style> ><div class="box"> > <img src="baseimage.jpg" class="baseimage"> > <img src="image1.jpg" width="30" height="30" class="image1"> > <img src="image2.jpg" width="30" height="30" class="image2"> > </div> >このとき、image1 と image2 の左端からの距離が一致せず、ずれてしまいます。 > それは何故なのでしょうか? > コーディングに問題があるのでしょうか? >お教えいただけると幸いです。よろしくお願いいたします。 (以下ご回答) >imgがインライン要素であることが原因でずれてしまっているのでは、と思います。 > スタイルに以下を追加してみてください。 > img{ > display:block; > } ご回答いただいたとおりにすると、横方向にはずれなくなったのですが、 今度は、top プロパティを同じにした画像が縦方向にずれるようになってしまいました。 どちらもずれなくなるようにする方法がありましたら、 ご教示いただきたく、よろしくお願いいたします。

  • 配置方法してするpositionの相対位値。

    positionの相対位置の意味がわかりません。 position:relative; top:30px; left:50px; とした場合。 どこからの距離を言っているのでしょうか? position:absolute; top:30px; left:40px; にすると、画面の上から30ピクセル、左から40ピクセルの位置ですよね? これを position:relative;にすると、どこからどこまでの距離なのかがわからないのです。 よろしくお願いします。 また、HTMLなどによく出てくる「相対」という言葉がいまいちわかりません。 もちろん「絶対」という言葉もわからないのですが・・・。

    • 締切済み
    • CSS
  • 図形内の文字位置を左にできるだけ詰めたい

    ワード2010を使っておりますが、図形内の文字位置を可能な限り左側にしたいのですが、どうしても左端から2文字分ぐらい間隔が空いてしまいます。 ネットで調べても当該図形を選択して、ホーム→段落から「文字列を左に揃える」のコマンドをクリックする指定の仕方しか見つからなかったのですが、他に方法はないのでしょうか。 どなかたご教授願います。

  • positionについて

    positionについて教えてください box内にbox2をpositionで配置したいのですが子要素のboxに指定するpositionはrelativeとabsoluteどちらがいいですか? また、子要素のboxにrelativeを指定した場合とabsoluteを指定した場合の表示の違いはありますか? #box { position: relative; } #box2 { position: relative; top :50px; left: 100px; width: 100px ; height: 100px ; background-color: #F90; }

    • ベストアンサー
    • CSS

専門家に質問してみよう