• ベストアンサー

CSSのタグについて

今CSSを勉強中の者です。一つ質問させて下さい。 とあるサイトで --------------------------------------------- <div id="album"> <ul> <li><a id="photo" href="#">  <em><img src="album/img/photo.jpg" /></em>    <span>写真1</span></a></li> </ul> </div> --------------------------------------------- とHXTML表記があり、CSSの設定は下記のようになっていました。 (※一部抜粋) --------------------------------------------- div#album ul li a em, div#album ul li a span  {  display: none;  } --------------------------------------------- そこで質問です。<em>や<span>のタグを単独で使った 事がなく、どうしてこの二つのタグが使われているの かがわかりません。 特にemはフォントサイズの指定ではないのでしょうか? それともCSSで効果の設定をするために無理に入れて いるだけなのでしょうか。 勉強中の為に訳の分からない質問なのかも知れませんが どなたか分かりやすく教えて頂けますと幸いです。

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

  • ベストアンサー
  • dezimac
  • ベストアンサー率56% (2365/4208)
回答No.2

HTMLとCSSはしっかりと分離して考えて下さい。 ・HTMLは文章を構造化する為のもの ・CSSは色や書体等のデザインをするもの > emはフォントサイズの指定では HTMLの<em>は強調という意味です。 <span>は特に意味はありません。 例)----- <p>この文章の<em>重要な部分はここ</em>です。</p> <p>意味もなく文章の<span>一部の色等</span>を変えて見た目だけ派手にしたい<p> em { font-style:bold; color: reb; } span { color: blue; } ----- > CSSで効果の設定をするために無理に入れて 貴方が省略した部分もあるでしょうが、大筋でその例の通りの作りだとすると、何の為にやっているかは、ハッキリ言って不明です。 非表示するだけなら、<em>とか不要ですし、 強調したい部分を非表示にして何の意味があるのか?

sakuran99
質問者

お礼

お二人ともありがとうございました!

sakuran99
質問者

補足

え~と、かなり(9割ぐらい)私が省略してかいてあるので すみません。意味はあると思います。 ただ、質問の箇所で<em>と<span>である必要性があるのかなぁ? 他のタグじゃダメなの?と思ったもので。

その他の回答 (1)

  • qandasok
  • ベストアンサー率42% (79/186)
回答No.1

>それともCSSで効果の設定をするために無理に入れて いるだけなのでしょうか。 それで正解だと思います。 何故ならば、imgにCSSを指定して、 alt属性に「写真1」を加えれば済むはずだからです。 仮にSEO対策の名目で「写真1」をdisplay: none;にしているなら、 それは見当違いなやり方です。 キーワードを不可視にするリスクを考えたら、普通怖くて出来ません。 [補足] >emはフォントサイズの指定ではないのでしょうか? 違います。 emは論理強調タグであって、フォントサイズの指定ではありません。 ただ単に文字を強調するだけでなく、 そのタグに囲まれた部分がそのHTML文書において重要である と主張する効果があります。 ただ単に文字を太くしたいだけなら、視覚強調タグである<b>を使うべきです。

sakuran99
質問者

お礼

ああ、、、HTMLでのemだとそういえば別でしたね・・・ 勘違いでした。

関連するQ&A

  • タグを切り替えるJavaScriptについて

    下記のurlを参考にして、タグを切り替えるJavaScriptを使いレイアウトをしています。 http://archiva.jp/web/javascript/tab-menu.html やりたいことは各内容をIDセレクタでくくりたいのです。 <div id="page1">  <h2>page1</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab">    <li><a href="#page1"><span>page1を選択中</span></a></li>    <li><a href="#page2"><span>page2</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> <div id="page2">  <h2>page2</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab2">    <li><a href="#page1"><span>page1</span></a></li>    <li><a href="#page2"><span>page2を選択中</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> ...page3 このようにやりたいのですが、JavaScriptがIDセレクタの"tab"にしか対応していないため、他のページにいくとクリックが効かなくなってしまいます。 idセレクタをclassセレクタに設定し直してもidセレクタにしか対応していないため効きません。 tag2とtab3に対応させるためにはどのようにすればいいでしょうか。 よろしくお願いします。

  • javascriptで同一エレメントを抜き出したい

    javascriptでクリックしたエレメントの祖先のエレメントが全て同じだった場合に、 該当するもののタグ内の言葉を抜き出そうと思っているのですが、 どのようにすればすっきり書けるのかがわかりません。 例えば下の[例1]、[例2]はともに、「あ」をクリックしたときに、「あ」「い」「う」を抜き出して、「え」「お」は抜き出したくありません。 [例1] <div class = "a"> <ul> <li>あ</li> ←クリック <li>い</li> <li>う</li> </ul> </div> <ul> <li>え</li> <li>お</li> </ul> *** [例2] <div> <span><em>あ</em></span> ←クリック </div> <div> <span><em>い</em></span> </div> <div> <span><em>う</em></span> </div> <span><em>え</em></span> <span><em>お</em></span>

  • cssのulタグについて質問です。

    cssの初心者ですがよろしくお願いします。 以下内容です。 #headerの中にulタグで float:left; display: inline; を使って横のメニューを作りました。 その下に幅いっぱいの画像を入れたかったので 一度 <div class="clear"></div>で区切って<div id=""></div>を使って画像を入れました。 そして、更にその下に上で使ったulタグをコピーしてclassを変更して新しい横のメニューを作ったのですが 2段目の1番左の画像だけマウスオーバーの画像だけが小さくなってしまいました。(横に短くなっている) 画像の大きさは元の画像もマウスオーバーの画像も同じ大きさです。 cssで指定している画像の大きさも間違いありません。 試しに上のメニューを<div id="header">にして <div class="clear"></div>で区切って 下のメニューを<div id="gnavi">にして分けてもその画像だけが小さくなっています。 htmlはこれです <div id="header"> <ul class="yama"> <li class="logo"><a href>ロゴ</a></li> <li class="kyouiku"><a href="">教育</a></li> <li class="syoukai"><a href="">紹介</a></li> <li class="shizen"><a href="">自然</a></li> <li class="mura"><a href="">村</a></li> </ul> <div class="clear"></div> <div class="line"></div> <ul class="rei"> <li class="name"><a href="">あいうえお</a></li> <li class="abc"></li> <li class="map"><a href="">マップ</a></li> </ul> </div> <li class="name"><a href="">あいうえお</a></li>これが問題のタグです。 文字が足りなかったのでcssの一部ですが /* rei */ #header ul.rei{ float:left; } #header ul.rei li{ float:left; display: inline; } で <li class="name"> のcssですが #header ul.rei li.name { display: block; width:295px; height:51px; } #header ul.rei li.name a { display: block; background: url(../img/name.jpg) no-repeat top left; text-indent:-9999px; height:100%; width:100%; } #header ul.rei li.name a:hover { display: block; text-indent:-9999px; height:100%; width:100%; background: url(../img/name_om.jpg) no-repeat top left; } という風にしています。 初心者のため使い方が間違っているところが多々あると思いますがよろしくお願いします。

    • ベストアンサー
    • CSS
  • 同じjqueryを2つ並べて動かしたいけど動かない

    いつもお世話になっています。 http://39kn.com/2011/06/05/5528/ のものを横に並べて動かしたいのですが下のソースの書き方をすると手前だけ動いて、2つめは動きません。 どうすれば動きますか?? 理想は■が1つのスライダーデモの部分だとすると、■■と横に並ぶ形で使いたいです。 <body> <div class="1"> <div id="scroller"> <div class="scroller-title"> <span class="left">ドメイン&レンタルサーバー</span> <span class="right"> <div id="controller"> <div id="stop_scroll_cont"><a id="stop_scroll"><img src="images/stop.png" align="absmiddle" /></a> Stop Scroll</div> <div id="play_scroll_cont"><a id="play_scroll"><img src="images/play.png" align="absmiddle"/></a> Play Scroll</div> </span> </div> </div><!-- /scroller --> <div id="Vertical"> <ul id="TickerVertical"> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> </ul> </div><!-- /Vertical --> </div> <div class="2"> <div id="scroller"> <div class="scroller-title"> <span class="left">ドメイン&レンタルサーバー</span> <span class="right"> <div id="controller"> <div id="stop_scroll_cont"><a id="stop_scroll"><img src="images/stop.png" align="absmiddle" /></a> Stop Scroll</div> <div id="play_scroll_cont"><a id="play_scroll"><img src="images/play.png" align="absmiddle"/></a> Play Scroll</div> </span> </div> </div><!-- /scroller --> <div id="Vertical"> <ul id="TickerVertical"> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> </ul> </div><!-- /Vertical --> </div> </body> </html>

  • JQueryを使ってcssを書き換え

    何となくコードを見てさわる程度の初心者です。 以下のようなソースを組みました。 <div id="slide"> <a href="01.htm"><img src="01.jpg" alt="01" id="alttxt" /></a> </div> <div id="slidenavi"> <ul> <li><a href="01.html"><img src="s_01.jpg" alt="01" class="b_01.jpg" /></a><span class="active"></span></li> <li><a href="02.htm"><img src="s_02.jpg" alt="02" class="b_02.jpg" /></a><span class="active"></span></li> <li><a href="03.html"><img src="s_03.jpg" alt="03" class="b_03.jpg" /></a><span class="active"></span></li> </ul> </div> #slideがメインエリアで、#slidenaviがメインエリアの画像とリンク先を切り替えるナビゲーションボタンになっています。 ナビに連動したメインエリア用の画像ファイル名は #slidenavi の img の classに入れておいて、それを読み込んで代入するというおかしなやり方で呼び出していますが、ここまではうまくいきました。 問題はここからです。 最初の状態では<span class="active"></span>はcssの設定でdisplay: noneとしてあります。 そして#slidenaviのボタンにマウスが乗ると、その部分の<span class="active"></span>をdisplay: blockとして表示したいのですが、これがどうしてもうまくいきません。 この部分も含めて、おかしな書き方になっている部分があれば教えてもらえないでしょうか。 jsファイルは以下の通りです。 $(function(){ $('#slidenavi ul li a').fadeTo(0,0.4); $('#slidenavi ul li a').hover(function(){ $(this).fadeTo(300,1.0); }, function(){ $(this).fadeTo(300,0.4); }) $('#slidenavi ul li img').mouseover(function(){ var bglink = $(this).attr("class"); var altTxt = $(this).attr("alt"); $("#slide img").attr("src","images/home/main/"+bglink); $("#slide img").attr("alt",altTxt); $("#slide span.active").css("display","block"); }); $('#slidenavi ul li a').mouseover(function(){ var Href = $(this).attr('href'); var Tget = $(this).attr('target'); $("#slide a").attr("href", Href); $("#slide a").attr("target", Tget); $("#slide a").click(function() { window.open(Href,'_self'); return false; }); }); });

  • menuのHTMLタグとCSSが上手くいかない

    画像(1)が現状です。イメージは(2)です。何故HTMLタグを別々にするかというとスマホにしたらsubメニューをボトムに配置したいのです。 メニューとsubメニューの背景がくっつかないのです。 (1)を(2)にするにはどうすれば良いでしょうか? 以下がHTMLタグとCSSになります。 アドバイスをお願いします。 HTMLタグ <div class="div1"><ul><li>メニュー1</li><li>メニュー2</li><li>メニュー3</li><li>メニュー4</li></ul></div> <div class="div2"><ul><li>sab1</li><li>sub2</li></ul></div> CSSスタイル ul li { list-style: none; } .div1 { background: #ccc; float: left; } .div2 { width: 240px; background: #999; float: right; } li { float: left; padding: 5px 15px; }

  • cssで背景を重ねることができるのでしょうか?

    CSSでナビゲーションバーを作っていますが、ナビゲーションバーのボタンの一つ一つを背景画像であらわしています。ナビゲーションバー全体の背景にまた違う画像を表示させたい(ボタンが途切れた後ろにも画像があるように)のですが、そういうことは可能なのでしょうか?ちなみにHTMLは <body> <div id="navigation"> <div> <ul> <li class="linkhome"><a href="/"><span>Home</span></a></li> <li class="linkkaisha"><a href="/"><span>kaisha</span></a></li> <li class="linkdoituriq"><a href="/"><span>doituriq</span></a></li> <li class="linkwine"><a href="/"><span>wine</span></a></li> <li class="linkchugoku"><a href="/"><span>chugoku</span></a></li> <li class="linkotoiawase"><a href="/"><span>otoiawase</span></a></li> </ul> </div> </div> </body> </html> という感じで、最初のdivにz-index2を次のdivにz-index1を指定したらできると思ったのですが、表示はナビゲーションバーの後ろに表示させたい画像がまず表示され、その下にナビゲーションバーが表示されます。 重ねて表示するのはどうすればいいのでしょうか? 質問が分かりづらくて申し訳ございません。どうぞよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSでUL全体をリンクアクティブにしたい。

    いろいろ、試してみたのですが、CSSがわからなくて困っています。 添付したように、縦にリストを並べたボタンを作っています。 赤線枠でくくったようにメニューの一つを全体でリンクでくくりたいのですが、 <ul><a href="aaaa.html"><li><li></a></ul> なんてしてはだめですよね。 今は、青でくくったように画像を除いた部分しかリンクアクティブになりません。 全体をリンクさせるにはどうしたらよいでしょうか。 知識不足と下手な添付でもうしわけありませんが、お助けください。 よろしくお願いします。 <div class="section" id="memu"> <ul> <li id="top1"> <a href="aaaa.html"><span>Aメニュー</span><br /> textAtextAtextAtextAtextAtextAtextAtextA</a></li> </ul> <ul> <li id="top2"> <a href="bbbb.html"><span>Bメニュー</span><br /> textBtextBtextBtextBtextBtextBtextBtextBtextB </a></li> </ul> <ul> <li id="top3"> <a href="cccc.html"><span>Cメニュー</span><br /> textCtextCtextCtextCtextCtextCtextCtextCtextCtextC </a></li> </ul> </div> ■■CSS■■ .section { clear:both; margin:0 auto; padding:0; overflow:hidden; } #index { margin:0 auto; } #index #memu ul { clear:both; display:block; margin:0 0 2px 0; padding:10px 0 10px 0; background:url(../img/top_bg.jpg) repeat-x left bottom; border-top: #CCC solid 0px; overflow:hidden; } #index #memu li { padding:1px 10px 0 100px; } #index #memu li a { display:block; height:59px; padding-bottom:10px; color:#000; overflow:hidden; } /* img画像設定*/ #index #memu #top1 { background:url(../img/top1.jpg) no-repeat 10px 5px; } #index #memu #top2 { background:url(../img/top2.jpg) no-repeat 10px 5px; } #index #memu #top3 { background:url(../img/top3.jpg) no-repeat 10px 5px; } /* リンクの見出し部分*/ #index #memu span { color: #AAA; font-size: 1.5em; font-size: 140%; font-weight: bold; }

    • 締切済み
    • CSS
  • cssでタグ検索のデザインをしているんですが、うまくいきません。

    スタイルートでテクノラティーのようなタグ検索を作りたいのですが、リストの中身の文字がブロックに入りきらないと、文字全体が改行されてしまいます。 できれえば、文字の一部を前の行に残したいのですが、どのような指定をしたらよろしいのでしょうか? -html <div id="aa"> <ul> <li><a href="#">aaaaa</a></li> <li><a href="#">bbbbb</a></li> <li><a href="#">bbbbb</a></li> </ul> </div> -css #aa { width:100px; height:auto; } ##aa ul { list-style:none; } ##aa li { flort:left; } 大体こんな感じのソースです。 ↓こんな感じになってしまいます。 aaaa bbbb cccc ↓このような感じにしたいのですが・・・ aaaa bbbb cc cc よろしくお願いいたします。

  • HTML、CSS

    FC2(無料サーバー)でホームページを作っているのですが、FC2の広告(Powered by…という下に一行だけ出るもの)が私のホームページに表示されなくて困っています。テンプレートを借りて作成したページで、テンプレートのカスタマイズはしていません。広告が表示されないと規約違反になってしまうので、表示させたいのです。何が原因でしょうか? <!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"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <link rel="stylesheet" href="st.css" type="text/css"> <title>タイトル</title> </head> <body id="TOP"> <!-- ページ全体  --> <div id="page"> <!-- ヘッダー --> <div id="head"> <h1><a href="index.html">Your Sitename</a></h1> </div> <!-- メニュー --> <div id="menu"> <ul> <li><a href="sample.html">SAMPLE</a> <li><a href="link.html">LINK</a> <li class="on"><a href="text_menu.html">TEXT</a> <li><a href="index.html">INDEX</a> </ul> </div> <!-- コンテンツ --> <div id="contents"> <h2>MENU</h2> <div class="text"> <h3>SHORT STORY</h3> <ul class="sub01"> <li><a href="text.html">STORY01</a> </ul> </div> <div class="text"> <h3>LONG STORY</h3> <h4>TITLE01</h4> <ul class="sub02"> <li><a href="text.html">1</a> <li><a href="text.html">2</a> </ul> </div> <div class="text"> <h4>ILLUST01</h4> <ul class="sub02"> <li><a href="img.html"><img src="img/banner01.gif" width="31" height="31" alt="画像名"></a> <li><a href="img.html"><img src="img/banner01.gif" width="31" height="31" alt="画像名"></a> </ul> </div> <div class="pagetop"><a href="#TOP">▲Top</a></div> </div> <!-- フッター --> <div id="foot"> <ul> <li> </ul> </div> </div> </body> </html>

    • ベストアンサー
    • HTML

専門家に質問してみよう