I list below all topic groups, which I have done according to subjects, which they handle. You can return to this topic group by using this menu and the link Table of topic groups on the top of the each page.
| |||||||||||||||||||
![]() | Table of topic groups > Front page of help pages > Help pages > 1. Help for TM CSS menu |
|---|
This page is primary quite thoroughly information about the menu itself. It has also common information about CSS related issues. This page use as related pages detailed element classifications and the table of all HTML-tags.
Button actions have following abbreviations:
HTML 4.01 has two basic document types, Strict and Transitional, which has corresponding DTD-files (DTD= Document Type Definition), strict.dtd and loose.dtd. The strict element type has fewer elements and attributes. The listing of transitional (deprecated) elements base on official and it should be ok.
It is import to use elements in valid order because incorrect order may create serious problems and crash some browsers. That's why I have made some behavioural notes. Elements have two basic behavior types, inline and block. Normal block elements create a rectangular box and line break before and after them. Depending of elements they can have both block and inline-level child-elements or only inline-level child-elements. Ordinary inline-level elements don't create rectangular boxes around them and they don't create line breaks. They can have only inline-level child-elements.
Some elements mix these behaviours. The behaviour type is
called as flow. The DTD-files says about elements
DEL and INS, that these can occur at
block or inline level. I have listed them in the button TM
CSS - General. They behave in some situations like normal
block or inline elements. It is important to remember that they
should not be used so that, the start from block level and end to
inline level or vice averse. For example this is incorrect:
<ins>Here is the starting point.
<div><b>Here is a block, which has bold text</b>
</ins>
</div>
Note. XHTML DTD-files have a little bit different
classifications than HTML 4.01 DTD-files
(a separate
page).
I have mentioned in the button TM CSS - Objects
some behaviour notes. Into CSS3 has added display:inline-block, which display type concerns especially certain form control elements (for example INPUT). Also replaced inline-level elements have the behavior type inline-block (for example IMG and OBJECT).
Elements FIELDSET and
FORM are block-level elements. INPUT,
SELECT, TEXTAREA, LABEL
and BUTTON are listed as inline elements
(%formctrl), but the behavior of them is not equal (I
tell about differences later in this page). OPTION
and OPTIONGROUP are child-elements of
SELECT. The element LEGEND is a
child-element of FIELDSET. The specification and the
DTD-files don't directly say, if it has block or inline
behaviour, but from the attributes can be derived that it is an
inline-level element. According to CSS2 it is not possible to apply CSS property for these elements. Netscape 6.x/Mozilla 0.6+ or newer Netscape/Mozilla browsers give proposals how to implement CSS for them. Form control elements are defined in CSS3 (I handle them in CSS-site on the page 8. Backgrounds and borders
).
The strict document type has in some matters stricter rules
because it tries to be the clearer document type. The element
BLOCKQUOTE and BODY must have as
child-elements some block-level element (NOSCRIPT is
listed as a block-level element) or SCRIPT
(BODY can have also INS or
DEL), but in the transitional document type they can
have directly some inline-level child-elements.
<body>According to the the strict document type this text needs some block-level parent-element or
<ins>SCRIPT,INSorDEL.</ins>
<blockquote>According to the transitional document type this text doesn't need for example the element
<div>DIVsurround this text.</div>
</blockquote>
</body>
Some elements have special content definitions (for example
A, FORM and PRE). The
strict and transitional (loose) document types have differences
on them. I handle element classifications more comprehensive in
another page, where is a detailed
element classification
.
CSS can affect all elements in HTML, which affect to the presentation of HTML-documents. In the non-normative appendix page of the CSS2 specification is said that the full presentation of some HTML elements cannot be expressed in CSS2.
The root element HTML can get CSS even if it should not get %coreattrs;,
which belongs three CSS-related attributes (MS IE support them
also to HTML, but the supporting is proprietary).
There is some elements, which in principle can have CSS, but
which are not all or which are not widely supported. Frameset
elements (FRAME and FRAMESET) are
supported only in newest MS browsers. MS IE 5.x+, Netscape 6.x+ and Opera 4.x+
support CSS to IFRAME. It is however remarkable, that the frameborder attribute must have the value 0, if the purpose is to define borders also with CSS - otherwise frame elements get double borders. Because NOFRAMES
is in the official DTD-files listed as an element, which has %coreattrs; I
added it. In principle a modern web browser, which support of
framesets is turned off can render the content inside the
NOFRAMES element with CSS. At the same main
principle a modern web browser, which support of scripting
languages is turned off can render the content of
NOSCRIPT with CSS.
I got an e-mail, where the writer said, that some user agents
(e.g., Amaya) can use LINK
relationships (e.g., next/prev) to construct a book form of a
document. Then this element can have some kind of presentation
with CSS in some user agent. Supporting of elements
NOFRAMES, NOSCRIPT and
LINK is however quite theoretical. The TM CSS menu
tells however, which elements can in theory get CSS.
CSS to the element BR is quite limited (look at however CSS notes 1
).
Elements MAP is today partially supported and AREA is not at all supported.
CSS can't make invisible informative HTML-elements as visible.
Elements META, PARAM and
SCRIPT are not intended to get CSS, because they
don't have %coreattrs;. I
have not listed such HTML-elements, which CSS can't even in
theory affect anything in HTML.
Such embedded elements, which use plug-ins
applications or Java-applets cause some
limitations. Embedded plug-ins objects and Java-applets are in many browsers always on top. You can't force by using properties position
and z-index any HTML-element over those embedded
objects. For example it is impossible to use Schockwave
Flash animations on the background! You can't affect to
the background values of them with CSS. In practice the the only
matters, which you can do is to set borders and define box
dimensions. If the box is bigger than the embedded object, you
can set background properties to the area, which doesn't belong
to the embedded object.
Opera browsers have the corresponding problems also with some form control elements (for example INPUT).
I have found that (at least in MS IE 6.0 for Windows) IFRAME, which is also a certain kind of embedded object can be set over such embedded objects, which use plug-ins applications (test with one of my introduction page
by clicking some sub-menu - note that by CSS defined borders of the IFRAME remain behind the embedded Flash-object and just the contents of the IFRAME elements can be over the Flash-object).
Only newest Mozilla Gecko based browsers (in my tests Mozilla 1.1a) support the z-index property properly for embedded objects. Ordinary blocks can set over for example Flash-animations.
Note 1. CSS can be used also with XML with the
xml-stylesheet declarations (for example
<?xml-stylesheet type="text/css"
href="CSS_stylesheet.css"?>). Each sub-language follow
its own rules, but user agents are free to render all
XML-elements as visible by using CSS. If some XML-language
supports embedded plug-ins objects, the same limitations concerns
also those languages as HTML. In XML the user can define own
elements. Then such a CSS-validator, which is also intended to
validate in XML-documents used CSS-files can't check, if used
CSS-rules are in all respects valid. For example tabl tb
{color:blue} is in principle a valid rule because some
XML-language can use elements tabl and
tb (in practise the validator accepts certain kinds
of spelling errors).
Note 2. In principle it is not allowed to use in XML
rules like myelement.some-class {} even if MS IE and Opera
accept them. In XML should use rules like
myelement[class="some-class"] {...}. Unfortunately MS
IE 5.0 doesn't understand such rules. In that means MS IE 5.0 use
proprietary XML and it needs proprietary style sheets (MS IE 5.0
supports also only proprietary XSLT).
Two first button handle systems, how to connect style sheets into the HTML documents. The second handle basic rules and values in CSS2. After them some buttons handle CSS-selectors. I have classified element type selectors using the HTML 4.01 specification into block, inline, form and object element type selectors.
Some pseudo-class and pseudo-element selectors are classified in buttons TM CSS - Generated, because they are especially designed to use with generated contents or languages properties. I list in the button TM CSS - Pseudo only those pseudo-classes or pseudo-elements, which have more general usage. Some of them are listed twice. The usage of pseudo-classes or pseudo-elements resemble normal class or element type selectors, but matching criterion are different. In don't explain this matter in my tutorial site any closer, but you can find additional information from some other sites.
The order of those buttons, which handle CSS-properties is not the same as in the CSS2 specification, because it doesn't fit to this menu. The classification of them base however primary on the CSS2 specification with some exceptions (I don't regard the classification of CSS2 in some matters reasonable). The CSS2 specification handle some matters in several chapters I have listed in some cases properties in other connection as the CSS2 specification. Here is the list, where my classification differ from the specification:
I have not put keyword value inherit to all
individual places, because it is common value in CSS2. I don't
recommend to use it yet, because it is poorly supported. Listing
of properties, which are optional in CSS1 (marked as
CSS+) might be some errors, because some of them
base on conversations with a member of Webstandards
and all of them are not clearly listed in the CSS1
specification.
CSS1 does not offer multiple columns with text-flow, overlapping frames etc
HTML is
optional in CSS1.TD. He said, that table model belongs
today to CSS2. Then supporting of them is optional
in CSS1. According him I put elements
TD and TH as CSS+. TABLE
is commonly supported element in all CSS1 capable browsers and I
put it as supported in CSS1. CSS2 brought completely new
properties to many table elements, that's why I put rest elements
as CSS2.BR-element.
In the HTML 4.01 specification, it is listed as
element, which can have CSS, that's why I put it supported in
CSS2. Because the attribute clear is mentioned in
HTML 4.01 specification as deprecated and CSS has the property
clear, W3C presume that users agents can use CSS
instead of the HTML-attribute.fixed is
optional in CSS1.display is
optional in CSS1.Opera 3.6x doesn't support just at all optional
features, but it support almost all core features of CSS1. From
official browsers Opera 4.x+ and MS IE 5.x+ have quite wide CSS2
implementations (MS IE 5.0 for Mac has much better implementation than
the Windows version). Quite good implementation is also Netscape 6.1+ and especially in new Mozilla browsers. There is
not however any browser, which has full CSS2 implementation. Also
MS IE 5.5 is a disappointment at this matter (I have comments
in a separate page). Indeed it is quite impossible
to define exactly, what is full implementation because some
elements cause always limitations. It is in theory possible to
define, which is recommended implementation to each elements.
CSS2 recommendation doesn't however define this matter.
MS IE 5.5 use proprietary extensions to CSS. I don't list
them in the menu. If you want to use them, install TopStyle (the Light-version is free). Look at my comments to them proprietary extensions from a separate page
or from CSS notes 1
and CSS notes 2
. I have also a special page, which concerns non-standard CSS
.
Some
browsers allow proprietary syntax like
background-image=url(some.gif). Don't use them and
use instead of them standard syntaxes, for example
background-image: url(some.gif).
Because CSS in not intended to use only with HTML-elements,
HTML-browsers don't do incorrect if they support proprietary
elements, for example MARQUEE (MS IE) and
BLINK (Netscape) and EMBED (used to
embed plug-ins applications, for example Schockwave
Flash animations). Also old (obsolete to HTML 4.01)
elements like LISTING can get if in some browsers.
That's why I put them also into selector lists.
The CSS2 specification allows to use proprietary keyword color
values and I mention about this matter in the button TM CSS
- Color. Remember however that even common used 16 color
names (aqua, black, blue, fuchsia, gray, green, lime,
#660033, navy, olive, purple, red, silver, teal, white and
yellow) are platform dependent. They belong to the
140 Netscape named colors. Netscape and newer
Microsoft Internet Explorer browsers know them all, but not
Opera version, which knows only 16 common used color names (Opera 5.1x+ supports Netscape's named colors). In order to
avoid incompatibility use hexadecimal or RGB-values so, that main
color values belongs to the web safe colors palette. I have
listed color value keywords
with corresponding hexadecimal and RGB-value in a separate
page.
Proprietary HTML elements, attributes and attribute values are for Opera like an unknow language, which I doesn't understand anything. A example of using proprietary attributes and attribute values:
<body leftmargin="0"
topmargin="0" marginheight="0" marginwidth="0">
<basefont color="cornflowerblue">
Note. The HTML-Tidy utility works
partially as a validator, but it is not a comprehensive validator
like the online
HTML validator of W3C. It helps to fix most HTML encoding
errors, but it doesn't warn all errors in incorrect usage of
HTML-attributes. If some attribute belongs to the used HTML
specification, it allow to set it to elements, which DTD-files
don't allow. It doesn't warn all proprietary attributes. In the
previous example it warns only about the proprietary
line-height attribute, but not other attributes,
which it should also warn if it was a strict HTML-validator.
The proprietary attributes marginheight="0"
leftmargin="0" topmargin="0" marginheight="0"
marginwidth="0" are intended to get the browser render
graphics to the top of the page from left to right in Microsoft
browsers. This method is used to avoid the so-called
browser offset. In order to get equal result to MS
IE 5.0 and Opera, it is necessary to define also corresponding
CSS properties with same values (indeed Opera reserve always the
space for the vertical scroll bar if scroll bars are not defined
off in framesets; That's why Opera doesn't render the graphics to
the right margin in short pages). Opera needs more CSS than many
other browsers (in fact HTML 3.2 designing is doomed to fail, if
the author wants to create equal result to Opera and MS
browsers). The corresponding CSS with standard values is
following:
body {margin-top:0px;
margin-bottom:0px;margin-left:0px;color:#6495ed}
HTML-editors like MS Front Page create much proprietary or invalid HTML and DHTML code (one person said, that in FrontPage 2000 is the possibility to use preferences (tools > options), where the application doesn't create proprietary encoding). Proprietary code, which MS IE understands is nonsense to Opera and partially nonsense also to Netscape. Invalid order of elements cause rendering problems. Using proprietary and invalid CSS or HTML you just spoil Opera the possibility to render your site correctly. You might even blame that Opera spoils the presentation of your site! Use proprietary elements, attributes or attribute values only in Intranet solutions, when all use the same browser. I recommend however to learn to create your sites according to HTML 4.01 and CSS2 specifications. If you use in the intranet modern web browsers, you don't need any proprietary encoding (except plug-ins tags).
It is also worth to remember, that Netscape 6.0 doesn't
support proprietary DHTML, which use proprietary elements
(LAYER and ILAYER). Future browsers might give up such
proprietary features, which are supported in older browsers. I
have added much proprietary features to the Html all
plug-ins. I hope that it helps you to make right choices (you can
get it through my Zip-folder).
In a way proprietary HTML is also to set elements against the official document type. Applications like Microsoft Word 97 might create invalid HTML like in this example:
<B><P>Microsoft Word 97 might create this kind of invalid HTML. Note, that the elementbis outside the elementpbut in the end of this paragraph the order is opposite.</B></P>
Netscape 6.0/Mozilla is very sensitive to these kinds of errors and can't render CSS properly if the order of elements is incorrect. MS tolerate much invalid HTML and give some level reasonable presentation. If you convert Word-documents into HTML, fix errors with HTML-Tidy. Corel WP 8 doesn't make this kind of errors, but it adds proprietary attributes and unnecessary code. I presume that all office applications make invalid HTML, which should be fixed before used in public web sites.
Remember also to mark
accented characters as entities, for example ä =
ä (used for example in Finnish and Swedish
texts) and ç = ç (a
Spanish/Portuguese character) - don't use accented characters (or
spaces) in web page names. Even if Windows browsers may render
and print documents correctly without them, Mac browsers need
them. HTML-Tidy converts accented characters automatic into
entities by using the action Copy content in the output
window. I recommend not to use special fonts. MS IE 5.0
supports downloaded fonts, but this system is not yet widely
implemented. Some fonts don't have all characters, when it is
impossible to write for example Finnish or Spanish.
If you generate documents for example with Perl, PHP3, ASP or Java-servlets, take samples. Save some generated pages and test, if they are valid. If you use beside HTML-Kit also commercial applications, try to exchange settings of the application so, that they create valid encoding. Unfortunately many commercial applications can't make proper HTML. It is better to manually write generated code. It is quite easy to write Java with HTML-Kit because it knows most used keywords and it has fine syntax highlighting.
I recommend you to read carefully HTML 4.01 and CSS2 specifications in order to avoid invalid encoding (read also a note concerning proprietary XML of MS IE). Indeed HTML 4.01 implementations in common used browsers are not comprehensive. At least Netscape 4.x, MS IE 5.0 and Opera 4.0 have missing of important features. In fact HTML 4.01 implementations need a comprehensive bug list like CSS. Quite good list is HTML Support History of Brian Wilson (Blooberry), but it doesn't list all newest browsers. Missing features however don't concern primary CSS. Read also hints from Web Design Group (WDG). Unfortunately their CSS site covers only CSS1 and it it not a comprehensive CSS tutorial.
Blooberry: HTML Support History.