Skip to content

Conversation

@ocean90
Copy link
Member

@ocean90 ocean90 commented Aug 13, 2025

What?

Closes #70454

We (@KarinChristen, @krokodok, @velthy, @ocean90) wanted to share an update in response to the discussion raised in issue #70454, where the focus has been on exposing the hasFixedLayout toggle in the Table block UI and improving default responsive behavior, especially for mobile and tablet views.

Why?

  • Better readability
    Increasing the fixed-layout threshold for wide tables prevents cramped content and overlapping cells—especially important for spreadsheets or data-heavy tables.
  • Consistent behaviour across devices
    By automating this threshold check, we reduce the need for authors to manually add media-query CSS for responsiveness.
  • Maintains current defaults
    For simpler tables (1–3 columns), the existing hasFixedLayout behaviour stays unchanged. We’re only targeting broader tables where fixed layouts start causing real issues on small screens.

In summary: We’ve built upon the idea from #70454—which seeks to improve the Table block’s responsiveness and flexibility—by adding rules tailored for wider, more complex tables. This ensures a stronger, mobile-friendly design without requiring manual overrides.

How?

We’ve extended the logic to better support complex tables—specifically, those with 4 or more columns—to ensure readability without breaking layouts on mobile:

  • We detect when a Table block has at least 4 (or 5) columns using selectors like td:nth-of-type(4):last-of-type (or nth-of-type(5)).

  • If the container width is at least 500px, we apply:

    .has-fixed-layout {
      table-layout: fixed;
      width: 100%;
    }
    
    td, th {
      word-break: break-word;
    }
  • This enforces a minimum width (e.g. around 800px) for such complex tables, ensuring they remain legible.

  • On mobile devices, users will naturally see a horizontal scroll rather than broken or overlapped cells.

Testing Instructions

Copy the following blocks HTML into a page and resize the window to see how the layout changes.

Details
<!-- wp:table {"align":"wide","className":"is-style-stripes"} -->
<figure class="wp-block-table alignwide is-style-stripes"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Jahr</th><th class="has-text-align-left" data-align="left">Projekt</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Trift Trail, Saas- Grund VS</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Furwald, Saas- Grund VS</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bondet, Ollon VD</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Les Chaux, Gryon VD</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Jumpline, Collombey VS</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschengla Unchained, Brandnertal AT</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschäck the Ripper, Brandnertal AT</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Le Tracouet, Nendaz VS</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:table {"align":"wide","className":"is-style-stripes"} -->
<figure class="wp-block-table alignwide is-style-stripes"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Jahr</th><th class="has-text-align-left" data-align="left">Projekt</th><th class="has-text-align-left" data-align="left">Trailtyp</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td><td class="has-text-align-left" data-align="left">Flow- Trail/ Enduro- Trail</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td><td class="has-text-align-left" data-align="left">Flow- Trail/ Enduro- Trail</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Trift Trail, Saas- Grund VS</td><td class="has-text-align-left" data-align="left">Flowtrail</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Furwald, Saas- Grund VS</td><td class="has-text-align-left" data-align="left">Wanderweg</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bondet, Ollon VD</td><td class="has-text-align-left" data-align="left">Wanderweg</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Les Chaux, Gryon VD</td><td class="has-text-align-left" data-align="left">Flowtrail</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Jumpline, Collombey VS</td><td class="has-text-align-left" data-align="left">Jumpline</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschengla Unchained, Brandnertal AT</td><td class="has-text-align-left" data-align="left">Flowtrail</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschäck the Ripper, Brandnertal AT</td><td class="has-text-align-left" data-align="left">Freeride/ Jumpline</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Le Tracouet, Nendaz VS</td><td class="has-text-align-left" data-align="left">Flowtrail</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:table {"align":"wide","className":"is-style-stripes"} -->
<figure class="wp-block-table alignwide is-style-stripes"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Jahr</th><th class="has-text-align-left" data-align="left">Projekt</th><th class="has-text-align-left" data-align="left">Trailtyp</th><th class="has-text-align-left" data-align="left">Länge / Grösse</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td><td class="has-text-align-left" data-align="left">Flow- Trail/ Enduro- Trail</td><td class="has-text-align-left" data-align="left">3km</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td><td class="has-text-align-left" data-align="left">Flow- Trail/ Enduro- Trail</td><td class="has-text-align-left" data-align="left">3km</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Trift Trail, Saas- Grund VS</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">3.1km</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Furwald, Saas- Grund VS</td><td class="has-text-align-left" data-align="left">Wanderweg</td><td class="has-text-align-left" data-align="left">5.9km</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bondet, Ollon VD</td><td class="has-text-align-left" data-align="left">Wanderweg</td><td class="has-text-align-left" data-align="left">900m</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Les Chaux, Gryon VD</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">850m</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Jumpline, Collombey VS</td><td class="has-text-align-left" data-align="left">Jumpline</td><td class="has-text-align-left" data-align="left">100m</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschengla Unchained, Brandnertal AT</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">3.4km</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschäck the Ripper, Brandnertal AT</td><td class="has-text-align-left" data-align="left">Freeride/ Jumpline</td><td class="has-text-align-left" data-align="left">1.7km</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Le Tracouet, Nendaz VS</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">5.8km</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:table {"align":"wide","className":"is-style-stripes"} -->
<figure class="wp-block-table alignwide is-style-stripes"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Jahr</th><th class="has-text-align-left" data-align="left">Projekt</th><th class="has-text-align-left" data-align="left">Trailtyp</th><th class="has-text-align-left" data-align="left">Länge / Grösse</th><th class="has-text-align-left" data-align="left">Leistung</th><th class="has-text-align-left" data-align="left">Auftraggeber</th><th class="has-text-align-left" data-align="left">Status</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td><td class="has-text-align-left" data-align="left">Flow- Trail/ Enduro- Trail</td><td class="has-text-align-left" data-align="left">3km</td><td class="has-text-align-left" data-align="left">Sanierung mehrerer Sektionen</td><td class="has-text-align-left" data-align="left">Verein Bachtel- Biker</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bachtel- Trail, Bachtel ZH</td><td class="has-text-align-left" data-align="left">Flow- Trail/ Enduro- Trail</td><td class="has-text-align-left" data-align="left">3km</td><td class="has-text-align-left" data-align="left">1- tägiger Unterhaltskurs nach<br>Vorgaben der Trailfoundation</td><td class="has-text-align-left" data-align="left">Verein ZO- Biketrails</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Trift Trail, Saas- Grund VS</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">3.1km</td><td class="has-text-align-left" data-align="left">Unterhaltsarbeiten; Beseitigen<br>von Unwetterschäden</td><td class="has-text-align-left" data-align="left">Bergbahnen Saas- Grund</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Furwald, Saas- Grund VS</td><td class="has-text-align-left" data-align="left">Wanderweg</td><td class="has-text-align-left" data-align="left">5.9km</td><td class="has-text-align-left" data-align="left">Beseitigen von Unwetterschäden<br>am Startpunkt des Wanderwegs</td><td class="has-text-align-left" data-align="left">Gemeinde Saas- Grund</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Bondet, Ollon VD</td><td class="has-text-align-left" data-align="left">Wanderweg</td><td class="has-text-align-left" data-align="left">900m</td><td class="has-text-align-left" data-align="left">Unterhaltsarbeiten mit Fokus auf Koexistenz Wanderer/ Mountainbiker</td><td class="has-text-align-left" data-align="left">Gemeinde Ollon</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Les Chaux, Gryon VD</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">850m</td><td class="has-text-align-left" data-align="left">Planung &amp; Neubau eines Biketrails</td><td class="has-text-align-left" data-align="left">Gemeinde Gryon</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Jumpline, Collombey VS</td><td class="has-text-align-left" data-align="left">Jumpline</td><td class="has-text-align-left" data-align="left">100m</td><td class="has-text-align-left" data-align="left">Design &amp; Neubau einer Jumpline</td><td class="has-text-align-left" data-align="left">X- Stream Park</td><td class="has-text-align-left" data-align="left">Abgeschlossen</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschengla Unchained, Brandnertal AT</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">3.4km</td><td class="has-text-align-left" data-align="left">Traildesign &amp; Neubau mehrerer Sektionen/<br>Überarbeiten des bestehenden Trasses</td><td class="has-text-align-left" data-align="left">IMM In Mountain Movement GmbH,<br>Bergbahnen Brandnertal</td><td class="has-text-align-left" data-align="left">In Arbeit</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Tschäck the Ripper, Brandnertal AT</td><td class="has-text-align-left" data-align="left">Freeride/ Jumpline</td><td class="has-text-align-left" data-align="left">1.7km</td><td class="has-text-align-left" data-align="left">Traildesign &amp; Neubau Starsektion und Jumpline/<br>Überarbeiten des bestehenden Trasses</td><td class="has-text-align-left" data-align="left">IMM In Mountain Movement GmbH,<br>Bergbahnen Brandnertal</td><td class="has-text-align-left" data-align="left">In Arbeit</td></tr><tr><td class="has-text-align-left" data-align="left">2025</td><td class="has-text-align-left" data-align="left">Le Tracouet, Nendaz VS</td><td class="has-text-align-left" data-align="left">Flowtrail</td><td class="has-text-align-left" data-align="left">5.8km</td><td class="has-text-align-left" data-align="left">Traildesign &amp; Neubau eines Biketrails</td><td class="has-text-align-left" data-align="left">Gemeinde Nendaz</td><td class="has-text-align-left" data-align="left">In Arbeit</td></tr></tbody></table></figure>
<!-- /wp:table -->

Testing Instructions for Keyboard

Screenshots or screencast

Before After
table before fix table with fix

@github-actions
Copy link

github-actions bot commented Aug 13, 2025

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @robertbpugh.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Unlinked contributors: robertbpugh.

Co-authored-by: ocean90 <[email protected]>
Co-authored-by: shubhtoy <[email protected]>
Co-authored-by: t-hamano <[email protected]>
Co-authored-by: Mayank-Tripathi32 <[email protected]>
Co-authored-by: KarinChristen <[email protected]>
Co-authored-by: webexpr-dhenriet <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@ocean90 ocean90 added [Block] Table Affects the Table Block [Type] Enhancement A suggestion for improvement. labels Aug 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Block] Table Affects the Table Block [Type] Enhancement A suggestion for improvement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Table block: default CSS not fully responsive

1 participant