![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||||
| |||||
|
|
So if a main browser manufacturer with all its huge financial, huge technical resources still can not provide a browser version that can support a 10 years old CSS specification, |
|
then it's time to invite users/visitors to switch or to upgrade. |
|
In the web and in this web inter-connection logic, browser manufacturers have a responsibility. Web authors (and content providers at large) have a responsibility. Users have also a part, a role, a responsibility as well. |
|
I can not agree with you on this: this is not what my experience leads me to conclude. If the web author follows best coding practices |
|
You have to choose between putting hacks into the markup (by abusing tables for layout) and putting them into the stylesheet (by abusing properties for something they were never intended for). I can not agree with you. You give a general perspective, opinion. No example, no concrete reference I can examine... |
#2
| |||||||
| |||||||
|
|
GTalbot wrote: So if a main browser manufacturer with all its huge financial, huge technical resources still can not provide a browser version that can support a 10 years old CSS specification, To my knowledge, there is no web browser that supports the entire CSS2 specification. Obviously, CSS2 support is much better in Firefox/Opera, but I'm sure if it was so easy to upgrade CSS support in IE, Microsoft would have done so already. Don't forget that such descisions are not ruled by technical considerations alone. Backward compatibility is a huge issue. |
|
then it's time to invite users/visitors to switch or to upgrade. That's not your decision but that of the user. In the web and in this web inter-connection logic, browser manufacturers have a responsibility. Web authors (and content providers at large) have a responsibility. Users have also a part, a role, a responsibility as well. Try to tell that last sentence to a user who's ready to spend money on your business website. "Sorry, your web browser from 2001 is too old and sucks. Our pages will look cra... uh, I mean degrade gracefully, but that's not our fault -- it's yours, because you, dear customer, have responsibilies as well. Please don't go to our competitor's website, anyway. Thank you." |
|
I can not agree with you on this: this is not what my experience leads me to conclude. If the web author follows best coding practices It's hard to tell which coding practices are best, isn't it? What constitutes a good coding practice? That which is used on most successful websites such as Amazon and eBay? Table layouts and ugly inline styles abound on their pages. That tells you something about how horrible the current situation of web authoring languages really is. |
|
In fact, I've personally been studying and teaching how to use semantic markup and tableless layouts for about 6 years, and yet I don't see any progress at all. No professional website used by myself on a daily basis has even remotely clean HTML code. It seems that if you want to play safe, you just take a <table> and forget about semantic markup. It's disappointing, but it's reality, and it frustrates me to a point where I almost stop caring. |
|
You have to choose between putting hacks into the markup (by abusing tables for layout) and putting them into the stylesheet (by abusing properties for something they were never intended for). I can not agree with you. You give a general perspective, opinion. No example, no concrete reference I can examine... Fine, here's an example of a hack for creating a three-colum layout on a web page: div id="content" ... /div div id="navigation" ... /div div id="related" ... /div #content { margin-left:20em; margin-right:20em } #navigation {position:absolute; left:0; top:0; width:20em } #related {position:absolute; right:0; top:0; width:20em } It's a hack because the stylesheet abuses the "position" and "margin" properties for something they have not been intended for. |
|
Just take a look and examine the semantics more closely: #content should have a left margin of 20em, yet when you look at the page there will be no visible left margin at all. Stating that you want a margin when you actually want something else is not that much different from stating that something is tabular data when it really is not. |
|
But it's getting worse: the code introduces dependencies. The value of the "margin-left"/"margin-right" properties in one declaration depend entirely on the values of the "width" properties in other declarations. If you would like to change the width of the navigation column, you cannot just say "width:23em", you have to edit other parts of the code as well. Here's another example of a CSS hack: div id="navigation" ... /div div id="related" ... /div div id="content" ... /div #navigation { float:left; width:20% } #related { float:right; width:20% } #content { width:50% } This is a hack because it introduces dependencies between declarations (see above) and even stronger dependencies between the HTML code and the stylesheet (possible ways of ordering the columns depend on the order of the elements in the markup), and because it abuses the "float" property. |
#3
| |||
| |||
|
|
It's hard to tell which coding practices are best, .... In fact, I've personally been studying and teaching how to use semantic markup and tableless layouts for about 6 years, and yet I don't see any progress at all. No professional website used by myself on a daily basis has even remotely clean HTML code. ... You have to choose between putting hacks into the markup (by abusing tables for layout) and putting them into the stylesheet (by abusing properties for something they were never intended for). .... #navigation { float:left; width:20% } #related { float:right; width:20% } #content { width:50% } This is a hack because it introduces dependencies between declarations (see above) and even stronger dependencies between the HTML code and the stylesheet (possible ways of ordering the columns depend on the order of the elements in the markup), and because it abuses the "float" property. Look what the specification says on "float" [1]. The property is clearly designed to be used for giving designers a way to flow text around some block, not to create multi-column layouts. I stand by my opinion that it's impossible to write semantically correct CSS 2.1 code for creating multi-column layouts. |
#4
| |||||||||||||||
| |||||||||||||||
|
|
GTalbot wrote: So if a main browser manufacturer with all its huge financial, huge technical resources still can not provide a browser version that can support a 10 years old CSS specification, To my knowledge, there is no web browser that supports the entire CSS2 specification. Obviously, CSS2 support is much better in Firefox/Opera, but I'm sure if it was so easy to upgrade CSS support in IE, Microsoft would have done so already. |
|
Don't forget that such descisions are not ruled by technical considerations alone. Backward compatibility is a huge issue. |
|
then it's time to invite users/visitors to switch or to upgrade. That's not your decision but that of the user. |
|
In the web and in this web inter-connection logic, browser manufacturers have a responsibility. Web authors (and content providers at large) have a responsibility. Users have also a part, a role, a responsibility as well. Try to tell that last sentence to a user who's ready to spend money on your business website. "Sorry, your web browser from 2001 is too old and sucks. Our pages will look cra... uh, I mean degrade gracefully, but that's not our fault -- it's yours, because you, dear customer, have responsibilies as well. Please don't go to our competitor's website, anyway. Thank you." |
|
I can not agree with you on this: this is not what my experience leads me to conclude. If the web author follows best coding practices It's hard to tell which coding practices are best, isn't it? What constitutes a good coding practice? |
|
That which is used on most successful websites such as Amazon and eBay? |
|
Table layouts and ugly inline styles abound on their pages. That tells you something about how horrible the current situation of web authoring languages really is. In fact, I've personally been studying and teaching how to use semantic markup and tableless layouts for about 6 years, and yet I don't see any progress at all. No professional website used by myself on a daily basis has even remotely clean HTML code. It seems that if you want to play safe, you just take a <table> and forget about semantic markup. |
|
It's disappointing, but it's reality, and it frustrates me to a point where I almost stop caring. You have to choose between putting hacks into the markup (by abusing tables for layout) and putting them into the stylesheet (by abusing properties for something they were never intended for). I can not agree with you. You give a general perspective, opinion. No example, no concrete reference I can examine... Fine, here's an example of a hack for creating a three-colum layout on a web page: div id="content" ... /div div id="navigation" ... /div div id="related" ... /div #content { margin-left:20em; margin-right:20em } #navigation {position:absolute; left:0; top:0; width:20em } #related {position:absolute; right:0; top:0; width:20em } |
|
It's a hack because the stylesheet abuses the "position" and "margin" properties for something they have not been intended for. |
|
Just take a look and examine the semantics more closely: #content should have a left margin of 20em, yet when you look at the page there will be no visible left margin at all. |
|
Stating that you want a margin when you actually want something else is not that much different from stating that something is tabular data when it really is not. |
|
But it's getting worse: the code introduces dependencies. The value of the "margin-left"/"margin-right" properties in one declaration depend entirely on the values of the "width" properties in other declarations. If you would like to change the width of the navigation column, you cannot just say "width:23em", you have to edit other parts of the code as well. |
|
Here's another example of a CSS hack: div id="navigation" ... /div div id="related" ... /div div id="content" ... /div #navigation { float:left; width:20% } #related { float:right; width:20% } #content { width:50% } This is a hack because it introduces dependencies between declarations (see above) and even stronger dependencies between the HTML code and the stylesheet (possible ways of ordering the columns depend on the order of the elements in the markup), and because it abuses the "float" property. |
|
Look what the specification says on "float" [1]. The property is clearly designed to be used for giving designers a way to flow text around some block, not to create multi-column layouts. |
|
I stand by my opinion that it's impossible to write semantically correct CSS 2.1 code for creating multi-column layouts. It *will* be possible in CSS3's Advanced Layout module [2], provided it will ever be finished. With the properties explained in that draft, it will be possible to write a stylesheet that actually says "I want a three-column layout with A on the left, B in the middle, C on the right, and D at the bottom" without any indirections, clever tricks, or dependencies. |
#5
| |||||
| |||||
|
|
GTalbot wrote: So if a main browser manufacturer with all its huge financial, huge technical resources still can not provide a browser version that can support a 10 years old CSS specification, To my knowledge, there is no web browser that supports the entire CSS2 specification. Obviously, CSS2 support is much better in Firefox/Opera, but I'm sure if it was so easy to upgrade CSS support in IE, Microsoft would have done so already. Don't forget that such descisions are not ruled by technical considerations alone. Backward compatibility is a huge issue. |
|
Look what the specification says on "float" [1]. The property is clearly designed to be used for giving designers a way to flow text around some block, not to create multi-column layouts. |
|
I stand by my opinion that it's impossible to write semantically correct CSS 2.1 code for creating multi-column layouts. |
|
It *will* be possible in CSS3's Advanced Layout module [2], provided it will ever be finished. With the properties explained in that draft, it will be possible to write a stylesheet that actually says "I want a three-column layout with A on the left, B in the middle, C on the right, and D at the bottom" without any indirections, clever tricks, or dependencies. I presume the code would look like this: body { display: "abc" ".d." } #navigation { position:a } #content { position:b } #related { position:c } #footer { position:d } (Something may be wrong with this, I am not really that familiar with the current draft!) |
|
I trust that you handle CSS pretty well and know how to use it as efficiently as possible. I'm just arguing that complex CSS layouts are bound to remain hacks simply because they *cannot* be done otherwise. |
#6
| |||
| |||
|
|
On 2008-01-14, Christian Hackl <hacki (AT) sbox (DOT) tugraz.at> wrote: GTalbot wrote: So if a main browser manufacturer with all its huge financial, huge technical resources still can not provide a browser version that can support a 10 years old CSS specification, To my knowledge, there is no web browser that supports the entire CSS2 specification. Obviously, CSS2 support is much better in Firefox/Opera, but I'm sure if it was so easy to upgrade CSS support in IE, Microsoft would have done so already. Don't forget that such descisions are not ruled by technical considerations alone. Backward compatibility is a huge issue. Backwards compatibility is a technical consideration. Microsoft easily has the resources to have by now provided something that has a completely backwards-compatible "quirks mode" and a completely standards-compliant "standards mode". |
|
Look what the specification says on "float" [1]. The property is clearly designed to be used for giving designers a way to flow text around some block, not to create multi-column layouts. I do see your point here. CSS 2.1 often doesn't give the impression of providing the things people actually want very directly. |
|
It *will* be possible in CSS3's Advanced Layout module [2], provided it will ever be finished. With the properties explained in that draft, it will be possible to write a stylesheet that actually says "I want a three-column layout with A on the left, B in the middle, C on the right, and D at the bottom" without any indirections, clever tricks, or dependencies. |
#7
| |||
| |||
|
|
#content { margin-left:20em; margin-right:20em } #navigation {position:absolute; left:0; top:0; width:20em } #related {position:absolute; right:0; top:0; width:20em } It's a hack because the stylesheet abuses the "position" and "margin" properties for something they have not been intended for. |
|
Just take a look and examine the semantics more closely: |
|
Stating that you want a margin when you actually want something else is not that much different from stating that something is tabular data when it really is not. |
#8
| |||
| |||
|
|
Ben C wrote: [...] Microsoft easily has the resources to have by now provided something that has a completely backwards-compatible "quirks mode" and a completely standards-compliant "standards mode". The question here is that there are different level of quirks. There's the true "quirks mode" that dates back to the pre-HTML 4 era. Then there's the IE 6 "standards mode" that isn't terribly standards-compliant (left, for example, is broken). Now there's IE 7 which is more standards-compliant, but not as much as, say, FF or Safari's standards compliance. IE 8 is also going to have a mess. Now how am I supposed to specify that I want an IE 7-era standards compliance? Don't say conditional comments, they are the pinnacle of standards non-compliance. Read the W3C CSS mailing list archives. You'll find that trying to micromanage standards has been asked for a few times. A consensus prevails around the idea that permitting usage implies abuse; support is tepid for the reason that browsers will be inclined to lie if they are asked to state what they support. It happened with UA strings, it'll happen again with the some of the proposals. |
#9
| ||||
| ||||
|
|
Christian Hackl wrote: In fact, I've personally been studying and teaching how to use semantic markup and tableless layouts for about 6 years, and yet I don't see any progress at all. No professional website used by myself on a daily basis has even remotely clean HTML code. It seems that if you want to play safe, you just take a <table> and forget about semantic markup. It's disappointing, but it's reality, and it frustrates me to a point where I almost stop caring. Don't mean you have to create *your* sites that way, who is pointing the gun to your head? |
|
Just take a look and examine the semantics more closely: #content should have a left margin of 20em, yet when you look at the page there will be no visible left margin at all. Stating that you want a margin when you actually want something else is not that much different from stating that something is tabular data when it really is not. The margin it to clear the "position:absolute" block that is not in the page flow! This is correct behavior and proper method. |
|
This is a hack because it introduces dependencies between declarations (see above) and even stronger dependencies between the HTML code and the stylesheet (possible ways of ordering the columns depend on the order of the elements in the markup), and because it abuses the "float" property. Where does it say one rule is not supposed to rely or depend on another? |
|
What about cascade? |
#10
| |||
| |||
|
|
Jonathan N. Little wrote: Christian Hackl wrote: look and examine the semantics more closely: #content should have a left margin of 20em, yet when you look at the page there will be no visible left margin at all. |
![]() |
| Thread Tools | |
| Display Modes | |
| |