• TOP
  • ブログ
  • プロフィール
  • お問い合わせ
  • CSSで子要素を元に親要素を指定する【:has(),:not()擬似要素】

    CSSで子要素を元に親要素を指定する【:has(),:not()擬似要素】

    通常CSSといえば親要素を元に子要素を絞り込んでスタイルを指定するのが一般的で、子要素の要素名(タグ、クラス、IDなど)を元に親要素のスタイルを指定するということはできないように思います。

    例).top .contents、.about contentsなど

    しかし、子要素の要素名を元に親要素のスタイルを変える方法があります。

    :has()、:not()という擬似クラスを使います。

    例えば以下のようなhtmlがあったとします。

    <div class="wrapper">
        <div class="document">
            なんかコンテンツ
        </div>
    </div>
    
    <div class="wrapper">
        <div class="media">
            なんかコンテンツ
        </div>
    </div>

    このhtmlに対して、「div.mediaがあるdiv.wrapper」にだけ背景色を設定したいとなったとした場合、以下のようにcssを書くことで実現することができます。

    .wrapper:has(.media){
        background-color: red;
    }

    .wrapper:has(.media)という書き方をすることで、「子要素に.mediaという要素をもつ.wrapper要素」を指すセレクターとなります。
    つまり子要素によって、親要素のcssを書き分けることができたわけです。

    この時の「:has()」は擬似要素と呼ばれるcssセレクターの一種です。

    擬似要素

    擬似要素とはセレクターに付加することで要素の特定の条件のスタイルを変更するものです。
    よく使われるものでは、::before、::after(要素の前後に要素を追加する)、aタグの:hover(マウスを乗せた時のスタイル)などがあります。

    :has()

    :has()は「〜を持つ要素」という意味で、特定の条件に当てはまる場合にスタイルを有効にすることができます。
    例えば、「p:has(span)」であれば、「子要素にspanタグがあるpタグ」ということになります。
    この()の中にとれるのは子要素だけでなく、ul:has(+img)と書いて、「隣にimgタグがあるulタグ」を指すことができるなど、隣接セレクタや兄弟セレクタにも対応しています。

    使用例

    • ul:has([class])・・・クラス名がついている場合のみに有効なスタイルを指定できる。
    • h2:has(+img)・・・見出しの後に画像が来る場合にのみスタイルを適用したい場合に使える。

    :not()

    :not()は「〜を持たない要素、〜ではない要素」という意味で、指定した条件に当てはまらない要素を指定することができます。
    例えば、「p:not(.text)」であれば、「textクラスではないpタグ」を指します。
    この:not()も子要素を取れるほか、「li:not(:first-child)」と書いて一番最初のli以外という指定もできます。

    使用例

    • .element:not(:first-child) ・・・1番目以外を指定する。
    • section:not(+section)・・・sectionタグが隣接していないsectionタグのみを指定する。

    まとめ

    特定の条件をCSSで指定できるようになったことで、親要素から子要素を指定するだけでなく、子要素を条件として親要素のスタイルを設定することができるようになっています。

    自由にhtmlを組むことができるような案件であれば、classやIDを設定することでスタイルを設定できるのですが、CMSなど自由度の少ないhtmlに対してスタイルを設定したいときにも、発想と工夫でこのような要素を活用してデザインすることができます。

    今後はもっと複雑な条件分岐が設定できるというような話も聞きますので、より機能的なCSSが構築できるようになっていくのではないかと思います。
    参考:https://coliss.com/articles/build-websites/operation/css/css-at-function-and-if.html

    yori3

    2025年3月18日
    【Web】いろいろ試してみた話
  • 【WordPress】ブロックエディタ見出し15選

    【WordPress】ブロックエディタ見出し15選

    デフォルトのブロックエディタの機能で表現できる見出しのデザインを色々やってみました。

    下にそれぞれの作り方を説明していきます。
    説明内のキャプチャーは管理画面右側のブロックタブ内の設定項目の切り抜きです。

    ※テーマによってはできないものもありますので、ご使用のテーマごとにご確認ください。

    下ボーダー

    見出しブロックの枠線の下側にのみ、色とサイズを指定する

    左にボーダー

    見出しブロックの枠線の左側にのみ、色とサイズを指定する。
    テキストとのバランスを見て左パディングを少し開ける。

    左と下のボーダーで囲む

    見出しブロックの枠線の左と下に色とサイズを指定する。
    左の方が太いと見栄えが良さそう。

    上下のボーダーで囲む

    見出しブロックの枠線の上と下に色とサイズを指定する。

    立体的に見える表現

    見出しブロックの枠線の左と下にそれぞれ色とサイズを指定する。
    背景色に薄い色を指定するとそれっぽくなる

    背景グラデーション

    見出しブロックの背景にグラデーションを設定する。
    角度を90°にし、左端に単色(図では青)、右に不透明度0の色を指定して、右側の色を好きなグラデーションの長さになるように調整する。

    透明色の設定の仕方

    背景色+角丸

    見出しブロックに背景色とパディングを設定する。
    パディングはお好みの数値でOK。

    パディングの設定が見つからないという時はサイズのところの「+」をクリックするとパディングの項目を出すことができます。

    枠線のところで角丸を設定する。

    背景色+角丸(文字量で幅が変わる)

    上の「背景色+角丸」と同じ設定にした見出しブロックを横並びブロック(グループブロックで「横並び」を選択)の中に入れる。

    横並びブロックの中に入れると、見出しブロックに幅の設定項目(画像下)が追加されているので、これを「fit」にする

    アイコン付き

    見出しブロックをグループブロックの中に入れる。

    そのグループブロックの背景画像にアイコン画像をを設定し、位置とサイズを調整する。
    サイズを固定値にするときは、「タイル」を選択し繰り返しをオフにすると一つだけ置くことができる。

    そのままだとアイコンが文字にかぶるので、アイコンの分だけパディングを設定する。

    吹き出しつき

    グループブロックの中に見出しブロックと横並びブロック、さらに横並びブロックの中にグループブロックを設置する。

    横並びブロックの中のグループブロックの設定を以下のようにします。

    幅を「fixed」にして0px、最小の高さを0pxにする。
    枠線の設定を、上を見出しの背景と同じ色にし、他を不透明度0にして、同じサイズにする。

    エディター画面ではちょっとわかりづらいがこれで下向きの▼ができている

    横並びブロックの左側に少しパディングを取ることで、吹き出しの位置を調整する。


    両端に線を伸ばす


    横並びブロックの中に、区切りブロック、見出しブロック、区切りブロックの順に並べる。

    区切りブロックの幅を「fill」にすることで端まで伸びる。


    両端に線を伸ばす


    区切りブロックの幅を「fixed」にすると好きな幅に設定できる。

    途中で色変える線

    見出しブロックの下に横並びブロックを設置する。

    横並びブロックの背景にグラデーションを設定する。
    色を青、青、グレー、グレーの順で配置する。(実際使う時は任意の色でOK)

    図ではわかりづらいが、2番目の青と3番目のグレーを重ねている。
    こうすると背景色がパキッと割れた状態になる。

    この状態で角度を90°にすると、途中で色の変わる長方形ができる。

    横並びブロックの最小の高さを設定する。
    細すぎない方が色がわかりやすくなっていいかも。

    マーカー風

    見出しの背景にグラデーションを設定する。

    色を不透明度0、不透明度0、黄色、黄色の順に設置する
    2番目の不透明度0と3番目の黄色を重ねる。(上の「途中で色変える線」と同じように設定する)
    角度を180°(色のついた方が下に来るよう)に設定する。

    この状態ではマーカー線が端まで伸びてしまうので、横並びブロックの中に入れて、見出しブロックの幅をfitに設定すると、文字のところだけマーカーを引くことができる。

    両側にスラッシュ

    横並びブロックに、グループブロック、見出しブロック、グループブロックの順に配置する。

    見出しブロックのフォントサイズを「1em」にして、横並びブロックに任意のフォントサイズを設定する。
    これは後でスラッシュの大きさを文字サイズと合わせるため。

    両サイドのグループブロックの幅と最小の高さを「1em」に設定する。

    両サイドのグループブロックの背景のグラデーションを、
    白、白、黒、黒、白、白の順で色を設置して、2番目の白と3番目の黒、4番目の黒と5番目の白を重ね、中央に黒い線ができるようにする。

    角度を、左側を45°、右側を135°にする。

    カッコつき

    横並びブロックに、グループブロック、見出しブロック、グループブロックの順に配置する。

    見出しブロックのフォントサイズを「1em」にして、横並びブロックに任意のフォントサイズを設定する。
    これは後でカッコの大きさを文字サイズをベースに合わせるため。

    両サイドのグループブロックの幅を「1em」、最小の高さを「2em」に設定する。(ここは好きなカッコの大きさになるように調整)

    両サイドのグループブロックの枠線を、上、下、左(右側のブロックは右)にサイズ1px、文字色と同じ色で設定する。

    まとめ

    ブロックの機能だけで表現できる見出しを色々と作ってみました。
    グループブロックと組み合わせることで色々装飾ができるようになっています。
    また、WordPress6.7からは見出しブロックに枠線をつけることができるようになったので、ボーダーつきの見出しなど、見出しブロックだけで手軽に表現できる範囲も広がっています。

    まだまだあるかと思うので、思いついたら追加していこうと思います。

    yori3

    2025年1月19日
    【Web】いろいろ試してみた話
  • ハンバーガーメニュー作ってみた

    ハンバーガーメニュー作ってみた

    よくある3本線のハンバーガーボタンとそれによって開くメニューを、html、css、JSを使って作ってみたやつです。
    codepenにしたためてあったのを今更出す感じなので、実際作ったのは何年も前ですが・・・

    概要

    よくある3本線のボタンで、押すとメニューが画面全体に広がるものを想定しています。

    • クリックするとメニューが開いて、開いている間は閉じるボタン(×)の状態に変わる
    • メニューは縦に並び、画面内の空いたスペースには半透明の黒の背景が入る(その部分をクリックしても閉じる)
    • メニューが画面外に出た場合はスクロールできる

    といった仕様で作っていきます。

    コード解説

    まずは全体像から。

    See the Pen Hamburger by Yoriyasu Nishimura (@yori3) on CodePen.

    ハンバーガーボタン

    ハンバーガーボタンのhtmlは以下の部分です。

    <div class="headerNavToggle"><button class="headerNavToggle__btn"></button></div>

    .c-headerNavToggleのdivがボタン全体の丸い部分、buttonタグがハンバーガーの棒の部分を作っています。

    cssではbuttonタグのbefore、after擬似要素で上下の棒を作り3本線を形成しています(以下)。
    棒の位置を決めるのにtranslateを使ってるのは、後でアニメーションで動かすときに動かしやすいためです。

    〜〜略〜〜
          display: block;
          position: relative;
          width: 30px;
          flex-basis: auto;
          height: 2px;
          background-color: #333;
          &::before,&::after{
            display: block;
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: inherit;
            background-color: #333;
            border-radius: inherit;
            content: "";
          }
          &::before{
            transform: translateY(-10px);
          }
          &::after{
            transform: translateY(10px);
          }
    〜〜略〜〜

    アニメーションはJSでis-open、is-closeクラスを付けたり外したりして操作しています。
    is-close クラスなくても、デフォルトにアニメーション設定したらってお声もあるかもですが、そうするとページ開いたタイミングでもアニメーションが発火してちょっとかっこ悪いのでこうしてます。

    アニメーションでは、上下の棒(before、after擬似要素)の位置と角度を変更することで、×の形になるようにしています。
    やり方はいろいろあると思うんですが、個人的にこのスタイルが色々な形やアニメーションの要望に対応しやすかったので、基本的にはこれで対応してます。

    〜〜略〜〜
          &.is-open{
          .headerNavToggle__btn{
            background-color: transparent;
            &::before{
              background-color: #333;
              transform: translateY(0) rotate(45deg);
              animation: menuBtnTopOpen .5s;
            }
            &::after{
              background-color: #333;
              transform-origin: center center;
              transform: translateY(0) rotate(-45deg);
              animation: menuBtnBottomOpen .5s;
            }
          }
        }
    〜〜中略〜〜
    @keyframes menuBtnTopOpen{
      0%{
        transform: translateY(-10px) rotate(0);
      }
      50%{
        transform: translateY(0) rotate(0);
      }
      100%{
        transform: translateY(0) rotate(45deg);
      }
    }
    〜〜略〜〜

    メニュー本体

    メニュー本体のhtmlは以下の通りです。

    かなりdivの重ねがけになってます。

    <div class="header__nav">
        <div class="headerNav">
          <div class="headerNav__inner">
            <div class="headerNavList">
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page A</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page B</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page C</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page D</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page E</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page F</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page G</a></div>
              <div class="headerNavList__item"><a href="" class="headerNavList__link">Page H</a></div>
            </div>
          </div>
        </div>
    </div>

    .header__navはヘッダー内でのレイアウト用。今回はpositionで位置決めしています。
    あと、ヘッダー内においては画面幅いっぱい表示で、後ろに黒の半透明を敷くので、その部分もこのクラスで定義しています。

     〜〜略〜〜
       &__nav{
        position: absolute;
        right: 0;
        top: 0;
        width: 100vw;
        height: 100vh;
        padding-top: 100px;/* headerの高さに合わせています */
        pointer-events: none;
        transition: .5s;
        transform: translateY(-100%);
        z-index: 5000;
        &::after{
          display: block;
          position: absolute;
          left: 0;
          top: 0;
          width: 100%;
          height: 100%;
          background-color: rgba(#000,.5);
          z-index: -1;
          opacity: 0;
          content: "";
        }
        &.is-open{
          transform: translateY(0);
          pointer-events: auto;
          &::after{
            transition: .5s;
            transition-delay: .5s;
            opacity: 1;
          }
        }
      }
    〜〜略〜〜

    .headerNavはメニューそのものの大枠になります。
    レイアウトと分けたのは、他の箇所(例えばサイドバーやフッターなど、背景や100%表示はいらないところ)で同じメニューを使いたい場合、このdivタグから中だけを持っていけば、その場所でも使うことができるようにという考えからです。
    なのでこのクラスにかかるスタイルもヘッダー内でしか使わなさそうなheightやoverflowなどは違う部分で適用しています。

    〜〜略〜〜
       &__nav{
    〜〜中略〜〜
        .headerNav{
          max-width: 400px;
          height: 100%;
          margin-left: auto;
          background-color: #f5f5f5;
          pointer-events: auto;
          overflow-y: scroll;
          overflow-x: hidden;
          overscroll-behavior: contain;
        }
      }
    〜〜略〜〜

    .headerNavListとheaderNavList__item、headerNavList__linkはメニューのリストを作るためのクラスとして機能しています。

    〜〜略〜〜
    .headerNavList{
        &__item{
          border-bottom: 1px solid #ccc;
        }
        &__link{
          display: flex;
          align-items: center;
          gap: 1em;
          padding: 1em;
          font-weight: bold;
        }
      }
    〜〜略〜〜

    メニューを開いているときの背景スクロールの停止

    JavaScriptで操作しています。
    メニューを開いたときにbodyタグにposition:fixedを当てることでコンテンツ部分のスクロールを禁止しています。
    それだけだと、開くたびにページトップに戻ってしまうので、scrollpos変数に開く前のスクロール位置の情報を入れることで、閉じたときにその位置に戻れるようになっています。また、その値をbodyタグのtopの値にすることで開いたときにコンテンツの位置がずれて見えないようにしています(bodyタグ内全体がスクロール値分上に上がるので、見かけ上は画面がずれてないように見える)。

    let scrollpos = 0;
    
    //開いたとき
    scrollpos = window.scrollY; //・・・開くときの画面のスクロール位置を取得
    bodyTag.classList.add('is-fixed'); //・・・bodyタグにis-fixedをつける(position:fixed;とかの設定)
    bodyTag.setAttribute('style','top:'+-scrollpos+'px'); //・・・開くときの画面のスクロール位置の負の値をtopに設定
    
    //閉じたとき
    bodyTag.classList.remove('is-fixed'); //・・・is-fixedクラスをとる
    bodyTag.setAttribute('style','top:0'); //・・・topの値を0に戻す
    window.scrollTo( 0 , scrollpos ); //・・・画面のスクロール位置を保存していたスクロール位置に戻す

    まとめ

    よくあるハンバーガーボタンを作ってみました。
    ボタンの組み方だったり、中のメニューの組み方だったり、色々やり方はあると思うんですが、いくつかサイト制作を経験する中で、この組み方が色々なパターンに対応できてそうな感じがしてます。
    必要な要素は押さえられているかと思うので、あとはサイトに合わせてカスタマイズして使えると思います。

    yori3

    2025年1月10日
    【Web】いろいろ試してみた話
  • 超個人的なVK Blocksのおすすめの機能

    超個人的なVK Blocksのおすすめの機能

    この記事は、「Vektor WordPress Solution Advent Calendar 2024」の6日目の記事です。

    VK Blocksとは

    VK Blocksは、Gutenberg のブロックやツールバーを拡張するプラグインです。
    通常では使えないカスタムされたブロックが多数用意されていて便利です。

    僕自身もレスポンシブスペーサーブロック(画面幅に応じて大きさを変えることができるスペーサーブロック)など、よく使っています。

    VK Blocks

    ツールバーにも注目

    しかし、今回注目したいのは、ブロックの方ではありません。

    このプラグインはツールバーの機能も拡張してくれます。
    このツールバーの拡張が、痒い所に手が届く感じでとても助かっています。

    ツールバーとは、ブロックにフォーカスしたときに上(画面内の位置によっては下)に出てくる、ブロックに変更を加える要素が載せられたバーのことです。

    見出しや段落ブロックのツールバーは、デフォルトでは太字や斜体のほか「V(下矢印)」をクリックすると、ハイライトや打ち消し線などが選択でき、ドラッグで選択した範囲にそれらのスタイルを当てることができます。

    デフォルト

    VK Blocks有効化

    No wrapを活用

    このツールバーの中でも個人的には特に「No wrap」という機能がおすすめです。

    「No wrap」を選択すると、選択範囲に「white-space: nowrap」というスタイルが適用された状態になります。
    この状態になると、コンテンツ幅が狭まってテキストが改行していくときに、この範囲の文字は途中で折り返さず、まとまって下の行に落ちてくれるようになります。


    1行目の後ろに空白があるが、選択したところにNo Wrapを適用してるので、そこでまとまって下の行に落ちていることがわかる
    ピンクのマーカー部分にNo Wrapを適用している

    これを利用すると、画面幅によって読みづらいところで改行されることがなくなるので、意図した改行を実装しやすくなります。

    デバイスごとに改行位置を変えたいというようなときには、デバイスごとに改行を入れる機能もあり、そちらを使うのでもできます。ですが、このやり方であれば、ちょうど文章がコンテンツ幅に収まらなくなったポイントで改行してくれるので、複数のデバイスサイズなどを考慮することなく、読みやすい位置での改行をすることができます。

    幅が狭まると、文の途中で折り返してしまう

    途中で改行せず、読みやすいところで改行することができる

    white-space: nowrapってなに?

    一応、「white-space: nowrap」ってどんなcssなのかを書いておこうと思います。

    「white-space: nowrap」とは、指定範囲の途中でテキストが折り返すのを禁止するcssです。(brタグは効く)

    例えばテキストが1文字だけ落ちてしまうときなど、1行に収めて読みやすくすることができます。

    中途半端に1〜2文字落ちてしまう時とか

    無理やり収めることができる

    ※なお、指定した範囲が長すぎると、コンテンツ幅を飛び出してしまうので注意が必要です。

    テキストが折り返さないということはその指定された範囲が一つのまとまりとして扱われるため、その部分が画面内に収まらなくなると下に落ちるしかなくなるということで、文章の折り返し位置を操作することができるというわけです。

    赤字がwhite-space:nowrapを適用している箇所

    まとめ

    • VK BlocksはGutenberg のブロックやツールバーを拡張するプラグインだよ
    • ブロックだけでなくツールバーの機能も拡張してくれるよ
    • ツールバーの「No wrap」という機能を使うと、改行をいい感じにできるよ

    ということで、VK Blocksのお話をさせていただきました。
    まあ、ほぼwhite-spaceの話だったわけですが・・・。

    こういった痒いところに手が届く感じの機能を提供してくれるプラグインはやはり重宝しますね。
    特に改行位置は地味なようで、Webサイトの可読性を考えると重要なポイントで、どこまでこだわるか、どこで妥協するかなど苦心するポイントの一つではあると思うので、それを調整できる機能を提供してもらえるのはとても助かります。

    自分自身、VK Blocksをそこまで使い込んでいるわけでもないので、まだまだ知らない機能があったり、実はとんでもない勘違いをしてる可能性もありますが、そこはいろいろ教えていただけるとうれしいです。

    ブロックやツールバーの拡張は自分でコードを書いて実装することもできますが、こういったプラグインを活用していくことで構築の時間を短縮できたり、制作者や詳しい人の力を借りることもできるので、臨機応変に活用していけるといいのかなと思います。

    yori3

    2024年12月6日
    ツールとか使い方とか
  • 岐阜 WordPress Meetup #76に参加してきた

    岐阜 WordPress Meetup #76に参加してきた

    11月15日に開催された、岐阜 WordPress Meetup #76に参加してきました。
    https://www.meetup.com/ja-JP/gifu-wordpress-meetup/events/304076652

    WordPressのテーマ開発者である、石川さん(『lightning』『X-T9』など)とキタジマタカシさん(『Snow Monkey』、『unitone』など)のお二人が登壇されるとのことで、ぜひお話を聞きたいと思い参加しました。

    登壇① 『プロっぽいページには理由がある ブロックパターン時代のページデザインのコツ』

    1つ目の登壇は、株式会社ベクトルの石川さんによる『プロっぽいページには理由がある ブロックパターン時代のページデザインのコツ』。
    ブロックエディタでサイトを作るときにどうやったらプロっぽいサイトにできるかという視点で、ブロックの取り扱い方のポイントについてお話しいただきました。

    石川さんのあげられたポイントとしては以下の2つでした。

    • 情報のグルーピングを徹底する
    • 情報の重要度を徹底する

    これらのポイントを実現するために注意する点として、余白を挙げられていました。
    ブロックエディタは自由に余白の設定やスペーサーブロックが入れられるため、余白が自由すぎるということがあります。
    そのため設計者以外にルールが伝わってないとトンマナが崩れるという問題が発生します。

    そこで余白のガイドラインを用意しておくことで担当者による違いをなくし、サイト内の統一感のあるデザインをしていこうということでした。

    ベクトルさんの余白のガイドラインはこちら
    https://patterns.vektor-inc.co.jp/margin-guide/

    個人的な考えとしても、Webサイト制作では情報の区切りやまとまりを意識することが大事だと思っていて、この話はかなり腑に落ちました。

    ガイドラインを作るのは時間がかかるところだとは思うのですが、あらかじめ余白など数値のルールを決めておくことで、更新時のデザインのブレがなくなることや、制作時に迷わなくなるというメリットもあると思うので、意識して取り入れたいところです。

    登壇② 『ブロックテーマでサイトをつくってみよう(unitone 編)』

    2つ目の登壇は、キタジマさんによる『ブロックテーマでサイトをつくってみよう(unitone 編)』。
    実際にunitoneをインストールしたWordPress環境を使って、ページを作りつつ、unitoneのオリジナルブロックの解説をお伺いしました。

    詳しくはunitoneのサイトを参照いただくのが良いと思いますが、unitoneは『Every Layout』という書籍で紹介されているレイアウトの考え方を取り入れているそうで、それがWordPressのブロックの相性がいいのではないかという考えのもと設計されているとのことでした。

    実際触ってみたところでも、さまざまなレイアウトを実現するためのブロックが用意されていて、驚いたり、感心したり、一言ではまとめられないほどすごいテーマだと感じました。

    unitoneのブロックの考え方は、『Every Layout』に書かれている考え方をもとに設計されているそうで、自分がWordPressテーマを編集するときや、WordPressを使わない制作の場面でも取り入れるとよさそうな考え方がたくさんあるなと思いました。

    感想

    テーマ制作者のお二人のお話は、どちらも余白やレイアウトというcssの設計の部分に関するところだったのですが、自分自身もcssを書くので、思い当たるところもたくさんあり、WordPressやテーマと関係がないところのWeb制作という意味でもとても参考になったと感じています。

    実際、自分自身はあまり既存テーマを利用してサイト制作をするということはしていないため、テーマそのものにお世話になることは少ないのですが、それぞれのブロックにどういうcssが当たっているかなどをみることはよくあるので、今回、どういった考え方で設計されているかということを聞けたのはとても良かったです。

    テーマとして良いものであることはもちろんですが、Web制作者としてはどのようにテーマが作られているのかを見るのも勉強になると思いました。

    yori3

    2024年11月17日
    【Web】いろいろ試してみた話
  • 【WordPress】ブロックエディタで画面端まで広がる画像とテキストのカラムレイアウトの作り方

    【WordPress】ブロックエディタで画面端まで広がる画像とテキストのカラムレイアウトの作り方

    下のような画像とテキストの2カラムのコンテンツで、画像が画面端まで、テキストは固定幅(もしくはコンテンツインナーの幅)になっているようなレイアウトをブロック再現してみようと思います。

    こういうやつです(参考:https://www.enpay.co.jp/service/top)

    実装方法

    ①カラムブロックを 50/50 で配置し、画像とテキストをそれぞれのカラムに入力します

    ②テキストはグループブロックでラップしておきます。

    ③カラムブロックの幅を「全幅」にします。

    ④テキストをラップしたグループブロックにテキストの最大幅を設定し、配置を左寄せにします。

    ⑤カラムブロックの横方向のブロックの間隔を「なし」(0)にします。

    ⑥テキストをラップしたグループブロックの水平方向のパディングを設定します。(コンテンツ幅と揃うようにするときれいかも)

    以上の操作をすることで、以下のようなレイアウトが完成です。(上記の手順はどの順番で操作しても問題ありません)

    ⑤〜⑥でカラムブロックの間隔を0にして、テキストのグループにパディングを設定しているのは、モバイルで縦積みになったときに画面端にテキストがくっついてしまうのを防止するためです。

    まとめ

    以前、案件で対応したときにがっつりCSSを書いて対応したのですが、今ならブロックだけでできるのでは?と思いついてやってみました。
    コーポレートサイトなどでよく見かけるレイアウトなので使い道はありそうかなと思います。

    余白や間隔の値や付け方はテーマによって異なるので、同じようにできないテーマもあることは注意が必要です。
    (この記事での手順の画面はTwenty Twenty-Fourのものを使用しています)

    yori3

    2024年11月10日
    【Web】いろいろ試してみた話
1 2 3 … 11
次のページ

©️ 2024 yori3 All rights reserved.