In legacy HTML, the <frame> element inside a <frameset> could control whether users resize frame borders. That behavior is set with the noresize boolean attribute—not an attribute literally named frame. This tutorial covers that resize control for historical reference and maintenance of older pages.
01
Legacy frames
frameset context.
02
noresize
Fix frame size.
03
Default resize
Draggable borders.
04
Boolean attr
Presence = fixed.
05
noResize
JS property name.
06
Use iframe
Modern alternative.
Fundamentals
Purpose of frame Attribute
The topic of “frame resize control” in HTML framesets is about whether a user can resize a <frame> element by dragging its borders. By default, most browsers allowed resizing. Adding noresize to a frame fixes its size for layout consistency.
This is particularly relevant in the context of framesets, where HTML documents were divided into multiple frames displaying different content simultaneously. You might lock a navigation sidebar while keeping a main content frame resizable.
💡
Correct attribute name: noresize
There is no standard frame="noresize" syntax. Use <frame noresize> on the frame element. Omit noresize to allow resizing (the default).
⚠️
Obsolete in HTML5
<frameset> and <frame> are not used in modern HTML. Prefer CSS Grid/Flexbox for layout and <iframe> for embedded documents.
Foundation
📝 Syntax
Add the boolean noresize attribute to a <frame> inside a <frameset>:
Three-column frameset with a fixed sidebar, resizable vs fixed comparison, and dynamic noResize in JavaScript. These examples use legacy HTML4 frameset syntax for educational purposes.
Implementation Example — Frameset with noresize
Let’s consider an example of how to use resize control within a frameset (corrected syntax):
The first column (frame1.html) has noresize, so its width stays at 25%. The second and third frames can be resized by dragging their borders.
Fixed (noresize)
Resizable
Resizable
How It Works
The first frame includes noresize, so users cannot drag its border to change the 25% width. The second and third frames omit noresize, so they remain resizable by default.
Example — Fixed Sidebar vs Resizable Content
A typical pattern: lock the navigation column, allow the main area to resize:
Navigation stays 200px wide. The content frame fills remaining space and can be resized horizontally.
How It Works
Using cols="200,*" sets a fixed pixel width for navigation. Adding noresize prevents users from changing that sidebar width, keeping the layout stable.
Dynamic Values with JavaScript
You can manipulate frame resize behavior dynamically using JavaScript on a frame element:
Set frameElement.noResize = true or use setAttribute("noresize", ""). Set false or removeAttribute("noresize") to allow resizing again.
How It Works
Setting noResize = true on a frame element applies the same effect as the noresize HTML attribute, locking the frame border against user dragging.
A11y
♿ Accessibility
Framesets harm accessibility — Screen readers struggle with legacy frames; avoid them in new projects.
Prefer single-document layouts — CSS-based layouts are easier to navigate with keyboard and assistive tech.
If maintaining legacy frames — Provide meaningful title attributes on frames where supported.
Do not lock critical resize — Fixed frames can trap content; test zoom and small viewports.
🧠 How Frame Resize Control Works
1
Author builds a frameset
Multiple <frame> elements share the window.
Legacy
2
noresize locks a border
That frame cannot be dragged to resize.
Fixed
3
Other frames stay flexible
Without noresize, users adjust layout.
Resize
=
🗃
Controlled legacy layout
Historical pattern—use CSS for new work.
Compatibility
Browser Support
<frameset> and <frame> are obsolete in HTML5. Browsers may still render them for compatibility, but they should not be used in new projects.
⚠️ Legacy · Obsolete
Historical frameset support
Older browsers supported noresize on frame elements; modern HTML rejects framesets.
LegacyNot for new sites
frameset / noresizeObsolete in HTML5
Bottom line: Learn for legacy maintenance only. Build new layouts with CSS and <iframe>.
Pro Tips
💡 Best Practices
✅ Do
Use noresize (not frame="noresize") on frame elements
Lock sidebars when maintaining legacy framesets
Prefer CSS Grid/Flexbox for new layout work
Use <iframe> for embedding external pages
Test legacy framesets if you must maintain old sites
❌ Don’t
Build new sites with framesets
Use invalid frame="resize" syntax
Assume frames are accessible without extra work
Lock all frames—leave some flexibility unless required
Confuse <frame> with <iframe>
Wrap Up
Conclusion
Frame resize control in legacy HTML is handled by the noresize attribute on <frame> elements within framesets. By understanding its usage, you can maintain older frame-based layouts and recognize correct syntax when reviewing historical code.
For new projects, skip framesets entirely. Use modern CSS layout and iframes instead. See the frameborder attribute next for another legacy frame property.