- From: Glenn Linderman <v+html@g.nevcal.com>
- Date: Wed, 20 Apr 2011 01:17:55 -0700
- To: Alan Gresley <alan@css-class.com>
- CC: Anton Prowse <prowse@moonhenge.net>, www-style@w3.org
On 4/19/2011 11:50 PM, Alan Gresley wrote: > On 20/04/2011 7:59 AM, Glenn Linderman wrote: > >> I see several problems here: >> 1) no CSS technique for scrolling table body rows. >> 2) without a float, directive, the scrollbar is far away from the data >> being scrolled. >> 3) with a float, different browsers render the table differently, even >> though there is no width constraint. >> >> Demonstration page: http://nevcal.com/test/testtab3.html > > > To get the columns from shrink wrapping. > > > .mh5>div > { > width:100%; > margin-right: 20px; > } I've read the box model spec quite a few times, and never figured this out. From CSS2.1 PR Section 10.2: <percentage> Specifies a percentage width. The percentage is calculated with respect to the width of the generated box's containing block. If the containing block's width depends on this element's width, then the resulting layout is undefined in CSS 2.1. it seems that this is quite unspecified by CSS 2.1, but testing your suggestion proves that the browsers I can test with do, in fact, produce a consistent result, BUT ARE NOT REQUIRED TO. So from other comments made here, I shouldn't use this feature, because there might be a browser somewhere that acts different. > All browsers are showing correctly that I can test (FF version 3.6.16 > has been gobbled by FF4) apart from Safari which does not clip the > margin-right in a overflowing container. To fix that change this CSS, So this Safari behavior seems to be a non-conformance to CSS2.1 PR, correct? Section 10.3.3, correct? > .mh5 > { > overflow: auto; > height: 100px; > width: auto; > float: left; > } > > > to this. > > > .mh5 > { > overflow-y: auto; > overflow-x: hidden; > height: 100px; > width: auto; > float: left; > } > > > Does this help? Sure, it helps. But it seems to be replacing an undefined, inconsistent behavior with an undefined, somewhat-consistent-among-some-number-of-tested-browsers behavior: do I understand that correctly? So the recommendation is to never depend on non-standard features, except if you can test enough browsers and decide you can? So then after deployment, someone comes along with a different or upgraded browser that acts different, and then what? Sniff the browser? Redesign the web site? > I should add that floats (or tables) with auto width and cases involving > overflow use to be very buggy in 2008. Well on this machine, I'm running 4 browsers released in 2011, happily. For some applications, this one in particular, I know that the users are only using Chrome and Firefox (and sadly they are the two that produced stupid-looking results without your tweak), and upgrade reasonably often. So this helps to make an icky fallback case work by depending on a non-standard feature of current versions of these browsers. I have no particular desire to test this on older versions of browsers, because they don't apply to this application, but from what you say, this technique wouldn't likely work well on them. By the way, I did peruse your CSS Test site, and the CSS discussion group and wiki you pointed me at. I was a bit disappointed to find your samples that render in all known browsers using all sorts of browser-specific CSS rules, apparently as fallbacks for (older?) versions of browsers during their development paths towards standardization... I don't find that significantly less complex to create or understand than browser/version sniffing. I expect to hear about "CSS bloat" in the future, if that sort of technique is the wave of the future. It seems that the arguments about how complex browser sniffing is to get right and how people misuse it, will simply be replaced by arguments about how people misuse and over-constrain browser-prefixed CSS, and what a nightmarish mess they have with 6 (different, at least because of different prefixes) fallback techniques for 6 different browsers, and how difficult it is to maintain the same code 6 different ways, and how the real functionality of the CSS is obscured by the necessity to express it many ways to support multiple versions of multiple browsers. As an experiment, I tried to extract the techniques of your menu system from your CSS file, and remove all the fallbacks, and I did succeed, after some hours, in making a similar system that looks similarly nice, and works in _today's_ browsers, but likely not the older ones for which you have all the fallbacks in place to support. And it seems that the CSS discussion group and wiki are populated by many people that are sniffing and hacking their way to solutions -- depending more on actual behaviors of the varied browsers than the standards. It only confirms my view that some here have tried to dispute, that sniffing and hacking are the only way to achieve reasonable web sites with yesterday's browsers, that are still widely in use. There is pent-up demand for more sophisticated web applications, otherwise libraries like jquery, which have hundreds of thousands of lines of code to try to provide uniform services across diverse versions of browsers, would not have been invented nor be maintained. So the line I hear here, about "just don't use the new features that aren't consistently implemented across browsers or have a bug or non-conformance in some implementation" isn't going to be well-received... it'll be ignored, and more lines of code added to jquery to support new and future browsers... likely including more lines of code to do more complex browser sniffing if browser vendors attempt to make sniffing harder, as has been stated here. Sad.
Received on Wednesday, 20 April 2011 08:18:23 UTC