Bird
Raised Fist0
HTMLmarkup~8 mins

Cell merging in HTML - Performance & Optimization

Choose your learning style10 modes available
Performance: Cell merging
MEDIUM IMPACT
Cell merging affects layout calculation and painting performance because it changes how table cells span multiple rows or columns.
Creating a table with merged cells for better data grouping
HTML
<table>
  <thead>
    <tr><th colspan="2">Merged Header</th></tr>
  </thead>
  <tbody>
    <tr><td>Data 1</td><td>Data 2</td></tr>
    <tr><td>Data 3</td><td>Data 4</td></tr>
  </tbody>
</table>
Using merged headers instead of large row spans reduces layout complexity and limits reflows to header only.
📈 Performance GainSingle reflow for header, minimal impact on body rows
Creating a table with merged cells for better data grouping
HTML
<table>
  <tr>
    <td rowspan="10">Merged Cell</td>
    <td>Data 1</td>
  </tr>
  <tr>
    <td>Data 2</td>
  </tr>
  <!-- many more rows -->
</table>
Using large rowspan or colspan values causes the browser to recalculate layout for many rows and columns, triggering multiple reflows.
📉 Performance CostTriggers multiple reflows proportional to the number of rows/columns spanned
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Large rowspan/colspan in many rowsModerate DOM nodesMultiple reflows proportional to spanHigh paint cost due to complex layout[X] Bad
Merged headers with colspanFewer DOM nodesSingle reflow for headerLower paint cost[OK] Good
Rendering Pipeline
When the browser encounters merged cells, it must calculate the layout considering the spanning cells, which increases the complexity of the Layout stage and can cause more Paint work.
→Layout
→Paint
→Composite
⚠️ BottleneckLayout
Core Web Vital Affected
LCP
Cell merging affects layout calculation and painting performance because it changes how table cells span multiple rows or columns.
Optimization Tips
1Avoid large rowspan or colspan values spanning many rows or columns.
2Prefer merging headers with colspan instead of merging many body cells.
3Use CSS grid or flexbox for complex layouts instead of heavy cell merging.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the main performance cost of using large rowspan or colspan in tables?
AIncreased network requests for table data
BIncreased layout recalculations causing multiple reflows
CSlower JavaScript execution
DMore CSS files to load
DevTools: Performance
How to check: Record a performance profile while loading the page with merged tables. Look for long Layout and Paint tasks related to table rendering.
What to look for: High Layout time and multiple reflows indicate expensive cell merging usage.

Practice

(1/5)
1. What does the colspan attribute do in an HTML table?
easy
A. It merges cells horizontally across columns.
B. It merges cells vertically across rows.
C. It changes the color of a cell.
D. It adds a border around a cell.

Solution

  1. Step 1: Understand the purpose of colspan

    The colspan attribute is used in a table cell to make it span across multiple columns horizontally.
  2. Step 2: Compare with rowspan

    rowspan merges cells vertically across rows, so it is different from colspan.
  3. Final Answer:

    It merges cells horizontally across columns. -> Option A
  4. Quick Check:

    colspan = horizontal merge [OK]
Hint: Remember: colSpan = column span (horizontal) [OK]
Common Mistakes:
  • Confusing colspan with rowspan
  • Thinking colspan changes cell style
  • Assuming colspan merges rows
2. Which of the following is the correct syntax to merge two columns in a table cell?
easy
A. <td rowspan='2'>Merged</td>
B. <td merge='2'>Merged</td>
C. <td colspan='2'>Merged</td>
D. <td span='2'>Merged</td>

Solution

  1. Step 1: Identify the correct attribute for column merging

    The attribute to merge columns is colspan, so it should be used as colspan='2'.
  2. Step 2: Check syntax correctness

    <td colspan='2'>Merged</td> uses the correct attribute and syntax: <td colspan='2'>Merged</td>. Other options use wrong attributes or invalid syntax.
  3. Final Answer:

    <td colspan='2'>Merged</td> -> Option C
  4. Quick Check:

    Correct attribute for columns = colspan [OK]
Hint: Use colspan='number' to merge columns [OK]
Common Mistakes:
  • Using rowspan instead of colspan
  • Using non-existent attributes like merge or span
  • Missing quotes around attribute value
3. What will be the visual result of this HTML snippet?
<table border='1'>
  <tr>
    <td rowspan='2'>A</td>
    <td>B</td>
  </tr>
  <tr>
    <td>C</td>
  </tr>
</table>
medium
A. All cells appear in a single row.
B. Cell 'A' spans two rows vertically, cells 'B' and 'C' are side by side horizontally.
C. Cell 'A' spans two columns horizontally, cells 'B' and 'C' are below 'A'.
D. Cell 'A' spans two rows vertically, cells 'B' and 'C' are stacked vertically next to 'A'.

Solution

  1. Step 1: Understand rowspan effect

    The rowspan='2' on cell 'A' makes it cover two rows vertically in the first column.
  2. Step 2: Analyze placement of cells 'B' and 'C'

    Cell 'B' is in the first row, second column; cell 'C' is in the second row, second column. They stack vertically next to the tall 'A' cell.
  3. Final Answer:

    Cell 'A' spans two rows vertically, cells 'B' and 'C' are stacked vertically next to 'A'. -> Option D
  4. Quick Check:

    rowspan = vertical merge [OK]
Hint: Rowspan stacks cells vertically beside merged cell [OK]
Common Mistakes:
  • Thinking rowspan merges columns horizontally
  • Assuming cells B and C are side by side horizontally
  • Confusing rowspan with colspan
4. Identify the error in this table code that tries to merge cells across two columns:
<table border='1'>
  <tr>
    <td colspan='2'>Merged</td>
    <td>Cell 3</td>
  </tr>
  <tr>
    <td>Cell 4</td>
    <td>Cell 5</td>
  </tr>
</table>
medium
A. Second row has only two cells but first row has three columns, causing layout mismatch.
B. The colspan attribute value should be '3' instead of '2'.
C. The colspan attribute is not allowed on td elements.
D. The table is missing a thead section.

Solution

  1. Step 1: Count columns in first row

    The first row has a cell with colspan='2' plus one more cell, so total columns = 2 + 1 = 3.
  2. Step 2: Count columns in second row

    The second row has only two cells, so only 2 columns, which causes a mismatch in table layout.
  3. Final Answer:

    Second row has only two cells but first row has three columns, causing layout mismatch. -> Option A
  4. Quick Check:

    Column count must match in all rows [OK]
Hint: Ensure all rows have same total columns after colspan [OK]
Common Mistakes:
  • Ignoring column count mismatch
  • Thinking colspan value must match total columns
  • Believing colspan is invalid on <td>
5. You want to create a table where the top-left cell spans 2 rows and 3 columns. Which is the correct way to write this cell?
hard
A. <td rowspan='3' colspan='2'>Top Left</td>
B. <td rowspan='2' colspan='3'>Top Left</td>
C. <td colspan='2' rowspan='3'>Top Left</td>
D. <td colspan='3'>Top Left</td>

Solution

  1. Step 1: Identify correct rowspan and colspan values

    The cell should span 2 rows vertically and 3 columns horizontally, so rowspan='2' and colspan='3' are needed.
  2. Step 2: Check attribute order and correctness

    Attributes can be in any order, but <td rowspan='2' colspan='3'>Top Left</td> correctly uses rowspan='2' and colspan='3'. Other options have swapped or incorrect values.
  3. Final Answer:

    <td rowspan='2' colspan='3'>Top Left</td> -> Option B
  4. Quick Check:

    Rowspan = rows, colspan = columns [OK]
Hint: Use rowspan for rows, colspan for columns together [OK]
Common Mistakes:
  • Swapping rowspan and colspan values
  • Using wrong numbers for spans
  • Omitting one of the attributes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard