A proposal for addition to HTML 3.0: Frames

From: Alex Edelstein <alexed@netscape.com>
Date: Tue, 19 Sep 95 02:08:28 EDT

Hi. I'm the Netscape Navigator marketing guy. Please forgive the 
temerity with which we submit this new proposal from Netscape to 
the W3 and IETF for enhancements to HTML 3.0. It pertains to 
functionality called Frames.

Additional Marketing-oriented information about Frames is available 
on www.netscape.com.

An example of frame content is available at 
http://home.mcom.com/people/alexed/index.html 

We offer honest thanks for your time and consideration of these 
ideas.

**********
Alex Edelstein
Sr. Product Manager, Netscape Navigator
Netscape Communications Corp.






-------------------------------------------
INTERNET-DRAFT                      Eric Bina
                                    Netscape Communications Corp.
Expires SIX MONTHS FROM--->         September 17, 1995

      A Proposed Extension to HTML: Frames

Status of this Memo

   This document is an Internet-Draft. Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its
   areas,   and its working groups. Note that other groups may also
   distribute   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other
   documents at any time. It is inappropriate to use Internet-
   Drafts as reference material or to cite them other than as
   "work in progress."

   To learn the current status of any Internet-Draft, please check
   the "1id-abstracts.txt" listing contained in the Internet-
   Drafts Shadow Directories on ds.internic.net (US East Coast),
   nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
   munnari.oz.au (Pacific Rim).

   Distribution of this document is unlimited.  Please send
   comments to the HTML working group (HTML-WG) of the
   Internet Engineering Task Force (IETF) at <html-wg@oclc.org>.
   Discussions of the group are archived at
   URL: http://www.acl.lanl.gov/HTML_WG/archives.html


Abstract

Frames extend the layout flexibility of HTML to allow finer control
over content reload. This enables the designer to freeze content in
place and target results of actions into specific regions of the
screen.
   

Table of Contents
1.0 Introduction
2.0 Frame Syntax
3.0 Examples



1. Introduction

Frames are generated by three things: FRAMESET tags, FRAME tags,
and Frame Documents.

Frame Document

A Frame Document has a basic structure very much like your normal
HTML document, except the BODY container is replaced by a FRAMESET 
container which describes the sub-HTML documents, or Frames, that 
will make up the page.


<HTML>
<HEAD>
</HEAD>
<FRAMESET>
</FRAMESET>
</HTML>




2.0 Frame Syntax

Frame syntax is similar in scope and complexity to that used by
tables, and has been designed to be quickly processed by Internet
client layout engines.


<FRAMESET>
This is the main container for a Frame. It has 2 attributes ROWS
and COLS. A frame document has no BODY, and no tags that would
normally be placed in the BODY can appear before the FRAMESET 
tag,or the FRAMESET will be ignored. The FRAMESET tag has a 
matching end tag, and within the FRAMESET you can only have other 
nested FRAMESET tags, FRAME tags, or the NOFRAMES tag.

ROWS="row_height_value_list"

The ROWS attribute takes as its value a comma separated list of
values. These values can be absolute pixel values, percentage
values between 1 and 100, or relative scaling values. The number of
rows is implicit in the number of elements in the list. Since the
total height of all the rows must equal the height of the window,
row heights might be normalized to achieve this. A missing ROWS
attribute is interpreted as a single row arbitrarily sized to fit.



Syntax of value list.

value

A simple numeric value is assumed to be a fixed size in pixels.
This is the most dangerous type of value to use since the size of
the viewer's window can and does vary substantially. If fixed pixel
values are used, it will almost certainly be necessary to mix them
with one or more of the relative size values described below.
Otherwise the client engine will likely override your specified
pixel value to ensure that the total proportions of the frame are
100% of the width and height of the user's window.

value%

This is a simple percentage value between 1 and 100. If the total 
is greater than 100 all percentages are scaled down. If the total 
is less than 100,  and relative-sized frames exist, extra space 
will be given to them. If there are no relative-sized frames, all 
percentages will be scaled up to match a total of 100%.

value*

The value on this field is optional. A single '*' character is a
"relative-sized" frame and issinterpreted as a request to give the 
frame all remaining space. If there exist multiple relative-sized 
frames, the remaining space is divided evenly among them. If there 
is a value in front of the '*', that frame gets that much more 
relative space. "2*,*" would give 2/3 of the space to the first 
frame, and 1/3 to the second.



Example for 3 rows, the first and the last being smaller than the 
center row: <FRAMESET ROWS="20%,60%,20%"> Example for 3 rows, the 
first and the last being fixed height, with the remaining space 
assigned to the middle row: <FRAMESET ROWS="100,*,100">

COLS="column_width_list"

The COLS attribute takes as its value a comma separated list of 
values that is of the exact same syntax as the list described above 
for the ROWS attribute.


 The FRAMESET tag can be nested inside other FRAMESET tags. In this 
case the complete subframe is placed in the space that would be 
used for the corresponding frame if this had been a FRAME tag 
instead of a nested FRAMESET.



<FRAME>

This tag defines a single frame in a frameset. It has 6 possible
attributes: SRC, NAME, MARGINWIDTH, MARGINHEIGHT, SCROLLING, and 
NORESIZE. The FRAME tag is not a container so it has no
matching end tag.



SRC="url"

The SRC attribute takes as its value the URL of the document to be
displayed in this particular frame. FRAMEs without SRC attributes 
are displayed as a blank space the size the frame would have been.

NAME="window_name"

The NAME attribute is used to assign a name to a frame so it can be
targeted by links in other documents (These are usually from other 
frames in the same document.) The NAME attribute is optional; by 
default
all windows are unnamed.

Names must begin with an alphanumeric character. However, several
reserved names have been defined, which start with an underscore.
These are currently:
_blank    Always load this link into a new, unnamed window.
_self     Always load this link over yourself.
_parent   Always load this link over your parent.
          (becomes self if you have no parent).
_top      Always load this link at the top level.
          (becomes self if you are at the top).


MARGINWIDTH="value"

The MARGINWIDTH attribute is used when the document author wants 
some control of the margins for this frame. If specified, the value 
for MARGINWIDTH is in pixels. Margins can not be less than one-so
that frame objects will not touch frame edges-and can not be
specified so that there is no space for the document contents. The 
MARGINWIDTH attribute is optional; by default, all frames default 
to letting the browser decide on an appropriate margin width.

MARGINHEIGHT="value"


The MARGINHEIGHT attribute is just like MARGINWIDTH above, except 
it controls the upper an lower magins instead of the left and right 
margins.

SCROLLING="yes|no|auto"

The SCROLLING attribute is used to describe if the frame should
have a scrollbar or not. Yes results in scrollbars always being 
visible on that frame. No results in scrollbars never being 
visible. Auto instructs the browser to decide whether scrollbars 
are needed, and place them where necessary. The SCROLLING attribute 
is optional; the default value is auto.

NORESIZE

The NORESIZE attribute has no value. It is a flag that indicates
that the frame is not resizable by the user. Users typically resize 
frames by draggin a frame edge to a new position. Note that if any 
frame adjacent to an edge is not resizable, that entire edge will 
be restricted from moving. This will effect the resizability of
other frames.The NORESIZE attribute is optional; by default all
frames are resizable.




<NOFRAMES>

This tag is for content providers who want to create alternative
content that is viewable by non-Frame-capable clients. A 
Frame-capable Internet client ignores all tags and data between 
start and end
NOFRAMES tags.



3.0 Examples

This example compares Frame syntax and TABLE syntax, and will show
the HTML source used to display the layout below.


+------------------------------------------+

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |---------------------+

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

+--------------------|                             |

|                          	  |                             |

|                           	 |                             |

|                        	 |                             |

|                            |                             |

|                            |----------------------+

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |

|                            |                             |
|                            |                             |
|                            |                             |

|                            |                             |

|                            |                             |

+------------------------------------------+


The above layout using TABLES



<TABLE WIDTH="100%" HEIGHT="100%" BORDER>

  <TR><TD ROWSPAN=2>CELL</TD><TD>CELL</TD></TR>

  <TR><TD ROWSPAN=2>CELL</TD></TR>

  <TR><TD ROWSPAN=2>CELL</TD></TR>

  <TR><TD>CELL</TD></TR>

</TABLE>



The above layout using FrameS



<FRAMESET COLS="50%,50%">

  <FRAMESET ROWS="50%,50%">

    <FRAME SRC="cell.html">

    <FRAME SRC="cell.html">

  </FRAMESET>

  <FRAMESET ROWS="33%,33%,33%">

    <FRAME SRC="cell.html">

    <FRAME SRC="cell.html">

    <FRAME SRC="cell.html">

  </FRAMESET>

</FRAMESET>



The above Frame using NOFRAMES info.



<FRAMESET COLS="50%,50%">
<NOFRAMES>
<h1 align=center><blink>Frame ALERT!</blink></h1>
<p>
This document is designed to be viewed using <b>Netscape 1.2</b>'s
Frame features.  If you are seeing this message, you are using
a frame <i>challenged</i> browser.
</p>
<p>
A <b>Frame-capable</b> browser can be gotten from
<a href=http://home.netscape.com/>Netscape Communications</a>.
</p>
</NOFRAMES>



  <FRAMESET ROWS="50%,50%">

    <FRAME SRC="cell.html">

    <FRAME SRC="cell.html">

  </FRAMESET>

  <FRAMESET ROWS="33%,33%,33%">

    <FRAME SRC="cell.html">

    <FRAME SRC="cell.html">

    <FRAME SRC="cell.html">

  </FRAMESET>

</FRAMESET>


Author’s Address
HTML Authorship Effort
C/O Alex Edelstein, Product Manager - Non-Stinky Cheese Products
Netscape Communications Corp.
501 E. Middlefield Rd.
Mountain View, CA 94301
alexed@netscape.com







--


Follow-ups