質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

637閲覧

レスポンシブデザインの際の画像や文字サイズを指定する時の単位の指定方法について

kakedashi009

総合スコア5

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/08/13 11:39

編集2020/08/13 12:43

初歩的な質問ですみません。
現在レスポンシブでコーディングをしようと思っているのですが、PC、スマホ、タブレットの3つをコーディングすれば横幅を多少変えてもコンテンツの比率などが変わらないようにしたいと思っています。
そこで、親要素を基準とした相対比率で指定できる単位である%を用いて見たのですが、画像のように文字に被ってしまい、うまくいかないです。
一般的に画像の位置関係を崩さないようにコーディングする方法はどのような手法が用いられるのでしょうか?

html

1<div class="inner"> 2 <section class="main__section main__section--type0"> 3 <h2 class="section__header">「stay Iroha as Live」</h2> 4 <div class="section__paragraph"> 5 <p class="paragraph"> 6 テキストテキストテキスト<br> 7 屋久島の地で、、、いろはで、感じてほしいこと。<br> 8 <br> 9 作っていきたい空間。<br> 10 丸さんたちの想い。<br> 11 暮らしの体験宿、いろは<br> 12 <br> 13 English version About iroha. 14 </p> 15 </div> 16 <button class="section__button"> 17 Read more 18 </button> 19 <img src="img2/familys.png" alt="" class="section__photo"> 20 <div class="section__graybox section__graybox--1"></div> 21 </section>

css

1.main__section{ 2 position: relative; 3 padding: 1px; 4 width: 1920px; 5} 6.section__header{ 7 font-size: 50px; 8 font-family: 'Toppan Bunkyu Midashi Mincho'; font-weight: bold; 9 letter-spacing: 0.05em; 10 margin-top: 156px; 11 margin-left: 155px; 12} 13.section__paragraph{ 14 margin-top: 76px; 15 margin-left: 155px; 16} 17.paragraph{ 18 font-size: 35px; 19 font-family: 'Toppan Bunkyu Mincho'; font-weight: normal; 20 line-height: 1.4; 21 text-shadow: 0px 3px 6px #707070; 22} 23.section__button{ 24 width: 200px; 25 height: 67px; 26 border: 1px solid; 27 margin-top: 126px; 28 margin-left: 360px; 29 background-color: rgba(0, 0, 0, 0); 30 font-family: 'Toppan Bunkyu Midashi Mincho'; font-weight: bold; 31 font-size: 20px; 32 letter-spacing: 0.1em; 33} 34.section__graybox{ 35 width: 1149px; 36 height: 700px; 37 background-color: #F8F8F8; 38} 39.section__graybox--1{ 40 position: absolute; 41 top: 282px; 42 left: 443px; 43 z-index: -100; 44} 45.section__photo{ 46 position: absolute; 47 top: 10px; 48 right: 120px; 49 height: auto; 50 width: 4%; 51}

PC版(1200px以上ではこのような比率でコーディングしたいです)

現状のレイアウトです。横幅を縮めるとこのように画像が大きすぎたりしてしまう問題が出てきます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/08/13 12:21

画像は現状のレイアウトですよね。 理想のレイアウトを画像で提示できませんか。 無理なら、現状のレイアウトのどの辺が希望と違うか説明してもらえますか。
kakedashi009

2020/08/13 12:41

すみません、画像は理想のレイアウトです。そして現状の画像を追加しました。 現状では1980pxの横幅にコーディングをした際には同じような配置になるのですが、そこから横幅を縮めた時に文字と被ってしまったりしているので、その点をメディアクエリでpc版として設定している1200px以上の横幅では要素の配置が変わらないようにしたいです。
hatena19

2020/08/13 12:44

HTMLの画像のサイズも提示してください。また、HTML内には画像(imgタグ)は一つしかないですが。
guest

回答1

0

ベストアンサー

margin-top margin-left に絶対値でレイアウトの位置決めしていますが、これはやめましょう。
(各要素間の余白のためにmarginを使うのはいいですが、レイアウトのために使うのはNGです。)
同様に、position: absolute; での位置決めもやめましょう。
これらを使うと、レスポンシブに対応させるのは困難になります。

現在では、FlexBox または Grid でレイアウトを決めるのが主流です。
最初、理解するのに敷居が高いかもしれませんが、習得すると、
シンプルにレスポンシブに対応させることが可能です。

下記辺りで学習して、一から作り直した方が速いと思います。

もう迷わない!CSS Flexboxの使い方を徹底解説 | Web Design Trends

サクッとグリッドCSSを理解して、クライアントワークに使う | 新宿のホームページ制作会社 ITTI(イッティ)


とりあえず理想のレイアウト画像に近いレイアウトのものを作成してみました。
参考にしてください。

html

1<section class="main__section"> 2 <div class="left_col"> 3 <h2 class="section__header">「stay Iroha as Live」</h2> 4 <div class="section__paragraph"> 5 <p class="paragraph"> 6 テキストテキストテキスト<br> 7 屋久島の地で、、、いろはで、感じてほしいこと。<br> 8 <br> 9 作っていきたい空間。<br> 10 丸さんたちの想い。<br> 11 暮らしの体験宿、いろは<br> 12 <br> 13 English version About iroha. 14 </p> 15 </div> 16 <button class="section__button"> 17 Read more 18 </button> 19 </div> 20 <div class="right_col"> 21 <img src="https://placehold.jp/600x400.png" alt="" class="section__photo"> 22 <img src="https://placehold.jp/600x400.png" alt="" class="section__photo"> 23 </div> 24</section>

css

1.main__section { 2 display: flex; 3 position: relative; 4 padding: 1px; 5 max-width: 1200px; 6 margin: 0 auto; 7} 8.left_col { 9 width: 60%; 10} 11.right_col { 12 width: 38%; 13} 14 15.section__header{ 16 font-size: 40px; 17 font-family: 'Toppan Bunkyu Midashi Mincho'; 18 font-weight: bold; 19 letter-spacing: 0.05em; 20 margin-top: 20px; 21 margin-left: 20px; 22} 23.section__paragraph{ 24 margin-top: 76px; 25} 26.paragraph{ 27 font-size: 25px; 28 font-family: 'Toppan Bunkyu Mincho'; font-weight: normal; 29 line-height: 1.4; 30 text-shadow: 0px 3px 6px #707070; 31} 32.section__button{ 33 display: block; 34 width: 200px; 35 height: 60px; 36 border: 1px solid; 37 margin: 50px auto 0; 38 background-color: rgba(0, 0, 0, 0); 39 font-family: 'Toppan Bunkyu Midashi Mincho'; font-weight: bold; 40 font-size: 20px; 41 letter-spacing: 0.1em; 42} 43 44.section__photo{ 45 width: 100%; 46 height: auto; 47 margin-bottom: 20px; 48} 49 50.main__section::before { 51 content: ""; 52 display: block; 53 position: absolute; 54 top: 20%; 55 bottom: 20%; 56 left: 20%; 57 right: 20%; 58 background-color: #F8F8F8; 59 z-index: -1; 60}

Codepenサンプル

こまかい位置やサイズは適当ですのでお好みで修正してください。

** HTML **
main__sectionクラスの子要素に、left_col right_colクラス要素を追加した。2カラムになるようにmain__sectionクラスに display: flex; を設定した。

left_col内には、テキストの要素群を配置し、right_col内には画像(img要素)を配置した。

section__grayboxは装飾のみの要素であり、コンテンツとしては無意味なものなので削除しました。
この装飾はCSSの方で実装します。

** CSS **
全体のコンテナである .main__section の幅は、max-width で最大幅のみ設定します。
margin: 0 auto;で左右中央寄せします。

全体のレイアウトを決める幅などは % で指定します。
各要素間の余白はmarginで固定値で設定します。
こうすることで、レスポンシブ対応(画面幅が変わってもおおきくレイアウトがくずれない)できます。

背面のグレーのブロック(section__grayboxで実装されていたもの)は、::before疑似要素で実装しました。このような他の要素に重ねるものはposition: absolute;で配置します。

スマホ用には別にメディアクエリを使って1カラムのレイアウトにするといいと思います。
スマホ用にどのようなレイアウトをお望みかは不明なので、今回はこれは実装してません。

投稿2020/08/13 13:48

編集2020/08/13 14:54
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakedashi009

2020/08/13 15:04

詳しくありがとうございます。 基礎に立ち返って学習したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問