アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在従来のデスクトップ用に作成した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を使用しておりますが、
こちらの文字も画面サイズに合わせて縮小させてたいと考えております。

自分であれこれ試行錯誤したのですがダメでした...。

お詳しい方ご教授いただけますと幸いです。
どうぞよろしくお願い致します。

A 回答 (4件)

こんにちは。



背景画像のCSS部分に以下↓を加えれば画面サイズに合わせて可変するのではと思います。
background-size: 100%;
(100%意外にも設定はありますので検索してみてください)

質問者様のサイトがどういう部分で背景画像を指定しているか解りませんが
無地に近い背景なら関係ありませんが、前面に置く文字などに左右され、スマホ表示でずれたりしてしまうのでは?と思います。
一般的には画面サイズを縮小した場合用でもう一枚背景画像を用意して
@media (max-width: 640px) { }内に追加していきます。
見出しもフルスクリーン用で、h2の見出しを設定、縮小用でh2を記述していかないと最適化されないと思います。
    • good
    • 0
この回答へのお礼

nana_coco様

ご回答どうもありがとうございます。

本日教えていただいたbackground-size: 100%;を追記してみたいと思います。

また背景画像はスマホ用に幅を640pxにしたものを用意してやってみたいと思います。ありがとうございます。

1点追加で質問して申し訳ないのですが、
レスポンシブ用の@media (max-width: 640px) { }の部分ですが、現在デスクトップ用の外部CSSに追記する形で記載しているのえすが、やはりスマホ用で1つ外部CSSを新たに作り直した方がよいのでしょうか?

昨日やっていたのですが、例えばh3に指定したい場合は、h3 {
}ではcssが効かなくて、#main h3 { }にしたらやっと効いたということがありました。

これは何が原因として考えられるでしょうか?何度も申し訳ございません。

お礼日時:2015/03/10 08:29

>そして任意.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;
}
    • good
    • 0

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使われてませんが、スマホでも利用できるはずです。
    • good
    • 0
この回答へのお礼

とてもお詳しいご解説ありがとうございます。

私にはまだまだ難しくて到底理解できませんが、少しずつ理解できるようがんばってみたいと思います!

もう1点疑問がでてきたのですが、スマホ用のCSSを外部ファイル化して<link rel="stylesheet" type="text/css" href="任意.css">という記述をhead内にしました。

そして任意.css内には@media screen and (max-width: 640px){こちらにスマホ用のCSSを記述}という記述があり、デスクトップ用のCSSに上書きする形でスマホ用のCSSを記述していきたいと考えております。

しかしこれでは任意.CSSが全く効いてくれません?

何か記述忘れがあるのでしょうか?

何度も申し訳ございません。

お礼日時:2015/03/10 21:52

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 … )
    • good
    • 0
この回答へのお礼

ORUKA1951様

お詳しいご回答ありがとうございます。

背景が画像については、background-sizeで了解しました!

参考URLの提示や例としてhtmlやcssまでご提示いただきありがとうございます。

当方のhtmlはかなり古い形であるということがわかり、
html5について勉強してみようかと考えております。

チャレンジしてみたいと思います。
ありがとうございました!

お礼日時:2015/03/10 08:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!