- From: Ernest Cline <ernestcline@mindspring.com>
- Date: Tue, 4 Mar 2003 02:19:17 -0500
- To: www-style@w3.org
Currently the CSS Basic User Interface module is silent in discussing exactly what happens when a scroll controller is used, leaving it up to the user agent to decide. These proposed properties are designed to give an author more control over this. This proposal does not touch on controlling the appearance of scroll controls. This proposal could probably use someone more versed in the nuances of the terminolgy used in CSS to clean things up, especially in the defining what the char value does for the scroll0amount properties. CONTROLLING HOW MUCH GETS SCROLLED scroll-amount: scroll-amount-x: scroll-amount-y: Values: <length> | char | child | line | system | table-cell | table- group | inherit Default: system The values of <length>, system, and inherit apply to all objects. <length> : Move the visible region up, down, left, or right by the specified <length> for each scroll event. system : Move the visible region up, down, left, or right by the an amount determined by the system for each scroll event. The amount may be different for different elements. The values of char, child, and line apply only to objects whose display- type is either block-inside or inline-inside. char: A position marker is kept indicating where the displayed content is to begin. This marker is to be moved one character towards the beginning of the content on a left or up scroll, and one character towards the end of the content for each right or down scroll. child: This uses the same position marker as char. On a left or up scroll, then the marker is moved to the next start of a child node closer to the beginning of the content. On a right or down scroll, then the marker is moved to the next end of a child node closer to the end of the content. line: A position marker is kept, different from the one for char and child. This marker is moved one line toward the beginning of content on a left or up scroll, and one line toward the end of content on a right or down scroll. When both position markers are used, then first the char/child marker is applied then the line marker. If it were done in the other order, then lines would need to be rerendered when the line scroll is incremented or decremented which is neither efficient nor the expected effect. Neither marker can have a negative value. Values which would cause no content to be rendered should be reduced to a value where at least some content is rendered. The line marker should be reduced first and then the char/child marker as needed. Two additional values should be defined as part of the Table module, as they apply only to table elements. table-cell : This value apples only to an object with a display-role of table, table-row-group, or table-col-group. Move the visible region up, down, left or right by one row or column for each scroll event. table-group : This value apples only to an object with a display-role of table. Move the visible region up, down, left or right by one row group or column group for each scroll event. CONTROLLING WHICH PARTS OF A TABLE SCROLL Since this applies only to tables, this property should be part of the Table module scroll-table: Values: all | body | data | matrix | system | table | inherit Default: system This value applies only to objects with a display-role of table. all : The entire table should be scrolled. body : The table caption should not be scrolled at all. The table footer row group and table header row group should not be scrolled vertically. If the nonscrolling elements by themselves would leave no room for the body to scroll, or if a user agent does not support this option, then this value should be treated as if it were table. data: In addition to the restrictions given by matrix, any table header cell which has at least one data cell present in the visible region nust be displayed. If the elements required to be displayed by this value could leave no room for the data to scroll, or if the user agent does not support this option then this value should be treated as if it were matrix. In determining whether no room could be left, user agents may use any algorithm that catches all cases where no room would be left, even if that algorithm causes some instances where falling back to body is not necessary. This is because if the scope of a header cell is something other than a row or column, it can be computationaly expensive to use an algorithm which determines this only in the cases where insufficient space would be left. matrix: In addition to the restrictions given by body, any row which contains a table header cell with a scope of column should not be scrolled vertically, and any column which contains a table header cell with a scope of row. If the nonscrolling elements by themselves would leave no room for the scrolling elements, or if a user agent does not support this option, then this value should be treated as if it were body. system : The table should be scrolled in a system defined manner. table : The table caption should not be scrolled as part of the table. If the caption by itself would leave no space for the table to scrolled, or if the user agent does not support this option, then this value should default to all.
Received on Tuesday, 4 March 2003 02:20:12 UTC