🎃

Wordpressコンタクトフォーム7でテキストフォームを横並び

2023/05/01に公開

Contact Form 7(コンタクトフォーム7)で、名前を姓名の順で入力する場合、姓と名のテキストフォームを横に並べたいと希望する場合も多いと思います。
今回私は、ChatGPTと会話しながら、テキストフォームを横並びにするコードを書きました。


<div class="from_name">
    <div class="item-box">
        <p><label> 姓(必須</p>
        <p>[text* your-name class:name01]</p>    
    </div>
    <div class="item-box">
        <p><label> 名(必須)</p>
        <p>[text* your-name2 class:name02]</p>   
    </div>    
</div>

CSSは、こちら

.from_name {
  display: flex;
  flex-wrap: wrap;
}

.item-box {
  flex: 1;
  margin: 0 10px;
  max-width: 300px; /* 任意の値 */
  width: calc(50% - 20px);
  box-sizing: border-box;
}

/* 最初の.item-box要素を左寄せに配置 */
.item-box:first-child {
  margin-left: 0;
}

ChatGPTの解説は、こちらです。

上記のCSSでは、.item-box要素に対してwidth: calc(50% - 20px);を追加しています。これによって、.item-box要素の幅を親要素の50%に設定し、marginプロパティによる余白分の幅を差し引いた値を指定しています。また、box-sizing: border-box;を追加することで、.item-box要素の幅にpaddingやborderが含まれるようにしています。

これによって、.item-box要素は同じ幅になります。ただし、.item-box要素の数を増やした場合や、max-widthプロパティの値を変更した場合には、適切な値に調整する必要があるかもしれません。

上記のCSSでは、.item-box:first-childセレクタを使用して、最初の.item-box要素に対してmargin-left: 0;を指定しています。これによって、最初の.item-box要素は左寄せに配置されます。

また、余白を左右対称にしたい場合は、.item-box要素のmargin: 0 10px;をmargin: 0 5px;など、左右の余白幅を半分にする値に変更することができます。

二つ目のテキストフォームが右にわずかに短くなる

今回左側を揃えた関係で、右側が他のテキストフォームよりも、僅かに短くなりました。
これは、適宜調整してください。

一応ChatGPTに質問してみたら、下記のコードを書いてくれました。

.from_name {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between; /* 右寄せではなく、両端に寄せる */
}

.item-box {
  flex-basis: calc(50% - 20px); /* flex-basisプロパティを使用して、均等に配置 */
  margin: 0 5px; /* 余白幅を半分にする */
  box-sizing: border-box;
}

/* 最初の.item-box要素を左寄せに配置 */
.item-box:first-child {
  margin-left: 0;
}

/* スマホの場合 */
@media screen and (max-width: 480px) {
  .from_name {
    flex-direction: column;
  }

  .item-box {
    flex-basis: 100%;
    margin: 0;
  }
}

パソコンなどの場合は、BOXが両端によって、スマホの場合は、縦にBOX要素が並びます。
でも、若干右が短くなります。
これは、marginの設定が効いているためです。
このあたりは、実装する際に、調整してください。

Discussion