The ul rules are the only ones I thought were missing from this. Its probably not semantically correct but I use those much more for layout then actual lists these days.
I just add whatever rules I need for my elements. I don't get this all fuss about CSS Resets, and to have them in separate file is not… very wise, let's say.
I call it needless overhead. Seriously, is it that difficult to reset padding and margins only when you need that? Do you really want to have extra HTTP request for some dumb CSS file you can do just fine without?
And it has nothing to do with code reuse. Setting a margin, whoa, rocket surgery, no less.
The whole point of a Reset is to have a clean slate to start from. Do you really know, and want to know, every case where IE6/Safari3/ObscureBrowser300 adds a default padding/margin, and how that is different from Opera/Firefox/etc? Same for font families, sizes and styles?
In my opinion, working without a reset of some kind is quite similar to writing C++ classes where data members are not initialized to meaningful values... you just can't trust what you'll end up with.
Do you really know, and want to know,
every case where IE6/Safari3/ObscureBrowser300
adds a default padding/margin, and how that is
different from Opera/Firefox/etc?
If I care about the margin, I will set it myself anyway. If I don't care, I don't care what the default is and have no
need to reset it. As simple as that.
Your choice. I'll just take YUI Reset, combine it with YUI Base, both of which have already been tested thoroughly, and get a reusable foundation for future use.
I have seen this now several times, why don’t those CSS resets use the universal selector?
* {margin:0;padding:0;}
works fine. You want to reset not only html and body but also your hn and p elements, right? Isn’t that sort of the idea?
That one line is pretty much the only thing I do in the way of CSS reset and it’s tremendously helpful. There will only be margin and padding if I explicitly declare that I want it which in turn helps remove a lot of margin:0; and padding:0; (which before, because of laziness, I often put in just to be safe).
Apart from form inputs getting really messed up, there's a 'massive' speed penalty you incur by using the * selector to reset everything. Where massive probably isn't large enough for most websites, so if it works, carry on :)
What this basically does is what you would do when starting without a CSS reset: Just reset the elements while you're styling them. Elements that you don't use don't get reset.
That's fine of course, but if you make a lot of websites then you really just want a common stylesheet that does everything you might need, and go from there. (I made sencss with that in mind: http://sencss.kilianvalkhof.com )