現在従来のデスクトップ用に作成したWEBサイトを640px以下のスマホ用に対応させるため、
CSSを書き直しレスポンシブ化しているところです。
全体的には画面サイズに合わせて自動で縮小できるように設定できたのですが、
以下の2点ができなくて困っています。
・CSSで指定した背景画像の縮小
・見出し部分の文字の縮小
WEBサイトはヘッダー、左メニュー、右コンテンツ、フッターの一般的な2カラムです。
CSSは現在以下の記述をしています。
@media screen and (max-width: 640px){
#greywaku , #container , #header , #contents , #main, #sub, #footer{
width: 100%;
float: none;
margin: 0 ; padding: 0 ;
}
p {
width : 97% ;
margin : 0 0 1.8em 0 ;
padding: 0 0px 0 5px ;
line-height : 1.7 ; }
img{
max-width: 100%;
height: auto;
width /***/:auto;
float: none;
}
* { margin: 0 ; padding: 0 ;}
}
以上では、html上に配置したimgは画面サイズに応じて縮小するのですが、CSSで指定した背景画像は縮小しません。
また見出しにh1,h2,h3を使用しておりますが、
こちらの文字も画面サイズに合わせて縮小させてたいと考えております。
自分であれこれ試行錯誤したのですがダメでした...。
お詳しい方ご教授いただけますと幸いです。
どうぞよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは。
背景画像のCSS部分に以下↓を加えれば画面サイズに合わせて可変するのではと思います。
background-size: 100%;
(100%意外にも設定はありますので検索してみてください)
質問者様のサイトがどういう部分で背景画像を指定しているか解りませんが
無地に近い背景なら関係ありませんが、前面に置く文字などに左右され、スマホ表示でずれたりしてしまうのでは?と思います。
一般的には画面サイズを縮小した場合用でもう一枚背景画像を用意して
@media (max-width: 640px) { }内に追加していきます。
見出しもフルスクリーン用で、h2の見出しを設定、縮小用でh2を記述していかないと最適化されないと思います。
nana_coco様
ご回答どうもありがとうございます。
本日教えていただいたbackground-size: 100%;を追記してみたいと思います。
また背景画像はスマホ用に幅を640pxにしたものを用意してやってみたいと思います。ありがとうございます。
1点追加で質問して申し訳ないのですが、
レスポンシブ用の@media (max-width: 640px) { }の部分ですが、現在デスクトップ用の外部CSSに追記する形で記載しているのえすが、やはりスマホ用で1つ外部CSSを新たに作り直した方がよいのでしょうか?
昨日やっていたのですが、例えばh3に指定したい場合は、h3 {
}ではcssが効かなくて、#main h3 { }にしたらやっと効いたということがありました。
これは何が原因として考えられるでしょうか?何度も申し訳ございません。
No.4
- 回答日時:
>そして任意.css内には@media screen and (max-width: 640px)
ではなくて、ブラウザの時点でリンクで切り替えるほうが良いです。
mediaqueryを理解できるブラウザのみそのスタイルを読み込むことができる。
<link rel="stylesheet" href="css/screen.css" media="screen">
<link rel="stylesheet" href="css/mobile.css" media="screen and (max-width: 480px)">
★Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html )
でチェック済み、HTML5+ CSS3
★タブは_に置換してあるので戻す。
<!doctype html>
<html>
<head>
_<meta charset="utf-8">
_<title>サンプル</title>
_<meta name="description" content="">
_<meta name="author" content="IRUKA">
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5. …
<script src="http://css3-mediaqueries-js.googlecode.com/svn/t …
<![endif]-->
_<link rel="stylesheet" media="screen" href="pc.css">
_<link rel="stylesheet" media="screen and (max-width: 640px)" href="mobile.css">
</head>
<body>
_<header>
__<h1 id="title">Your title</h1>
_</header>
_<section>
__<h2>本文</h2>
__<section>
___<h3>質問</h3>
___<p>現在従来のデスクトップ用に作成したWEBサイトを640px以下のスマホ用に対応させるため、CSSを書き直しレスポンシブ化しているところです。</p>
___<p>全体的には画面サイズに合わせて自動で縮小できるように設定できたのですが、以下の2点ができなくて困っています。</p>
___<ul>
____<li>CSSで指定した背景画像の縮小</li>
____<li>見出し部分の文字の縮小</li>
___</ul>
___<p>WEBサイトはヘッダー、左メニュー、右コンテンツ、フッターの一般的な2カラムです。</p>
__</section>
__<section>
___<h3>回答</h3>
___<p>最初のステップとして最善なのは</p>
___<ol>
____<li>現在のPC用のHTMLを、HTML4.01strict(strictですよ!!)に直すこと。</li>
____<li>divは極力使わない。使うときはclass名を使って文書構造を示すためだけ、その際のclass名はHTML5の文書構造を示す要素に習う。</li>
____<li>詳細度に基づいてスタイルを適用する要素を指定するセレクタの書き方を身につける。</li>
____<li>それでリキッドのデザインに変更する。</li>
____<li>mediaqueryを使ってスマホ用のデザインを作成する。</li>
____<li>新しいページはHTML5で作成し始める。</li>
___</ol>
__</section>
__<nav>
___<h3>ナビゲーション</h3>
___<ul>
____<li>リンク</li>
____<li>リンク</li>
____<li>リンク</li>
____<li>リンク</li>
___</ul>
__</nav>
_</section>
_<footer>
__<h3>A nice footer</h3>
_</footer>
</body>
</html>
[screen.css]
@charset "utf-8";
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6,p{margin:0;line-height:1.6em;}
p{text-indent:1em;}
header,section,footer{
width:100%;max-width:900px;
margin:0 auto;
padding:5px;
position:relative;
}
section{
min-height:300px;
}
section nav{
position:absolute;
top:0;left:0;
height:100%;
width:160px;
margin-left:0;
}
section section,section h2{
margin:0 0 0 165px;
width:auto;
min-width:0;
min-height:0;
}
[mobile.css]
@charset "utf-8";
section nav ul,section nav ul li{
margin:0;padding:0;
line-height:50px;
text-align:center;
}
section nav ul li{
font-size:0.9em;
list-style-type:none;
dispaly:block;
width:140px;
height:50px;
border:outset 10px gray;
}
section nav ul li+li{
margin-top:10px;
}
No.3
- 回答日時:
No.2です。
>html5について勉強してみようかと考えております。
あせる必要はないですよ。スマホがメインターゲットである。<video>やSVG( https://ja.wikipedia.org/wiki/Scalable_Vector_Gr … )を使うとか・・
HTML4.01を完璧にマスターしてから、『HTML4.01からの変更点(HTML 5 differences from HTML 4)』( http://www.html5.jp/trans/w3c_differences.html )を学ぶほうがずっと簡単です。
一度、HTML4.01の仕様書( http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 … )を通して読んでご覧なさい。目が覚めると思いますよ。
>レスポンシブ用の@media (max-width: 640px) { }の部分ですが、現在デスクトップ用の外部CSSに追記する形で記載しているのえすが、やはりスマホ用で1つ外部CSSを新たに作り直した方がよいのでしょうか?
>例えばh3に指定したい場合は、h3 {}ではcssが効かなくて、#main h3 { }にしたらやっと効いたということがありました。
CSS( Cascading Style Sheets )の名前でも分かるように、カスケーディングはCSSの命とも言える重要な仕組みです。言い換えるとカスーディングを身につけないとCSSは使えません。
h3 {}はタイプセレクタ一つですから詳細度は 1 ( 0 0 0 1)です。
#main h3 { }は一意セレクタがありますから、詳細度は101(0 1 0 1)になります。
もし他の箇所で、
div.main h3{}と指定されていたら、その詳細度は 12(0 0 1 2)ですから、前者では上書きできません。
この説明についてこれないようでしたら、下記をマスターしてください。
5 セレクタ( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
6 プロパティ値とカスケーディング、継承の割り当て( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
>現在デスクトップ用の外部CSSに追記する形で記載しているのえすが、やはりスマホ用で1つ外部CSSを新たに作り直した方がよいのでしょうか?
これは、CSS2.1にあった
7 メディアタイプ( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
がCSS3になって追加されたmediaqueryを使うという事です。
HTML4.01では・・・
【引用】____________ここから
<LINK rel="stylesheet" media="aural" href="corporate-aural.css" type="text/css">
<LINK rel="stylesheet" media="screen" href="corporate-screen.css" type="text/css">
<LINK rel="stylesheet" media="print" href="corporate-print.css" type="text/css">
<LINK rel="stylesheet" href="techreport.css" type="text/css">
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Style Sheets in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
のscreenに対して、mediaqueryの説明は手に余りますので、
⇒mediaquery - Google 検索( https://www.google.co.jp/search?q=mediaquery&ie= … )
mediaqueryを解釈できないブラウザのために、別途<link>で振り分けたほうが良いでしょう。
★最初のステップとして最善なのは
1) 現在のPC用のHTMLを、HTML4.01strict(strictですよ!!)に直すこと。
単にXMLに書き直したXHTML1.0は兎も角、それ以降のXHTML1.1,XHTML2.0(中止)、HTML5はstrictしかありません。
2) divは極力使わない。使うときはclass名を使って文書構造を示すためだけ、その際のclass名はHTML5の文書構造を示す要素に習う。
<div class="nav">ナビゲーション</div> HTML5→ <nav>ナビゲーション</nav>
3) 詳細度に基づいてスタイルを適用する要素を指定するセレクタの書き方を身につける。
4) それでリキッドのデザインに変更する。
これで本文が2ブロックでしたらスマホもパソコンも同じデザインで済むと思います。
そのうえで、
5) mediaqueryを使ってスマホ用のデザインを作成する。
6) 新しいページはHTML5で作成し始める。
で良かろうかと思います。
とりあえず緊急を要するページから始められたらよかろうかと。
⇒ナビゲーションリストを様々にデザインしてみよう。( http://ichiya.com/WebService/Howto/sample/HTML/n … )
はパソコン用で、mediaquery使われてませんが、スマホでも利用できるはずです。
とてもお詳しいご解説ありがとうございます。
私にはまだまだ難しくて到底理解できませんが、少しずつ理解できるようがんばってみたいと思います!
もう1点疑問がでてきたのですが、スマホ用のCSSを外部ファイル化して<link rel="stylesheet" type="text/css" href="任意.css">という記述をhead内にしました。
そして任意.css内には@media screen and (max-width: 640px){こちらにスマホ用のCSSを記述}という記述があり、デスクトップ用のCSSに上書きする形でスマホ用のCSSを記述していきたいと考えております。
しかしこれでは任意.CSSが全く効いてくれません?
何か記述忘れがあるのでしょうか?
何度も申し訳ございません。
No.2
- 回答日時:
1) 背景画像はbackground-sizeを使用して設定します。
2) 文字サイズは、変更できません。
⇒Fonts - CSS 2.1 spec (ja)( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
⇒CSS Fonts Module Level 3( http://www.w3.org/TR/css3-fonts/#font-size-prop )
スマホはディスプレイ幅に合わせてフォントサイズを自動調整させる機能がついていますから、逆に小さくなりすぎますから、Viewportを使って切り替える。
⇒Viewport [iPhone生活]( http://ipn3g.com/web/study3.html )
>WEBサイトはヘッダー、左メニュー、右コンテンツ、フッターの一般的な2カラムです。
だとしたら
<body>
<header>
</header>
<section>
<h2>記事</h2>
<p></p>
<nav>ナビゲーション</nav>
</section>
<footer>
</footer>
</body>
CSS
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6,p{margin:0;line-height:1.6em;}
p{text-indent:1em;
header,section,footer{
width:100%;min-width:630px;max-width:900px;
margin:0 auto;
padding:5px;
position:relative;
}
section{
min-height:300px;
}
section nav{
height:100%;
width:200px;
margin-left:0;
}
section>*{
margin-left:205px;
}
というふうに、左に来るコンテンツの幅を指定してしまうと楽ですよ。
これだけでPC用もスマホ用も対応できるはずです。
携帯用は別途media="handheld"でスタイルシート書きましょう。
印刷用(media="print")は目次は印刷しないか後回しでもよいかと・・
#greywaku , #container , #header , #contents , #main, #sub, #footer{
のようなidを付けるのは望ましくありません。HTML4.01(15年前勧告)以来!!
『id属性及び class属性と併用することで、文書に構造を付加するため( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』
と言われ続けたはずです。
つけるなら、class名のほうが良いです。なぜならheaderもfooterも何箇所も登場しうる要素ですからね。上のサンプルのように『HTML5 では、文書をよりよく構造化するため( http://standards.mitsue.co.jp/resources/w3c/TR/h … )』の要素になりました。
そのため、HTML5の要素名、使用目的に合わせておくと将来的に役立ちますし、HTML4であっても分かりやすいはず。
#greywaku , #container , #contents は文書構造を示す言葉ではない。
#main,は、特殊な扱いです。
⇒4.4 Grouping content — HTML5( http://www.w3.org/TR/html5/grouping-content.html … )
ORUKA1951様
お詳しいご回答ありがとうございます。
背景が画像については、background-sizeで了解しました!
参考URLの提示や例としてhtmlやcssまでご提示いただきありがとうございます。
当方のhtmlはかなり古い形であるということがわかり、
html5について勉強してみようかと考えております。
チャレンジしてみたいと思います。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- オープンソース cssで中央寄せ 1 2023/05/19 06:25
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS htmltとcssのコードで 1 2022/11/26 13:37
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
CSSでボックスのheightが0になる
-
widthやheightの数値に単位(px...
-
css初心者 フレックスボックス...
-
CSSで3分割した背景画像を配置...
-
Media Queries 4 で 非推奨とな...
-
HTMLのiframeの入れ子について
-
中点「・」の改行について
-
div内に外部のurlを表示させたい
-
CSS上での計算を行うためのルー...
-
W3Cのソースコードの検証サービ...
-
画像リンクの下に文字を付けた...
-
border-style:solidで文字がずれる
-
テキストボックスの高さを可変...
-
CSSと<dl><dd>で間隔をあけて1...
-
<li>の黒い点を消したい。
-
【CSS】ヘッダーの高さが不明の...
-
CSSでborderの指定を解除する記...
-
CSSだけで、テーブルにスクロー...
-
divで囲まれたpaddingの指定を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
css初心者 フレックスボックス...
-
form input テキストを上下中央...
-
<div>と<div>の間の10px程の...
-
CSSがなぜかfont-sizeだけ効か...
-
divで囲まれたpaddingの指定を...
-
表示倍率を変えるとレイアウト...
-
画像イメージの上下左右、欲し...
-
CSS、width100%でもできる余白
-
cssで中央寄せ
-
CSS:animation開始位置の設定
-
スクロールボックスを中央に配...
-
CSSで背景画像を一番下にもって...
-
【CSS】ヘッダーの高さが不明の...
-
初心者html・CSS ウィンドウを...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
-
div領域をウインドウサイズに合...
-
W3Cのソースコードの検証サービ...
おすすめ情報