• ベストアンサー

CSSに関するいくつかの質問

そろそろホームページにCSSを導入しようと考えているのですが、それに関していくつか質問があります。 1.CSSには、埋め込み方式と、外部ファイル方式があるとのことですが、一般的には多くのページに共通する大まかなデザインを外部ファイルで作って個別の細かい部分は埋め込みで補うのか、あるいはすべて外部、すべて埋め込みといったように完全に分けるべきなのかという点。 2.文字に色を付けたり、太さを変えるようなことであればCSSに頼らずともできると思いますが、今後はスタイルシートでできるものはすべてCSSに任せていったほうがよいのか、あるいは古いブラウザに配慮をして、レイアウトが崩れない程度にCSSを使うべきなのかという点。 3.外部CSSの場合で、clear属性を使ってfloatの回り込みを解除するとき、HTMLに「<P CLASS="clr"></P>」というダミーを作り、CSSに「.clr{clear:left}」と解除するのは間違いでしょうか? 左に写真を配置し、右に回り込みで解説文を書くレイアウトで、その下にも同様に写真と解説文が連続するため、解除しないと上の解説文の真下に写真が入ってきてしまいます。 写真|解説文 <P CLASS="clr"></P> 写真|解説文 以上の3つの点について知りたいと思っています。 知識不足で的外れな質問をしているかもしれませんが、ご助力よろしくお願いします。

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

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

  • ベストアンサー
  • aegills
  • ベストアンサー率70% (7/10)
回答No.5

1.について ファイルの肥大化を防ぐ意味では、細かい指定をインラインで書くのもありです。が、ブロードバンドが普及してますのですべて外部CSSで指定したほうがメンテナンスしやすいかと思います。 2.について マークアップはxhtml、デザインはCSSで指定するのが理想です。古いブラウザへの対応は、別途ページを用意した方がサイトの寿命は伸びます。 3.について 余計なタグを入れない方が正しいマークアップになります。clear専用のclassを作成し、floatを解除する要素に指定しましょう。 [例] (style.css) .float_left{ float:left; } .clear_left{ clear:left; } (index.html) <img class="float_left" /> <p class="float_left">text</p> <img class="clear_left float_left" /> <p class="float_left">text</p> <img class="clear_left float_left" /> <p class="float_left">text</p>

django13
質問者

お礼

たしかに仕様改正の多いこの分野では外部化して一まとめに修正できたほうが都合がよさそうですね。 floatひとつとっても結構本によって書き方が多くて困りますが、こちらも綺麗ですね。

その他の回答 (4)

noname#100277
noname#100277
回答No.4

1.全て「直接」乃至「内部」でも構わないとは思うけど、HTMLの修正では手間が掛かって面倒。 と成ると「外部」が望ましいのか? と云う事だと、同じサーバーに設置してても参照時にエラーが発生しないとも限りませんし、外部サーバーに設置してた場合はサーバーエラーの事も考えないと読み込めません。 で在るから、結局は管理する本人が解り易い方法で選択するのが無難でしょう。 メンテナンス仕易い方法を選択。 2.携帯電話向けを作成する必要が出て来た場合は「DoCoMo」に基準させないと駄目なので、単純にHTMLでも構いませんが、CSSの場合は規制を受けるので注意が必要。 HTMLチェックでエラーが出ても、正常な表示が出来れば良いレベルならCSSを使わなくても問題では在りません。 3.割愛。

django13
質問者

お礼

外部がよいという意見が多いようですね。 まだどちらの方法も慣れていないのでひとまず外部から勉強してみます。

  • abril
  • ベストアンサー率69% (388/560)
回答No.3

これが正解、と断言する事はできないでしょうね。サイト制作者のポリシーや特殊で限定的な用途・ターゲットを目的として作られるコンテンツというのもあるでしょうから。商用(プロ)なのか、趣味(個人)なのか、でも基準は違いますし。後者ならはっきり言って「自己満足」のみで制作してあったとしても誰もそれに文句は言えないでしょうし…。 ただ、(X)HTMLとCSSの本来の用途を考えるなら、論理構造と装飾性は分離するべきですから、装飾性(スタイル)に関する部分はCSSが担うべきものです。よって、1.と2.に関してはNo.1様と同意見です。 > 3. 原則、この様な「(レイアウト上の不都合を解消する為だけで論理的意味を持たない)要素のないコンテナ」を置くことは推奨されません。それに、(X)HTMLとCSSをある程度ちゃんと理解できている制作者なら、99%そういうダミー的な手段を使わなくてもfloatのクリア程度の事は充分に可能だからです。従って、No.1様の考え方の方が適切だと思いますし、私もそこそこ長い経験上で同様のやり方で様々なケースに難なく対応できてきましたから。 以下のスレッドのNo.3・No.5の回答で同様の考え方に関する細かい説明をさせて頂いてますので、参考までに。 #要は、文法チェックでエラーにならなければ良いというものではないのでは…?という事です。 【参考】http://oshiete1.goo.ne.jp/qa5199457.html

django13
質問者

お礼

長い間HTMLの透明テーブルを使ったレイアウト程度で十分だったのでCSSの意味をちゃんと理解していなかったようです。 できることなら意味のないものを置かずにレイアウトできないかと思い質問してみました。独学で手探り状態なので無理やりなコードになってしまいますが、いろいろ勉強して正していこうと思います。

noname#119957
noname#119957
回答No.2

1.すべて外部 2.今後はスタイルシートでできるものはすべてCSSに任せていったほうがよい IE5以前は切捨てでOK 3.<div CLASS="cler"></div> :Pは段落 cler{clear:both}だけでは、不十分で 1×1pxBOXでline-height:1px font-size:1px;でないとダメ。 **  

django13
質問者

補足

1&2に関しては皆さん共通のようですね。 見えないからといって<P>を使ってましたが要素で分けるならおっしゃるとおり<DIV>を使うべきでした。

  • salonpath
  • ベストアンサー率48% (194/399)
回答No.1

1.色々な場所に書くと修正が困難になるので(他の理由もありますが)すべて外部が理想 2.見た目に関わる事は全てcssが理想 3.写真|解説文のブロック要素にclear:both;を使えれば、pは必要ないかも。 <dl><dt>写真A</dt><dd>解説文A</dd></dl> <dl><dt>写真B</dt><dd>解説文B</dd></dl> dl{ clear:both; }

django13
質問者

お礼

このclearの使い方はわかりやすくてスマートですね。 無理がなさそうなので導入させてもらいます。

関連するQ&A

  • CSSでの回り込みの解除について

    1つのブロック要素の中でPタグで写真を配置してfloatで回り込ませ、任意のPタグで解除させたい場合、<div class="clear"><hr /></div>と該当のPタグで<p class="clear">するのはどちらがよいのでしょうか? clearについてのCSS .clear { clear:both; } .clear hr { display:none; }

    • ベストアンサー
    • HTML
  • CSSレイアウトの中にテーブルのような使い方でCSSを入れ子にする方法で質問です。

    テーブルを一切つかわないでサイトを作成したいと思っていて、 現在CSSで2カラムのレイアウトをしています。 困っているのが、 ページの下部に”前のページ HOME 後ろのページ” という風に横に3つならべたいと思っています。 テーブルであれば簡単にできることなのですが、 それをCSSでできないかと思っております。 そこで外部CSSに .table{ width: 10px ; background-color: #ffffff; margin: 5px; border: solid 0px ; padding: 0.5em; } と記述し、HTML部分に <p><span class="table">前のページ</span> <span class="table">HOME</span> <span class="table">後ろのページ</span></p> という風に記述してみたのですが、 文字を打っていくとどんどんよこに伸びて、横幅を指定している意味がないような感じです。 私のようなCSSの使い方をしたい場合はどのように記述すればよろしいのでしょうか?

    • ベストアンサー
    • HTML
  • CSSのfloatの回り込み解除について

    現在は、<dt>にfloat:leftを指定して、.clearを作成し、<div class="clear"></div>で解除しています。 ただ最近floatを頻繁に使うようになり、<div class="clear">が多くなってしまいどうにかならないか探しているところです。 私がやりたい事は、<dl>に直接clear属性を付属できないかです。 これができれば、回り込み解除の指定がいらなくなるので、助かるのですが、<dl>に入れると、<dt>のfloatも解除されてしまいます。 下記がサンプルソースです。 CSS: dl {clear:both;} dt {float:left;width:130px;border:solid 1px #CCC;} HTML <dl> <dt>SAMPLE</dt> <dt>SAMPLE</dt> <dt>SAMPLE</dt> </dl> <p>clearを設置しなくても回り込み解除</p> これが理想です。 やはり、clearは別で設置しなければならないんでしょうか?

    • ベストアンサー
    • HTML
  • cssについて質問です。

    cssについて質問です。 IE8で思ったように表示されるものが、Firefoxだとレイアウトが崩れてしまいます。 imgの高さや横幅がFirefoxで反映されず文字が上部に表示されるのですがいろいろやっても改善出来ずに途方に暮れています。 ヘッダーやフッターなどもありますが、関係のありそうな部分を抜き出してみました。 添付画像のように画像を3つならべて表示したいのですが、 一番無駄無くdivで組む方法もありましたらご教授下さい。 よろしくお願いします。 ■HTML■ <div class="subcontentsbox"> <div class="imgbox"> <a href="#"> <span><img src="#" /></span> <p class="code">12345</p> <p class="name">12345</p> <p class="price">12345</p> </a> </div> <div class="imgbox"> <a href="#"> <span><img src="#" /></span> <p class="code">12345</p> <p class="name">12345</p> <p class="price">12345</p> </a> </div> <div class="imgbox"> <a href="#"> <span><img src="#" /></span> <p class="code">12345</p> <p class="name">12345</p> <p class="price">12345</p> </a> </div> </div> ■css■ .subcontentsbox { font-family:"メイリオ",Meiryo,"ヒラギノ角ゴ Pro W3",Osaka,"MS Pゴシック",sans-serif; font-size: 100%; width: 100%; margin: 20px 0px; padding: 0; text-align: justify; -ms-text-justify: inter-ideograph; overflow: hidden; display: block; } .imgbox { background-color: #987654; height: 250px; width: 33.33333%; text-align: center; float: left; } .imgbox a{ text-decoration: none; border: 0; height: 180px; width: 180px; } .imgbox img{ border: 0; height: 180px; width: 180px; }

    • ベストアンサー
    • HTML
  • CSSを内部ファイルにしたい

    Dreamweaver8を使っています。前任者が外部ファイルで管理していたcssを、都合があって、一部内部ファイルに書き換えることになりました。使われているid等のcssを内部ファイルにコピペしたのですが、うまく表示されません。 cssは全てid設定になっており、idの中のタグで振り分けて設定されています。classは使っていません。どのように移行したらよいか、教えていただきたく存じます。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • css使って<br>みたいに改行したいけど出来ない

    ブログの記事を書くときに<br/> を連発して改行していたんですが、seo敵によろしくないらしいのでこれからは cssを使って書き変えていこうと思いました ワードプレスのエディターから style.css の一番下に p.p1{ margin-top: 1em; } p.p2{ margin-top: 2em; } p.p3 { margin-top: 3em; } こうやって書きました。 それでブログの記事htmlを書くときには <p class=“p1"></p> ⇐これ書けば1行空白が空く <p class=“p3"></p> ⇐これ書けば3行空白が空く と思い書いてみたんですが <p class=“p1"></p> <p class=“p3"></p> どちらを書いても、記事は1行分の空白しか空きませんでした 大げさに p.p6{ margin-top: 6em; } というのをcssに書いて 記事のhtmlに <p class=“p6"></p> と 書いても空白は1行しか空きませんでした(;へ:) ブラウザのキャッシュを消して表示し直したりしてますが駄目です1行しか空きません なぜでしょうか??cssの記入場所が悪いのか書き方が悪いのか margin-top   を margin-bottom に変えても変わりませんでした 初心者にもわかるよう、 cssを使った改行、レイアウト変更方法を教えてください なんかcssで指定して html側になんかp classみたいな指定をした方が SEO対策になっているとか ルールにのっとっているらしいですが ググってもわかりませんでしたし なぜか一行分の空白しか空きませんで困っております。 こうやって何行も空けたいです! <p style="margin-top:6em;"></p> とhtml側に書くと改行思ったようにできます これが一番簡単ですがそれもcssで指定してないから良くないらしいです たすけて!

  • CSSでのレイアウトについて

    私は現在サイトを開設しているのですが、一から独学でHTMLを学んで分からない事があれば調べて作成してきました。 使用しているのはHTML、CSS、JavaSceript、SSIです。 見た目は自信あります。ただある程度知識がある方がソースを見たら”全然分かってないだろうな”というのがすぐにバレるぐらい酷いです。 調べて分かった事は積極的に取り入れてきました。 以前はHTMLのみで作成していたんですが、外部ファイルを使いJavaScriptやCSSをまとめています。以前に比べだいぶ簡潔なソースになり、汎用性も上がったと自負しています。 ただレイアウトは依然tableレイアウトです。 その為レイアウトをいじろうと思うと全てのファイルを修正しなければなりません。ファイル数は100を超えてます。 そこで詳しい方にお聞きしたいのですが、 ・tableレイアウトからCSSでのレイアウトに移行するのは難しい事ですか? レイアウトって聞くだけで避けてきたので、いざ移行してみて今まで作成してきたデザインが崩れるのではないかと不安になってきます。 ・下記のサイトのようなレイアウトを最近結構見かけます。 http://www.yamaga-fc.com/ 私もいづれこのようなレイアウトにしたいのですが、これは何というレイアウトでしょうか? 検索してもこのようなレイアウトの作り方が掲載されてるサイトが見つからなくて困ってます。 ヘッダーとフッターが100%。真ん中が80%ぐらいのレイアウト。 ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • cssファイルがダウンロードできてしまう・・・

    cssを外部ファイルに置いて、http://○○○.com/css/index.cssのようにしているのですが、以下の問題が発生しています。 ■http://○○○.com/css/index.cssでcssファイルがダウンロードできてしまう。 ■cssファイルがYahoo検索エンジンにインデックスとして大量に登録されてしまう。 上記の2点の問題で非常に困っています。htaccessに  <Files ~ "\.css$">deny from all</Files> と記述しましたが、これではサイトにアクセスするとcssを読み込まずにレイアウトが総崩れしてしまいます。 どのように記述すればよいのでしょうか?

    • ベストアンサー
    • HTML
  • CSSでのレイアウトについて

    現在、table、flameタグを使わず、CSSだけでレイアウトを組んでいるのですが、その際、BOX同士が離れてしまってどうしてもBOX同士をくっつけれません。。Illustratorで作った画像をスライスしてそれをつなげたいのですが。。。marginも0にしてるのに、どうもBoxの底辺にわずかな隙間ができてしまうのです。。 css body { width:800px; margin:0; padding:0; border:0; } #outline { width:800px; margin:0; padding:0; border:0; } <!-- endheader --> <div class="center-free1"> <div class="main"> メインスペース </div> <div class="free1"> </div> <br class="clear"> </div> <div class="free2"> 灰色back </div> <div class="clear"> </div> <div class="under"> </div> </div> </BODY> 一応ソースも載せてみました。。周りでcssを使ってる人がいないので、誰にも聞けず、途方に暮れています。。どうかご教授願います。。

    • ベストアンサー
    • CSS
  • clear bothで回り込みがうまく解除できません・・・。

    cssにて現在サイトを構成しています。 そこでお詳しい方がいらっしゃいましたらアドバイスを頂けたらと思います。 回り込みの指定解除なのですが、現在cssでbothの指定を行っています。名前はclearとします。 そこで、<br>に対してclass指定で、<br class="clear" />と記述するのですが、何か旨く解除し切れません・・・。 これをブロックレベルで、<p class="clear"></p>とすると旨く解除が出来ます。・・・でも空タグが出来るのでどうなのでしょうか??? ですが、時々<br class="clear" />でも、きちんと解除できるものもありますので、何か違いをつけて、インラインとブロックで解除を分けなければいけないのかな?と思いご質問させていただきました。 すみませんが、解除の仕方をアドバイス願います。 あと、これは余談な質問ですが、imgに対してマージンなどの指定を行ってもfirefox1.5で隙間が反映されません。 <img・・・・・ class="10px">(左右に10pxマージンを指定した場合)これはfirefoxのバグか何かでしょうか?はたまた私の定義に問題アリでしょうか? どうぞ、宜しくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう