odecember1205
@odecember1205

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

画像と文字を横並べ、テキストのインデント

解決したいこと

以下から、写真とテキストを横並びに表示させたいです。
また、おはようございますの次にインデントをかけたいです。

スクリーンショット 2022-11-03 11.40.24.png

完成図は下の通りです。
IMG_0896.jpg

該当するソースコード

ソースコードを入力

該当するソースコード

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="style.css">
        <title>メニュー</title>
    </head>
    <body>
       
            <div class="main">
                <div class="contents">
                    <span>コンテンツ</span>
                </div>
                <div class="text">
                    <h1>テキスト</h1>
                    <!-- <div class="flex"> -->
                        <figure class="image"><img src="img/path-gfbcb81fc1_1920.jpg" width="250px"></figure>
                          <p>
                           こんにちはもう秋ですね。
                          </p>
                        <figure class="image"><img src="img/3ab79a1f126670f833ef14ac2b2306bf_t.jpeg" width="250px"></figure>
                          <p>
                           冬がやってきましたね。
                          </p>
                       
                    <!-- </div> -->
                    <h2>テキスト</h2>
    
                    <p>
                        ① おはようございます<br>
                        こんにちは<br>
                        こんばんは
                    </p>
                    
                </div>
            </div>
        </article>
   
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
 
        <script>
        $(function() {
        $('.toggle').click(function() {
           $(this).toggleClass('active');
           $('#toggle-menu').toggle();
          });
        });
        </script>
</body>
</html>

該当するソースコード

* {
    margin: 0;
    padding: 0;
}

body {
    /* padding-top: 90px;  */
    background-color: #f8f8f8;
}
h1{
    margin-left: 30px;
    margin-top: 20px;
    font-size: 30px;
}
h2{
    margin-left: 30px;
    margin-top: 20px;
    font-size: 25px;
}


 

.main{
    margin-top: 0;
    border-radius: 5px;
    border: 2px solid #97C1E5;
    display: inline-block;
    margin-left:20px;
    margin: 15px;
}
.contents{
    color: #000000;
    background-color: #E9F1FF;
    border-color: #97C1E5;
    padding: 10px 15px;
    border-bottom: 2px solid #97C1E5;
    display: block;
}
p{
    font-size: 20px;
    font-family: serif;
    text-indent: 1em;
    margin: 35px;
    line-height: 2;
}
.flex {
    display: flex; /*横並び*/
  }
   .image {
    margin-left: 60px;
    padding: 0;
    overflow: hidden;
    position: relative;
  }
  
    

自分で試したこと

<画像と文字の横並べ>
全体をdivで囲い、display:flexをしましたが、2枚目の画像も横並びになってしまいました。

<テキストのインデント>
classを付けて、margin-leftしましたが、変化は見られませんでした。

よろしくお願い致します。

0

1Answer

やり方はたくさんあります。以下は一つの例です。

まず画像とテキストが横並びにならないのは、画像の外側のfigure要素も、その次のp要素も、ブロック要素だからです。ブロック要素を横に配置する方法もありますが、ここではそれらをインラインブロック要素に変えます。

figure {
  display: inline-block;
}
figure ~ p {
  display: inline-block;
}

すると、HTML上で figure p figure p の順に記述されているのがすべてインラインになってしまうことになりますので、2番目の figure の前に br を挿入すればよいでしょう。

これで画像の右にテキストが来ました。上下の位置を中央揃えにしたければ、.image に vertical-align: middle; を加えます。

あいさつのところのインデントですが、次のテクニックが使えます。

p {
  padding-left: 1em;
  text-indent: -1em;
}

2行目以降のインデントの指定というものはないので、すべての行に対して padding-left で字下げをし、最初の行だけ text-indent にその分のマイナスの字下げをして元に戻してあげるわけです。

0Like

Comments

  1. @odecember1205

    Questioner

    ご丁寧にありがとうございます。
    望み通りのことができてよかったです。
    誠にありがとうございました。

Your answer might help someone💌