protein_d
@protein_d (k .com)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

CSSで思い通りの配置にできません。

Q&A

Closed

解決したいこと

どうしてもこの画像の配置になりません。困っています・・・。IMG_8666.jpeg


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
    <meta name="viweport" content="width=divce-width">
    <title>weve</title>
 </head>

 <header>
    <div class="title">
    <img src="images/IMG_8661.PNG">
    </div>
 </header>

    <body>
        <div class="container">

            <div class="big_item">
                <img src="images/IMG_2470.JPG" alt="">
            </div>
            

            <div class="text">
                <p>テキスト</p>
            </div>
            </div>
        </div>

            <div class="item">
                <ul>
                <li><img src="images/IMG_2343.jpg" alt="#"><a href="https://ncode.syosetu.com/n7954hb/" alt="#">
                    <figcaption></figcaption></a></li>

                <li><img src="images/IMG_2771.JPG" alt="#"><a href="https://kakuyomu.jp/works/16816452221467494905" alt="#">
                    <figcaption></figcaption></a></li>

                <li><img src="images/IMG_2781.JPG" alt="#"><a href="https://www.alphapolis.co.jp/novel/716043600/375514143" alt="#">
                    <figcaption></figcaption></a></li>
                </ul>  
        
        </div>```

     ```'CSS'



* {
  box-sizing: border-box;
  margin: 10px;
  width: auto;
}

body {
  text-align: center;
   width: auto;
}

.big_item {
  width: auto;
}

.item ul {
  display: flex;
  text-align: center;
}

.item li {
  list-style: none;
  
}

.item li img {
  width: 250px;
 
}

.container{
  display: flex;
  
  
}


.text {
  margin: 20px;
  width: 400px;
  text-align: center;
  color: #010079;
  text-shadow: 0 0 5px white;
  padding: 0.3em 0.5em;
  background: -webkit-repeating-linear-gradient(-45deg, #cce7ff, #cce7ff 3px,#e9f4ff 3px, #e9f4ff 7px);
  background: repeating-linear-gradient(-45deg, #cce7ff, #cce7ff 3px,#e9f4ff 3px, #e9f4ff 7px);
  
}```

最初はgridで大きいimgとテキストをクラスづけにしてgridカラムを1fr1frで分けようとしましたが、その下のリストが配置できなくなってしまい現在のコードに変形しました・・・。
どなたかこの写真のような配置になる方法を教えていただけませんか?
0

5Answer

質問の際は以下記事を参考に,ソースコードをコードブロックで囲んでください.

1Like

こんな感じでしょうか?

See the Pen Menu grid sample by Verclene (@verclene) on CodePen.

flexの中身に適宜flex:1を指定してサイズが調整されるようにしています.
リストに関してはアイテムの間にflex:1な空要素を挟んで調整を試みています.

この手のデザインは画面が小さすぎる場合に配置が崩れたり,大きすぎる場合に要素が離れすぎたりするので,必ず最大幅やメディアクエリを指定する等して別途スタイルを指定してください.
いかなる場合でも,width:400pxなど大きいサイズで要素を固定すると,レイアウトしづらくなることがありますので,サイズ変更を許容するかposition:absolute等で重ねる等の工夫をすると良いでしょう.

1Like

Comments

  1. @protein_d

    Questioner

    詳しくありがとうございます!
    Flex:1というやり方をしらなかったので助かりました。
    私の表記では問題だらけのようですね。
    もう少し基礎から勉強し直してきます。

まず、マークアップバリデーションをかけて、構文エラーを潰しましょう。
HTMLの構造が正しくないために、意図するレイアウトにならない場合があります。

<body>の前に<header>があるのは間違っています。

また、 </div>がひとつ多いようです。

抜粋
<div class="container">
  <div class="big_item">
   <img src="images/IMG_2470.JPG" alt="">
  </div>

  <div class="text">
    <p>テキスト</p>
  </div>
-  </div> ← 不要なdiv
</div>

<figcaption>でマークアップするなら、親に<figure>が必要かと思います。
参考: 図キャプション要素 - HTML: HyperText Markup Language | MDN

リンクにはaltは必要ありません。入れるのであればtitleが良いでしょう。

できる限りHTML構造を変更せずにレイアウトを整える方法を考えてみました。

ウィンドウサイズを考慮した作りではないので、[0.25x]で表示するか、直接ページを開いてもらった方がイメージしやすいかと思います。
CSSに追加・修正したコメントを入れました。

他の回答者もおっしゃっていますが、レスポンシブWebデザインを目指すのであれば、サイズをpxで固定するのは良くないです。

どうしてもサイズを固定したい場合は、最大・最小値を追加したり、メディアクエリなどを使用して出しわけを検討すると良いと思います。

ただし、HTMLからサイズを削除してしまうと表示速度に問題が出てくるので、HTML上のサイズは外さないようにしましょう。

See the Pen Qiita|CSSで思い通りの配置にできません by Mari Takahashi (@mrd-takahashi) on CodePen.

Flexboxについては次のチートシートがわかりやすいと思います。
日本語対応!CSS Flexboxのチートシートを作ったので配布します | Webクリエイターボックス

1Like

詳細ありがとうございます!
このパターンを下にあと三個用意したメニューコンテンツを作りたくて、どうにかこうにか作成したのですが、サーバーにアップロードしたらご指摘通りに文字列がおかしかったせいで、コードが全ておかしくなったしまいおじゃんになりました😢🌊意味がわからないうえに、めっちゃ時間かかったのですごく凹んでます。
このコードを参考にもう一度がんばります。
ありがとうございました。

1Like

ご指摘ありがとうございます。
バッククォートを追加さていただきました。

0Like

Comments

  1. @protein_d

    Questioner

    2人とも、ご指摘&詳しい解説ありがとうございます!
    根本的なところが間違っていたようです。
    お二人のLINKをよく読んで勉強してきます。
    ありがとうございました!

Your answer might help someone💌