Letoro*(レトロ) は山形市のウェブ制作事務所
CMSを使ったサイト構築やリニューアルをお手伝いします

ブロックエディターで float できるかやってみた

Posted in: note#ablogcms#AdventCalendar#CSS

この記事は a-blog cms Advent Calendar 2025 の 13日目。

ブロックエディター、面白いです。使えば使うほど、もっと何かできないかと考えてしまいます。
先日の a-blog cms Training Camp 2025 でレイアウトや文字表現についてお話しました。その中で少し話題にしてしまった画像の回り込み(float)について、別の方法を思いつきました。

floatとは

CSSのプロパティの一種。画像を左右に配置して、その周りをテキストや要素が回り込むというもの。昔はこれでカラムレイアウトを作っていましたね。同時に必須だったのが、回り込み解除。clear=”both”を設定した疑似要素も用意したりして。

これまでのa-blog cmsでは、class=”clearHidden” があちこちに存在していたため、エントリー編集でつくるページコンテンツに限界がありました。ver.3.2で float配置がなくなったため、レイアウトの自由度は高くなったと感じます。

float がなくなってできなくなった回り込み。必要かどうかは賛否あるかと思いますが、レイアウトのパターンとして、持っておきたいところです。

ブロックメニューとCSSで回り込みができた

エントリー内の各ユニットはブロック要素として出力されています。ユニット単位では、どうやっても回り込みはできません。ブロックエディターも同様。エディター内で画像とテキストを入力すると、それぞれ幅100%のボックスで表示されるため縦に並びます。

ただ、出力ソースをよく見ると、画像とテキストが並列にならんでいて、できそうな感じがしました。クラスをつけることができれば。

1. 回り込み用のクラスをつくる

ブロックエディター設定 → ブロックメニューにて
画像ブロックを追加し、ラベル「左回り込み」、クラス「float-left」を設定。同様に「右回り込み」も作成する。

◎クラスの場所を確認

画像要素にクラスを付与したときのソースを確認します。

<div class="media-image-block width="100%">
  <figure class="float-left">
    <img src="メディアのパス">
  </figure>
<div>
<p>新しいデザインの潮流を支えるタイプフェイス。言葉の豊かな ....</p>

このようになっています。
float-left が付与される figure の親要素(media-image-block)をインラインブロック化して、サイズを小さくする必要があります。そこで登場するのが、CSS擬似クラス関数 :has() です。

2. CSSを設定する

子要素に .float-left があったら .media-image-block を float する
以下は、回り込ませる画像の親要素サイズを40%にしたとき

.media-image-block:has(.float-left) { // 左回り込み
    display: inline-block;
    width: 40%;
    margin: .25em 1.5em 1.5em 0;
    float: left;
}
.media-image-block:has(.float-right) { // 右回り込み
    display: inline-block;
    width: 40%;
    margin: .25em 0 1.5em 1.5em;
    float: right;
}

これで、ブロックエディターの中で画像の回り込みができるようになりました。

回り込みを解除するブロックも用意

float したら解除。レイアウト崩れの原因だから当たり前のようにclear=”both”をどこかに忍び込ませていましたね。画像の高さよりテキスト量が少ないときは「2カラムに分割」を使えばいいのですが、一応用意しておきます。

水平罫線で解除ブロックをつくる

回り込みの解除に、水平罫線ブロックを使います。
ラベルは「余白」、クラス「clear-both」です。

このまま使うと水平罫線が表示されるのでCSSで調整。

hr.clear-both {
    clear: both;
    border: none;
}

まとめ

いかがでしょうか。
レスポンシブ対応を行えば、けっこう現実的な設定かと思います。

ちょっと難点だったのは、編集画面でブロック左側[+][⋮⋮]が操作できないことがあったこと。回り込み表示するように admin-editor.css に追記したところ、float した際の重なりが原因なのか移動もコンテキストメニューも出せませんでした。

まだまだブロックエディターであれこれやってみたいと思います!