Thought we could start a thread about some useful CSS tips and techniques, so we can learn from each other :lol:
Here's my contribution. For the longest time, I never knew that you can actually assign two (or more) classes to the same element. This is useful when you have multiple elements that share a lot of properties, but aren't exactly identical. Put the common properties in one class, then use the second class for the properties that differ. For example:
but I am not sure if that is normal or if I am being unsemantic or something.
A better use of multiple class selectors would probably be more easily exemplified with conditional body statements, similar to those used in modular web pages that achieve page-specific navigation appearances.
Here's a cool way to send different values to IE6 and Firefox for the same property:
div { height: 200px !important; height: 150px; }
By default, the second height property would take effect because it comes later in the stylesheet, but Firefox sees !important and gives the first height value precedence. IE6 incorrectly ignores !important and uses the second value.
IE6 does actually recognize !important, but just not in this context. For example, if you had "height: 200px; !important" in an external stylesheet, it would override "height: 150px;" in an internal or inline style.
This tip isn't actually CSS but JavaScript and relates to separating web layers effectively. Consider content hidden and displayed via JavaScript something like:
It adds a class of .hasJS to the html tag but only if JavaScript is available.
Now change the .hidden declaration to:
.hasJS .hidden {display:none}
Now the content will only be hidden if both JavaScript and CSS are available. An important accessibility consideration. Because it's hidden as the page is built so there's no flash of hidden content as JavaScript affects page elements.
Here's my contribution. For the longest time, I never knew that you can actually assign two (or more) classes to the same element. This is useful when you have multiple elements that share a lot of properties, but aren't exactly identical. Put the common properties in one class, then use the second class for the properties that differ. For example:
HTML:
CSS:
.title {color: #000; font-family: verdana; font-weight: bold;}.large {font-size: 24px;}
.small {font-size: 16px;}
EDIT: I suppose my point is that using it for titling things is silly when you could just use some css like
h1 {font-family:arial}h2 {font-family:lucida sans unicode}
header h1, header h2 {color:#000;}
content h1, content h2 {color:#cc0000;}
but I am not sure if that is normal or if I am being unsemantic or something.
A better use of multiple class selectors would probably be more easily exemplified with conditional body statements, similar to those used in modular web pages that achieve page-specific navigation appearances.
Oh I know, it was just a quick example to show it could be done. Probably not the best one :lol:
By default, the second height property would take effect because it comes later in the stylesheet, but Firefox sees !important and gives the first height value precedence. IE6 incorrectly ignores !important and uses the second value.
IE6 does actually recognize !important, but just not in this context. For example, if you had "height: 200px; !important" in an external stylesheet, it would override "height: 150px;" in an internal or inline style.
Consider content hidden and displayed via JavaScript something like:
The problem occurs when Javascript is unavailable, the content will never be able to display.
To circumvent the issue add this straight after the page title in the HTML and not in a separate file:
It adds a class of .hasJS to the html tag but only if JavaScript is available.
Now change the .hidden declaration to:
.hasJS .hidden {display:none}Now the content will only be hidden if both JavaScript and CSS are available.
An important accessibility consideration.
Because it's hidden as the page is built so there's no flash of hidden content as JavaScript affects page elements.
regards
mike foskett
Hi daGUY.
For IE6, I use the following hack; is very similar to yours ...
div {height: 200px !important;
height/**/: 150px;
}
Hi daGUY.
For IE6, I use the following hack; is very similar to yours ...
div {height: 200px !important;
height/**/: 150px;
}
That works too. You could also do something like:
IE ignores the underscore and sets the height to 150px; Firefox and other browsers interpret "_height" as an unknown property and ignore it.
All of these methods work, but I like the first one the best (the one I posted above using !important) because it also validates.