SWELLでテーブル(表)のセル幅を自由に変える方法

※当サイトにはプロモーションが含まれています。

クライアントクライアント

SWELLで作ったサイトの、この表の2列目の幅をもう少し狭くしてくれ!

にゃテックにゃテック

おけまるだにゃ。

ワードプレス(WordPress)テーマの「SWELL(スウェル)」には、テーブル幅を調整する機能はあるのですが、2列目、3列目、4列目・・・と、それぞれの列(カラム)ごとにテーブル幅を調整することはできません。

そのため、1、2列目の文章が短く、3列目が長い場合、下記のようなテーブルとなってしまいます。

SWELL|テーブル

にゃのらいとにゃのらいと

3列目の幅をもう少し広くしたいにゃ。

確認した限り、このセル幅を調整できる機能はSWELLには見当たらなかったので、テーブル(表)の横幅を自由に変更するJavaScriptを作成してみました。

なお、検証に使用したSWELLの環境は以下のとおりです。

ワードプレス環境

SWELLバージョン:2.14
WordPressバージョン:6.8.x
PHPバージョン:8.2.x
サーバー:エックスサーバー

※セキュリティの観点から、マイナーバージョンの一部をxとさせて頂きます

テーブル(表)の横幅を自由に変更するカスタマイズ

今回、作成したswellのテーブル(表)のセルの横幅を自由に変更するカスタマイズは、JavaScriptを使用します。

そのため、他の設定内容と競合しないように、テーブル設定 > テーブル1列目の横幅 の設定は空欄にしておきます。
SWELL|テーブル設定 > テーブル1列目の横幅
また、「各列で最低限維持する幅」の設定もオフにしておきます。
SWELL|各列で最低限維持する幅

①クラスを付与する

まずは、テーブルを作成します。

テーブルを作成したら、その親ブロックを選択して、高度な設定 > 追加 CSS クラス の箇所に以下のクラスを付与します。

nyastom-table-1
SWELL|高度な設定 > 追加 CSS クラス
テーブルのデザインを「ストライプ」や「シンプル」、「二重線」などにしていた場合は、予め追加CSSが記載されているので、半角スペースで区切って、nyastom-table-1を記載します。
SWELL|高度な設定 > 追加 CSS クラス

②JavaScriptについて

テーブル(表)の横幅を自由に変更するJavaScriptです。

document.addEventListener("DOMContentLoaded", function () {

// テーブルごとの幅設定(列数に合わせて配列指定)
const tableSettings = {
"nyastom-table-1": [10, 20, 70], // 3列の例
"nyastom-table-2": [20, 30, 30, 20], // 4列の例
"nyastom-table-3": [15, 15, 20, 20, 30], // 5列の例
};

// 設定を1つずつ適用
Object.keys(tableSettings).forEach(className => {
const widths = tableSettings[className];
document.querySelectorAll(`figure.${className} table`).forEach(table => {
const firstRow = table.querySelector("tr");
if (!firstRow) return;
const cols = firstRow.children.length;
if (cols !== widths.length) return; // 列数と設定が一致する場合のみ適用

// 各列に幅を割り当てる
for (let i = 0; i < cols; i++) {
table.querySelectorAll("tr").forEach(row => {
if (row.children[i]) {
row.children[i].style.width = widths[i] + "%";
}
});
}
});
});
});
にゃテックにゃテック

上記のJavaScriptについて説明します。

テーブルごとの幅設定

テーブルごとの幅の設定は、下記の箇所でおこなっています。

"nyastom-table-1": [10, 20, 70], // 3列の例
"nyastom-table-2": [20, 30, 30, 20], // 4列の例
"nyastom-table-3": [15, 15, 20, 20, 30], // 5列の例

[10, 20, 70]という箇所で、1列目の幅が10%、2列目の幅が20%、3列目の幅が70%になるように設定をしています。

つまり、nyastom-table-1というクラスを付与すると、1列目の幅が10%、2列目の幅が20%、3列目の幅が70%のテーブルになります。

もちろん、この数値は変更可能なので、[10, 10, 80]とすれば、1,2列目が10%、3列目の幅が70%になります。

同じページに複数のテーブルを記載したい場合

たとえば、

  • 1つ目のテーブルが、3列で「1列目10%、2列目20%、3列目70%」
  • 2つ目のテーブルが、3列で「1列目50%、2列目40%、3列目10%」

の場合は、下記のように記載します。

"nyastom-table-1": [10, 20, 70],
"nyastom-table-2": [50, 40, 10],

そして、それぞれのクラスnyastom-table-1nyastom-table-2を適用したいテーブルの追加 CSS クラスに記載します。

JavaScriptを記載する箇所

JavaScriptは、投稿ページ(固定ページ)の下方にある「カスタムCSS & JS」欄に記載します。

SWELL|カスタムCSS & JS

そうすることで、このテーブル幅の変更はそのページだけに適用され、他のページで競合する心配がありません。

にゃのらいとにゃのらいと

セルの幅を調整して、すべての行が1行になったにゃ。

SWELLで横幅を調整したテーブル

にゃテックにゃテック

なお、数値は全て半角で記載する必要があるから気を付けるにゃ

補足

このようなJavaScriptを使用しなくても、カスタムHTMLから、width=”30%”のように記載することで調整することも可能です。

SWELL|カスタムHTML

ただし、そうすると、このテーブルは「ビジュアル編集」に戻すことが出来なくなります。

にゃテックにゃテック

そのため、ビジュアル編集のまま、テーブルのセル幅を調整できるJavaScriptを作成しました。

特定のページに記載したCSSやJavaScriptは、プラグインの「Simple Post Notes」を使ってメモを残しておくと管理がしやすいと思います。

今回、紹介した方法は「この投稿のみに適用させるJavaScriptの設定」があれば、他のワードプレステーマでも使用可能だと思います。

ご支援のお願い
この記事が役に立ったと感じたら・・・

Ny@Tech(にゃテック)

この記事が少しでもお役に立ったと感じていただけましたら、ぜひ下の“ボタン”をクリックしてお買い物をしていただけると嬉しいです。

ご購入いただいた商品の金額の一部が私に入り、より有益な記事を作るための励みになります。

なお、商品は、ご自身の好きなものをご購入いただければと思います。

無料相談・お問い合わせはこちら