• ベストアンサー

CSSで見出し(タイトル)行の右端に日付を表示させる正しい方法は?

みなさま初めまして。OKWebコミュニティに初めて登録したMxanaduと申します。 CSSを用いて、見出し(タイトル)行の右端に日付を表示させようと思い、以下のような設定をしています。 [スタイルシートの定義] <STYLE TYPE="TEXT/CSS"> <!-- H4 { PADDING: 5PX; WIDTH: 99%; COLOR: #FFFFFF; BACKGROUND-COLOR: #008080 } SPAN.DATE { FLOAT: RIGHT } --> </STYLE> [HTMLドキュメントへの適用例] <H4>タイトル<SPAN CLASS=DATE>&nbsp;&nbsp;&nbsp;Mon, Aug 8, 2005</SPAN></H4> この方法で、Safari 1.3 (v312)(Mac OS X(10.3.9)付属)とiCab 3.0 Beta 337では意図した通り表示できます。 しかし、IE 5.2.3 (5815.1)(Mac OS X版)では見出しタイトルと日付の行がつぶれてしまいます。(<SPAN></SPAN>を外すとつぶれなくなりますが、日付を右端に表示できません) また、Mozilla系のNetscape 7.1、Mozilla 1.7.11、FireFox 1.0.6J、Camino 0.7JおよびCamino 0.8.4(全てMac OS X版)では見出しタイトル行で日付が改行され、paddingの中に埋もれてしまいます。 Windowsのブラウザでどうなるかは、Windowsマシンを持っていないので分かりません。 意図した表示ができるブラウザが限られてしまうのは、私のCSSの使い方に間違いがあるのでしょうか? それとも、意図した表示ができないブラウザのCSS実装に問題があるのでしょうか? 私のCSSの使い方に間違いがある場合は、正しい方法を教えて戴ければと思います。 以上よろしくお願い致します。<(_ _)>

noname#164148
noname#164148
  • CSS
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • pingu98
  • ベストアンサー率62% (17/27)
回答No.2

CSSのfloatは正しく指定してもブラウザ毎に様々なバグがあり、なかなか統一がとり難いです。 一説には正しくfloatを表示するブラウザは未だ存在しないとさえ言われています。 但し今回の場合は、「floatは本来ボックスに対して適用するものなので、幅の定まっていないblock要素やspan要素に適用すると各ブラウザ独自の解釈で表示される」という事が原因かと思います。 なので、CSSの使い方に間違いがある、、と言えるのかな。 また、幅広いブラウザへ対応させる事を考えると、spanのclass属性値等も漏れなくダブルクォーテイションで囲ったほうが良しです。 そこで代替案ですが、改行された日付をマイナスのマージン指定で一行上に表示させる方法があります。 但しこのままだとタイトルが長くなると日付と重なっちゃったりしますので要注意。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=SHIFT_JIS"> <META HTTP-EQUIV="CONTENT-STYLE-TYPE" CONTENT="TEXT/CSS; CHARSET=SHIFT_JIS"> <TITLE>日付表示のテスト</TITLE> <STYLE TYPE="TEXT/CSS"> <!-- H4 { WIDTH:99%; PADDING:5PX; LINE-HEIGHT:100%; } SPAN.DATE { DISPLAY:BLOCK; TEXT-ALIGN:RIGHT; MARGIN-TOP:-1EM; } --> </STYLE> </HEAD> <BODY> <H4>タイトル<SPAN CLASS="DATE">MON, AUG 8, 2005</SPAN></H4> </BODY> </HTML> floatを使う場合は下記の様な具合ではどうでしょうか。 h4やdivのwidthは状況に合わせて指定します。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN" "HTTP://WWW.W3.ORG/TR/HTML4/LOOSE.DTD"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=SHIFT_JIS"> <META HTTP-EQUIV="CONTENT-STYLE-TYPE" CONTENT="TEXT/CSS; CHARSET=SHIFT_JIS"> <TITLE>日付表示のテスト</TITLE> <STYLE TYPE="TEXT/CSS"> <!-- H4 { WIDTH:300PX; FLOAT:LEFT; MARGIN:0PX; PADDING:0PX; LINE-HEIGHT:100%; } DIV.HEADLINE { PADDING:5PX; LINE-HEIGHT:100%; } --> </STYLE> </HEAD> <BODY> <DIV CLASS="HEADLINE"><H4>タイトル</H4>MON, AUG 8, 2005</DIV> </BODY> </HTML>

noname#164148
質問者

お礼

pingu98さま、こんばんは。 アドバイスに勝手に補足をくっつけて失礼致しました。<(_ _)> アドバイスを戴いた2つのうち、1番目の方を使わせて戴く事にしました。タイトルの長さやフォントサイズを変えてブラウズされた時のタイトルと日付の重なりは、各ブラウザでの表示確認ページに記載する事にします。(フォントサイズはソース側では固定しないつもりです) 2つめのアドバイスにあったH4のマージンとパディングのクリアも応用させて戴きました。 Lucky bag::blogというブログで、各ブラウザ毎に異なるデフォルトスタイルを消してしまう方法があり、pingu98さまの2番目のアドバイスにあったH4の設定は、これに近いもので、1番目と2番目のアドバイスがFireFoxで表示が異なったのは、これが原因と思います。 今回の質問に戻って「floatは本来ボックスに対して適用するもの」というご指摘については「とほほのWWW入門」でも、それらしい説明があったのですが、WDG(ウェブデザイングループ)の説明では全ての要素に適用できるとなっていました。WDGの説明を鵜呑みにしてハマったというのが、今回の顛末かと思います。 今回、pingu98さまのアドバイスを元に、ほとんど無知状態だったCSSの勉強ができました。ありがとうございました。

noname#164148
質問者

補足

pingu98さま、はじめまして。戴いたアドバイスへのお返事遅れて申し訳ありません。 色々教えて戴きありがとうございます。pingu98さまのアドバイスのどちらでも、日付は私の意図した通りの表示ができました。ありがとうございます。 現在、教えて戴いた2つのアドバイスがFireFoxで異なる表示を見せる事と格闘しております。 (日付の問題ではなく、上部のPADDINGスペースが2つのアドバイスの間で異なっています) 初心者ゆえ解決できるか疑問ですが、お礼のお返事は上記の表示の差の原因が分かってから差し上げようと思っております。 以上、勝手ですが、何もコメントしないのは失礼かと思い、補足にて状況報告させて戴きました。 それでは失礼致します。

その他の回答 (3)

  • Questa
  • ベストアンサー率48% (13/27)
回答No.4

ご質問の趣旨から外れますが、position を指定する方法もあります。 h4 { position: relative; width: 99%; background: #008080; padding: 5px; color: #fff; } span.date { position: absolute; top: 5px; right: 5px; } 参考になれば幸いです。

noname#164148
質問者

お礼

Questaさま、はじめまして。 ですが、残念ながら戴いたアドバイスを試しましたところ、IE 5.2.3 (5815.1)(Mac OS X版)で見出しタイトルと日付の行がつぶれてしまいました。Safari 1.3, iCab 3.0 Beta337, FireFox 1.0.6J(すべてMac OS X版)では良好な結果を得る事ができました。 IEがつぶれなければシンプルなCSSの使い方なので利用させて戴きたいところですが、ここに来て欲が出て、できるだけ多くのブラウザで表示ができるようにしたいと思うようになりました。 ご回答ありがとうございました。

  • pingu98
  • ベストアンサー率62% (17/27)
回答No.3

補足、拝見しました。 大事な事を忘れていました^-^; こちらでのテスト環境は、Windows2000です。 で、上部paddingのスペースが異なる件、確認しました。 おそらくpaddingではなくh4のmarginかなぁと思うのですがいかがでしょうか。h1~6やbody要素等々には各ブラウザによってデフォルトのstyleがありまして、例えばフォントとかマージン、パッディング、ラインハイト等が各々決まっています。なので指定しないものについてはデフォルトの値が適用されるんですね。 で、前回の例のfloatを使った方ではh4のmarginを0に指定しているのに対し、前者はh4のmarginを指定していないのでデフォルトの値が適用されてるのかなぁと。IEの場合は両者とも同様のマージンになるかと思いますが、、これは…何ででしょう(笑)。そういう仕様なのかもです(汗)。 そんな訳で検証しやすいソースを作ったのでお試し下さい。 一応、windows2000/Firefox1.0.6 , IE6.0 , Opera8.0 , Netscape7.1でほぼ同一に表示確認とれました。 追加したスタイルは小文字で書きました。 ■ 一行マイナスマージン <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=SHIFT_JIS"> <META HTTP-EQUIV="CONTENT-STYLE-TYPE" CONTENT="TEXT/CSS; CHARSET=SHIFT_JIS"> <TITLE>日付表示テスト/一行マイナスマージン</TITLE> <STYLE TYPE="TEXT/CSS"> <!-- H4 { WIDTH:99%; PADDING:5PX; LINE-HEIGHT:100%; margin:0; } SPAN.DATE { DISPLAY:BLOCK; TEXT-ALIGN:RIGHT; MARGIN-TOP:-1EM; } BODY { background-color:gray; margin:0; padding:0; } H4 { background-color:orange; } SPAN.DATE { border:1px solid red; } --> </STYLE> </HEAD> <BODY> <H4>タイトル<SPAN CLASS="DATE">MON, AUG 8, 2005</SPAN></H4> </BODY> </HTML> ■ float <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=SHIFT_JIS"> <META HTTP-EQUIV="CONTENT-STYLE-TYPE" CONTENT="TEXT/CSS; CHARSET=SHIFT_JIS"> <TITLE>日付表示テスト/FloatLeft</TITLE> <STYLE TYPE="TEXT/CSS"> <!-- H4 { WIDTH:300PX; FLOAT:LEFT; MARGIN:0PX; PADDING:0PX; LINE-HEIGHT:100%; } DIV.HEADLINE { PADDING:5PX; LINE-HEIGHT:100%; } BODY { background-color:gray; margin:0; padding:0; } H4 { background-color:orange; } DIV.HEADLINE { background-color:red; } --> </STYLE> </HEAD> <BODY> <DIV CLASS="HEADLINE"><H4>タイトル</H4>MON, AUG 8, 2005</DIV> </BODY> </HTML> それと、やり方としてはもちろんao_さんのやり方もあって、ただそれぞれ特徴が違ってくるので、実際の使い方に合わせて選べると良いです。色々バグとかあって大変ですけど、とにかく経験と慣れですのでがんばって下さい☆

noname#164148
質問者

お礼

pingu98さま、こんにちは。 質問の趣旨から外れるような事に対して対応して戴きありがとうございます。また、たくさんのブラウザで確認して戴いた事にも感謝致します。 > おそらくpaddingではなくh4のmarginかなぁと思うのですがいかがでしょうか。 私も初めmargin設定での対処を試みました。h4では、あまり目立たないのですが、私は他にh2もページのタイトルとして使っており、これにpingu98さまのANo.2のアドバイスを同様に適用したところ、FireFoxでpadding上部から要素(文字)が飛び出しそうな状況となりました。 > h1~6やbody要素等々には各ブラウザによってデフォルトのstyleがあり…指定しないものにつ > いてはデフォルトの値が適用されるんですね。 ご指摘の通りのようですね。そこで、CSSの先頭に * { MARGIN: 0%; PADDING: 0%; FONT-STYLE: NORMAL; FONT-WEIGHT: NORMAL; } という表記(pingu98さまのアドバイスの応用であり、Lucky bag::blogに書かれていたものです)を加えてみたところ、FireFoxは要素がpaddingの上側に大きくずれる傾向があり、逆にSafariでは若干下側にずれる傾向があることが分かりました。 結果として、上記全要素クリアと各要素でのmarginおよびpaddingの微調整(デフォルトのスタイルが極端でないブラウザでも目立たない程度)で対処することにしました。 > そんな訳で検証しやすいソースを作ったのでお試し下さい。 早速試してみました。その結果、どちらのソースでもOS X版のFireFoxは、要素がpaddingの上側に大きくずれ、意外にもSafariとIEで要素の位置がpaddingの中央に、またiCabでは一行マイナスのケースで若干タイトルと日付の位置にズレが生じる事が分かりました。 > やり方としてはもちろんao_さんのやり方もあって… ご指摘の通りです。私の場合は、どうやらpingu98さまのANo.2の一行マイナスのアドバイスが一番ぴったりな感じがしたということで、ao_さまの方法を否定したつもりはありません。 > 色々バグとかあって大変ですけど、とにかく経験と慣れですのでがんばって下さい☆ ありがとうございます。今回の一件で、CSSと種々のブラウザでの実装の違いについて、かなり勉強することができました。感謝致します。 それでは失礼致します。

  • ao_
  • ベストアンサー率33% (15/45)
回答No.1

h4の中にspanが入っているのでfloatはいらないと思います。 spanに左のpaddingを設定して右端までずらせばいいのではないでしょうか。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>無題ドキュメント</title> <style type="text/css"> <!-- h4 { width: 500px; background-color:#008080;} span { padding-left: 390px; font-weight:normal; font-size:0.7em;} --> </style> </head> <body> <h4>見出し<span>050811</span></h4> </body> </html>

noname#164148
質問者

お礼

ao_さま、はじめまして。 ao_さまのアドバイスを試しましたところ、IEでも、FireFoxでも正常に表示できました。 ただ私の場合、日付文字数が変動するので、spanのpadding-leftの設定が微妙になるようです…。 アドバイスどうもありがとうございました。<(_ _)>

関連するQ&A

  • cssで見出しの両側に文字を表示したい

    css+htmlでWebページを作成しています。 その中で見出し(H3タグ)の両側に、右寄せ左寄せで文字を表示したいのです。 (完成イメージは画像参照)。 ソース全文載せましたが、見出しの下に右寄せと左寄せの文字が、表示されてしまいます。 見出しの両側に表示させるにはどうしたらよいですか? よろしくお願いいたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <title></title> <STYLE TYPE="TEXT/CSS"> <!-- div.heading { width: 450px; background-color: #e0e0e0; border: #e0e0c0 solid; border-width: 1px 1px 2px; margin-left: auto; margin-right: auto; } /* --- 見出し --- */ div.heading h3 { margin: 0; padding: 7px 7px 4px; border-bottom: 4px #9825e1 solid; font-size: 100%; line-height: 100%; text-align: center; } span { float: left; width: 100px; text-align: center; } span.back { float: left; } span.next { float: right; } }--> </STYLE> </head> <body> <!--全体(wrapper) Start--> <div class="all-wrapper"> <div class="main-wrapper"> <div class="heading"> <h3>見出し</h3> <span class="back"><a href="#">BACK</a></span><span class="next"><a href="#">NEXT<aa></span> </div> </div> </div> </body> </html>

    • ベストアンサー
    • HTML
  • 見出し(hr)の表示方法について

    <h1>を使用して見出しを表示のさせ方で質問があります。 現在 html <h1 align="center" >見出し</h1> CSS h1{ margin:0; align:center width 100%; font-style:normal; font-size:22px; background: #777788; color:#eeeeff; line-height:1em; padding: 7px 7px 5px; text-align:center; } を使用して見出し表示させた場合 画面幅全体に指定した背景色で見出しが表示されます。 それを 画面の中心部分に指定した幅、背景色、見出しを表示させたいのですが どうすればいいのですか? 文章だけでわかりにくいかもしれませんが 回答お願いします。

    • ベストアンサー
    • HTML
  • html・cssで日付をキレイに揃えたい

    はじめまして。 html・cssの初心者なのですが、分からないことが出てきましたので、投稿いたしました。 (前提) 下記のように日付を縦に並べたいと思っています。 (縦の年、月、日を揃えたい) 2010年11月 8日        30日      12月 1日 ※重複している年や月は省略して表示したい ※月や日が1桁 or 2桁でも月、日を縦に揃えたい (困っていること) &nbsp;でスペースを調整しようとしたのですが、 微妙にズレてしまうのと、PCの環境(ブラウザ?)によってスペースの表示が異なってしまうようです。 (教えてほしいこと) このような場合はCSSなどで指定すればキレイに揃うものなのでしょうか。 また、可能な場合はどのような指定をすればよいのでしょうか。 「こんなこと」と思われるかもしれませんが、 なにぶん初心者ですので分かりやすく教えていただけると助かります。

  • 見出しの複数行の対応について

    見出しが複数行になった場合の対処法(自動で)をおしえてください  | | AAAAAAAAAAAAAAAAAAAAAA |__________________________ 上記のようなL字?の見出しがあります。(本来は実線) これが複数行になると 下線の下に2行目が来てしまいます。 これを | | AAAAAAAAAAAAAAAAAAAAAA | AAAAAAAAAAAAAAAAAAAAAA |__________________________ とするにはどうすれば良いのでしょうか。 ここのコードは HTML <h3 id="item-2" class="ct_sltext">AAAAAAAAAAAAAAAAAAAA‥‥</h3> CSS .content h2, .content h3 { clear:both; font-weight:normal; margin:0; padding:0; } .content h3 { background:transparent url(../images/midasi_bar.gif) no-repeat scroll left 4px; height:40px; margin-bottom:10px; padding:10px 0 5px; } .content h3.ct_sltext { color: #カラー; font-size:17pt; font-style:italic; padding:0 0 5px 40px; } こんな感じになってます。

    • ベストアンサー
    • HTML
  • 見出しーCSS表示方法についてお願い致します

       お世話になっております。  以下のサイトが便利だと思い、リボンタイプの”見出し”の生成を試みました。 http://web-dou.com/tool/css_gen_h.php [CSSコード] h6.{   sample2     position: relative;     color: #ffffff ;     background: #FF0000;     font-size: 16pt ;     line-height: 1;     margin: 20px -10px 20px -10px;     padding: 10px 5px 10px 20px;     box-shadow:1px 3px 7px 0px  #663300 ;     border-top:3px solid #ff6347; } .sample2:after, sample2:before {     content: "";     position: absolute;     top: 100%;     height: 100;     width: 700;     border: 5px solid transparent;     border-top: 5px solid #333; } .sample2:after {     left: 0;     border-right: 5px solid #333; } .sample2:before {     right: 0;     border-left: 5px solid #333; } [HTMLコード] <h6 class="sample2">メニュー4</h6>  ですが、ブラウザーで開いてみますと、  メニュー4  とだけ、表示されるのみで、目的のリボン型見出しは、表示されな状況にあります。  なお、ブラウザーは、Safari バージョン 5.1.10 を使用しております。  何が問題なのか、もしくは、解決策をご教示いただければ、幸いです。

    • ベストアンサー
    • CSS
  • CSSでページ毎に見出し画像を変更したい

    こんにちは。 今CSSの勉強をしながらサイトを作っています。 まだまだ基本知識くらいしかなく応用出来ず困っています。 各ページのタイトル(見出し<h●>)を背景画像に設定して表示していますが、タイトルがページ毎に違うため1ページ毎にCSSを作っています。各ページの見出し画像を一つのCSSまとめて記述する方法はないでしょうか? よろしくお願い致します。

  • tableの外枠をCSSで表示させない方法

    HTMLで作ったテーブルの外枠の縦線をCSSで表示させないようにしたいのですが可能でしょうか? HTMLはさわらずにできる限りCSSでやりたいと思い、いろいろ試してみましたがうまくいきませんでした。 線種はsolidを使いたいです。 よろしくお願いいたします。 <html> <head> <title>css table</title> <style type="text/css"> <!-- table.sample { width:550px; height:auto; border:solid 1px; border-collapse:collapse; border-left:none; border-right:none; } .sample th { width:100px; border:solid 1px; } .sample tr { border:solid 1px; } .sample td { border:solid 1px; } --> </style> </head> <body> <table class="sample" frame="hsides"> <tr> <th scope="row">&nbsp;</th> <td>&nbsp;</td> <td></td> <td></td> </tr> <tr> <th scope="row">&nbsp;</th> <td>&nbsp;</td> <td></td> <td></td> </tr> <tr> <th scope="row">&nbsp;</th> <td>&nbsp;</td> <td></td> <td></td> </tr> <tr> <th scope="row">&nbsp;</th> <td>&nbsp;</td> <td></td> <td></td> </tr> <tr> <th scope="row">&nbsp;</th> <td>&nbsp;</td> <td></td> <td></td> </tr> </table> </body> </html>

    • ベストアンサー
    • CSS
  • 【CSS】h1を画像にしたいのですが、Dreamweaver上では表示されてもプレビューで消えてしまいます!

    h1にテキストをいれていますが、それを背景画像で見せたいため、display:none;で見えなくしています。 背景画像logo.pngは表示させたいのですが、Dreamweaver上では表示されてもプレビューでどのブラウザでも消えてしまいます! どなたかよろしくおねがいします! 【CSS】 #logo{ margin:40px 50px 0px 0px; padding:0px; background:url(images/logo.png) no-repeat; } h1{margin:0px;   padding;0px;} h1 span{display:none;} h2{margin:0px 50px 0px 0px;   padding:0px; } h2 span{display:none;} --- 【HTML】 <h1 id="logo"><span>Ethiopa</span></h1> <h2><span>Ethiopa Blog</span></h2>

    • ベストアンサー
    • HTML
  • リセットCSSの一般的な方法

    Webサイトを作成しているのですが、ブラウザごとの差異を無くすリセットCSSというのを知りました。 調べてみたら、いくつか方法があるようですが、一般的にどのような方法でリセットCSSを行えば良いのでしょうか? Webサイトのデザインによって、リセットCSSの方法は変えたりするものなのでしょうか? また、私は、まだブラウザごとで、どのセレクタとプロパティで差異が出るのか把握しておりませんが、リセットCSSをする場合、必ずリセットするべきセレクタとプロパティはありますか? dic、span、pのmarginやpaddingなど、他にありますか?

    • ベストアンサー
    • CSS
  • CSSを用いてリストを横並びにして、それを2行にまたがせる方法

    CSS を用いて、リストを横並びにしたのはいいのですが、そのリストの数が多く、2行にまたがらざるを得ません。 Firefox ですと枠内に入りきらないリストは自動的に改行して表示してくれるのですが、IE ですと入りきらないリストを右端に無理矢理表示(縦に伸びていきます)し、そのリストの次から2行目と移り変わります。 -- HTML -- <div id=content> <ul> <li><a href="">AAA</a></li> <li><a href="">BBB</a></li> <li><a href="">CCC</a></li> <li><a href="">DDD</a></li> <li><a href="">EEE</a></li> <li><a href="">FFF</a></li> </ul> </div> -- CSS -- #content ul { padding: 0; margin: 0; list-style-type: none; } #content li { float: left; display: block; padding: 2px 10px 0 5px; margin: 0; list-style-type: none; } 上記の例ですとEEEが1行目に入りきらない場合、Firefox では、EEEが2行目へとなって後が続きます。 IEですと EEE のうち E 1文字だけでも入ると残りの2文字は下方へずれて行きます。そして、FFFから2行目となります。 このIEでの不具合で良い解決法があれば、ご教授願います。 よろしくお願い致します。

    • ベストアンサー
    • HTML