• ベストアンサー

html <li>の中の文字一部に色を付けたい

html内でリストを使っています。 一覧の中で一部にだけ文字色を変えたいので、以下のように書いてみました。 <ul> <font color=red><li>AAA</li></font> <li>BBB</li> <li>CCC</li> </ul> ですが、反映されませんでした。 以前、リストの中はタグがあまり使えないと教えていただいたのですが、色も染められないのでしょうか? 変えたい場合は、どのようにすればよいでしょう。 方法をご存じの方は、是非お教えください。 宜しくお願いします。

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1306/1779)
回答No.2

HTMLタグの要素は外側から順に適用されていきます。なので… ・<span style="color:red;"><li>あああ</li></span> ~だと、まず<span>が適用され、その後に<li>の要素が上書き適用されます。もし何かフォント色などに関する設定が<li>になされていた場合、いくら<span>で何かを必死に適用させようとしても、最終的に<li>の設定が勝ってしまいます。 ・<li><span style="color:red;">あああ</span></li> ~この様にすれば、同じ理由で最終的に文書に適用されるのが<span>の要素になるので、色などを自由にコントロール可能になります。 この法則はHTML全般に言える事なので、良く覚えて置いて下さい。 P.S. <font>タグは最近は非推奨になったので、同様の効果を持つ <span style="color:red;"> で置き換えてみました。

6096
質問者

お礼

ご回答いただいて、ありがとうございました。 現在は非推奨だったんですね。 そんなこととは露知らず、初心者質問でお恥ずかしい限りでした…。 外側から順に適用されるんですね。 <span style>というタグも教えてくださって助かりました。 非常に参考になりました。ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

基本中の基本ですが、インライン要素とブロック要素をしっかり理解してください。 <font></font>はインライン要素で、中にブロック要素は含むことは出来ません。 <li></li>はブロック要素でしかも内部にインライン要素もブロック要素も含むことが出来ますから、 <font><li></li></font> は書けませんが <li><font></font></li> はOKです。  とっても重要なことなのでしっかりと・・・ ★内部的には、ulの内部のliの前に何かがあれば、ブラウザはulにはliしか含むことが出来ないので、 <ul>  <li><font></font></li>  <li>テキスト</li>  <li>?</font><?li> </ul>  と解釈する場合があります。ブラウザによって異なる。この場合テキストには色はつかない ★fontは、使わないことが強く推奨されています。  いずれにしても、仕様書だけはいつもチェックするようにしましょう。これらのことは皆書いてあります。はじめはとっつきにくいですが、それはあやふやな記述を避けるためにそうなっているだけ、慣れれば意味がわかるようになります。 HTML 4.01仕様書 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/cover.html ) <!ELEMENT UL - - (LI)+ -- unordered list -->  ↑この意味は、要素 ULは、LIを一個以上(+)のみ含みうる 順不同リスト <!ELEMENT LI - O (%flow;)* -- list item -->  ↑この意味は、要素LIは、%flow(何でも)をゼロ個以上(*) 含む箇条書きの項目  10.2 順不同リスト (UL)、序列リスト (OL)、及びリスト項目(LI) ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/lists.html#h-10.2 ) 【引用】____________ここから 15.2.2 フォント変更要素: FONT要素とBASEFONT要素 FONT要素とBASEFONT要素は推奨しない。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Alignment, font styles, and horizontal rules in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/graphics.html#edef-FONT )]より  HTMLを勉強し始めたら、必ずHTML4.01strictだけを学び、書いては Another HTML-lint gateway ( http://openlab.ring.gr.jp/k16/htmllint/htmllint.html ) でチェックするとよいです。

6096
質問者

お礼

ご回答いただいて、ありがとうございました。 ご丁寧にurlも教えてくださって…。 どれも知らないサイトで、とても参考になります。 ちょっと読解をすらすらというわけにはいきませんが、 時間をかけてゆっくり読んでいきたいと思います。 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

<li><font color="red">AAA</font></li> の順序にしない理由は?

6096
質問者

お礼

ご回答いただいて、ありがとうございます。 一度そちらで書いてみたのですが、ブラウザプレビューで上手く反映されなかったので外側に付けてみたんです。 ですが、今後は<span>を使ってみることにします。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • css の float:left; を li 適用

    css の float:left; を li に適用すると <ul>   <li>AAA</li>   <li>BBB</li>   <li>CCC</li> </ul> ●AAA●BBB●CCC のような横並びにできます <ul>   <li>AAA</li>   <li>BBB     <ul>       <li>aaa</li>       <li>bbb</li>     </ul>   </li>   <li>CCC</li> </ul> このように入れ子の場合 ●AAA●BBB     ●CCC      □aaa□bbb のように表示されます これを ●AAA●BBB●CCC      □aaa□bbb のように、一段目に間を空けないで表示する CSS の設定を教えてください よろしく、お願いします

  • liにスタイルシートが上手くいかない

    こんにちは。 次のコードが上手く表示されず困っています。 <ul> <li style="border:1px solid red">aaa</li> <ul> <li>bbb</li> </ul> </ul> この場合aaaにのみ赤い罫線がひかれると思うのですが、bbbまでくくった形で罫線がひかれます。 liはhtmlで省略可能なためこのようになるのでしょうか。それとも書き方を間違っているのでしょうか。

    • ベストアンサー
    • HTML
  • floatでカラム落ちを防ぎたい

    少し長いですがお付き合いよろしくお願いいたします。 <style type="text/css"><!-- body { text-align:center; } #all { width:730px; margin-left:auto; margin-right:auto;; text-align:left; background-color:#33ffcc} #left{width:50%; float:left;} #right{width:50%; float:left;} --></style> </head> <body> <div id="all"> <h1>見出し1</h1> <div id="left"> <h2>AAA</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> <h2>BBB</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> <h2>CCC</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> </div> <div id="right"> <h2>AAA</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> <h2>BBB</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> <h2>CCC</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> <h2>DDD</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> <h2>EEE</h2> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> </div> </div> このように記述するとFirefoxではallで指定した背景色がh1にしか反映されず、left、rightの高さのずれている部分には反映されません。 この記述から、スタイルシートのrightに何も指定しないようにすると、allに指定した背景色はきちんと反映されるんですが、今度はleftよりrightのコンテンツが多いためカラム落ちしてしまいます。 どのように、記述すれば背景色がうまく反映され、カラム落ちを起こさずに済むのでしょうか? 条件はFirefox,Opera,IE6でほぼ同じレイアウトが表現でき、tableやoverflowは使わない事です。

    • ベストアンサー
    • CSS
  • <li>の横並びで、<span>のところで改行

    <li>をfloatで横並びにした場合、IE7のみ、<span>のところで改行されてしまい、最後の部分だけ以下のようになります。 ddd ( xx x ) IE8やそれ以外のブラウザは<li>のところで改行され、以下のようになります。 aaa ( xxx ) bbb ( xxx ) ccc( xxx ) ddd ( xxx ) どのようにすれば、IE7も<li>のところで改行され他と同じようになりますか。 実際にはaaa,bbb,xxxの文字などはもっと長いものでたまたま画面右端ぎりぎりにdddまで表示され</span>が区切りになって( xxx )の部分がddd下部に縦に3段くらいで表示されます。 IE8や、他のブラウザは、ddd ( xxx ) がセットで画面に収まらないので、<li>でおりかえされており、このようになってほしいのですが。 よろしくお願い致します。 <ul class="list"> <li><a href="a.html"><span style="color: #cccc99">aaa</span> ( xxx )</a></li> <li><a href="b.html"><span style="color: #cccc99">bbb</span> ( xxx )</a></li> <li><a href="c.html"><span style="color: #cccc99">ccc</span> ( xxx )</a></li> <li><a href="d.html"><span style="color: #cccc99">ddd</span> ( xxx )</a></li> </ul><div style="clear: left;"></div> ul.list{ list-style:none; width:100%; margin: 0 0 .8em 0; padding: 0; } ul.list li { float:left; display: inline; margin-right:.7em; }

    • ベストアンサー
    • HTML
  • ulとliで囲った文字の一部を変える方法

    よろしくお願いします。ulで囲んだliの中の一部の文字色を 変えたいのですが、どのようにすれば変えられますでしょうか? ulの中では<p>や<span>は使えないそうで、どうして良いのか方法が分かりません。 ご指導の程よろしくお願いします。 下記のホゲホゲと、パソコンの文字色を赤色で太字にしたいと考えております。 よろしくお願いします。 <ul class="ultest"> <li>テストテスト<br />ホゲホゲ</li> <li>インターネット</li> <li>パソコン</li> <li>リンク</li> </ul>

    • ベストアンサー
    • HTML
  • スタイルシート 

    さっそく質問させていただきます。 <table border> <tr> <td rowspan="3"> <h3>AAA</h3> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> </td> <td> <h3>BBB</h3> <ul> <li>aaa</li> <li>bbb</li> </ul> </td> </tr> <tr> <td> <h3>CCC</h3> <ul> <li>aaa</li> <li>bbb</li> </ul> </td> </tr> <tr> <td> <h3>DDD</h3> <ul> <li>aaa</li> <li>bbb</li> </ul> </td> </tr> </table> このタグを記述すると左に右の三つのセルをまたがったセルが表示されると思うのですが、これと同じレイアウトをスタイルシートで表現するにはどのように記述すればよいのでしょうか? 左側に一つのボックスを置いて、その直ぐ隣に三つのボックスを置きたいのです。

    • ベストアンサー
    • CSS
  • <ol><li> 左側にスペースができてしまう

    <ol> <li> タグを使うと、左側にスペースができてしまう。 <ol> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ol> をすると、番号の左に若干スペースができてしまいます。 このスペースを作らないようにするにはどうすればいいでしょうか?

  • 文字色が反映されない

    ホームページ作成でフォントの色を変えるのにcssで .under { color: #FE5936; border-bottom: 2px solid #e5e5e5"; font-weight: bolder; display:inline; } .green { color: #006C36; font-weight: bolder; } .red { color: #FF0000; font-weight: bolder; } .orange { color: #FF8000; font-weight: bolder; } と、設定してHTMLで<span class="○○">AAA</span>として文字の色を変えています。 いくつかHPがあって今までもそのように設定していたのですが、今更新の作業をしていて、更新作業中のサイトだけ<span>の設定が反映されているところと反映されていないところ(されていないところが大半)になってしまっていて困っています。 上記のunderは反映されるのですが、<span class="red">AAA</span>など、under以外反映されず、bodyで設定したcolorになっています。redをunderにすると反映されたりするので、redの設定がまちがってるのかと、cssの部分を打ち直したりしても変わらずです。{}で閉じてあるし、タグも</span>で閉じてあるし、display:inline;は直接関係ないと思うのですが。。。 同じCSSを使っている他のサイトでもこんなことがなかったので、どうしたらいいのか途方にくれています。 fontタグでやればできないことはないけど、cssで解決したいので、何か考えられる原因があれば教えてください。

  • liタグのナビボタンがFirefoxで二重に表示。

    liタグでナビボタンを縦に3つ積みたいのですが、IEでは正しく表示しますが、何故かFirefoxでは2段めから2つずつ表示してしまい5つのナビボタンになってしまいます。どのように記述すれば良いのでしょう? <div id="sidebar"> <ul> <li id="aaa"><a href=""><span>aaa</span></li> <li id="bbb"><a href=""><span>bbb</span></li> <li id="ccc"><a href=""><span>ccc</span></li> </ul> </div> div#sidebar { width: 245px; float:left; border-right-width: 1px; border-right-style: solid; border-right-color: #CCCCCC; } div#sidebar ul li a { display: block; } div#sidebar ul li a span { position:absolute; width: 0; height: 0; overflow:hidden; } ul li#aaa a { width: 245px; height: 60px; background-image:url(image/aa.jpg); background-position: 10px 20px; background-repeat: no-repeat; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #999999; } ul li#bbb a { width: 245px; height: 60px; background-image:url(image/bb.jpg); background-position: 10px 20px; background-repeat: no-repeat; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #999999; } ul li#ccc a { width: 245px; height: 60px; background-image:url(image/cc.jpg); background-position: 10px 20px; background-repeat: no-repeat; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #999999; }

    • ベストアンサー
    • CSS
  • onMouseoutの有効な範囲

    初期状態:aaaという文字のみ表示 動作:aaaをクリックするとその下にbbb,cccというリンクが現れ、これら(aaa,bbb,cccの領域)からマウスアウトしたら、bbb,cccが消える というものを作る為に、以下のコードを書いてみました。 <div onMouseout="this.childNodes[1].style.display='none'"><p onClick="this.parentNode.childNodes[1].style.display='block'">aaa</p><ul style="display:none;"><li><a href="#">bbb</a></li><li><a href="#">ccc</a></li></ul></div> 「ブラウザによりノードのカウント方法が異なり挙動が変わる」のを防ぐために改行をなくしましたが、見やすくするとこうなります↓ <div onMouseout="this.childNodes[1].style.display='none'"> <p onClick="this.parentNode.childNodes[1].style.display='block'">aaa</p> <ul style="display:none;"> <li><a href="#">bbb</a></li> <li><a href="#">ccc</a></li> </ul> </div> これを実際に試してみると、aaaを押してリンクbbb,cccが出てきたのは良いものの、 リンクをクリックするためにマウスをbbb,cccへ移動しようとすると、 aaaから離れた時点でbbb,cccが消えてしまいます。 「div全体に」”マウスアウトしたらbbb,cccが消える”というつもりで上記のソースを書いたのですが、 divのonMouseoutはpからマウスアウトしても働いてしまうのでしょうか。 どのように修正したらよいか試行錯誤中です。 解決策があれば、どうぞよろしくお願いします。