I'm probably gonna take some verbal abuse for saying this, but frames are still in my web-design tool box. My view is that it's better to have 'em and not need 'em than to need 'em but not have 'em. And I've encountered lots of applications where a frameset, or the way a frameset works, is the most user-friendly solution to a web design problem.
It's very unfriendly, for example, to build a page with lots of links to pictures or small content pages that open a new window or goto a new page everytime you click one of the links. Then return to the main page to click the next one and wait for another window or new page to open. Frames don't do that to you or your guests.
Yes, like most web design elements, frames have both user-friendly advantages and user-unfriendly disadvantages...
FRIENDLY...
Links to other pages are located on a nav bar, and thus always visible
Main frame scrolls "under" the top frame, so header is always visible
Content pages are displayed without opening a new window
Changes to header and navigation bar affect all frames
Frames provide a more user-friendly context for picture galleries than basic html
NOT FRIENDLY...
Links to framed pages display pages without the header and navigation bar
Links to frameset (no content) kill "link popularity" of framed pages
Browser's address is URL of frameset, not the framed page.
Bookmarks link to the frameset, not to the framed page.
Some search engine robots (spiders) will not "crawl" a frameset.
But there are ways to keep the user-friendly features while eliminating the user un-friendly ones. You'll need a basic understanding of how to build a frameset for the first method, but not the other two. If you haven't permanently closed your mind to frames, I've got a basic but very thorough tutorial on how to do frames right. I've also got the javascript for method #1, and think I can resurrect the code for method #3.
METHOD #1 - Use JavaScript to reload the frameset for each target page: Visitors see the title and the url of the framed page. If they save a framed page to Favorites, the framed page is bookmarked, not the frameset. If they come here from the url of a framed page, they see the header and navigation bar, because the script automatically loads the frameset. And spiders "see" your keyword-rich text and links to all frame pages in the <BODY> section, using <NOSCRIPT> tags. The javascript for this method is small and easy to implement in each file.
METHOD #2 - Use Server Side Includes (SSI) to simulate a frame. When a visitor clicks the link to a page, the server adds whatever content you specify in the file for the main page to be included when that page loads -- header, footer, sidebar and so forth. SSI operates just like a frameset, but without any of the user-unfriendly features, and is very easy to implement. Ask your host if it's available on the server for your website.
METHOD #3 - Use javascript and css to simulate a frame by "hiding" each target page until its "sidebar" link is clicked. This method doesn't work quite like a frame, because the hidden content cannot include tags associated with a separate web page.
Go easy on me, please -- I'm old and feeble...
