why is using multiple consecutive line breaks in HTML considered a bad practice
Because it breaks the fundamental principle of separation of concerns: by mixing the "content" and "presentation" layers. By using multiple <br>
s to create "margins" you are embedding the presentation in the content. To change the "margins" you need to change the content. This ultimately makes the site harder (messy) to update. If sites are harder to update there's more chance of error, etc.
the page appears more nicely to users who don't have javascript or CSS enabled
An extreme (to the point of being non-existent) edge case. Any user that has actively disabled CSS will be used to pages appearing mashed. (How do you disable CSS in the modern browser anyway?) I struggle to imagine that you have real users that are using browsers that are so "limited [in] functionality" that they are incapable of this basic CSS. Any browsers that are purposefully designed to be very limited probably have alternative forms of navigation or are designed to be non-graphical anyway?
It's great to have pages that are at least readable with CSS disabled - it's a sign they are logically structured and are accessible. However, the width of a margin should not matter in this respect. And real users don't surf with CSS disabled.
but <br>
is only 4 bytes where as <div ID="X"> </div>
is almost 25 bytes
You shouldn't be using a DIV either. For "margins" you should be using CSS. If these margins are so critical to the layout then include them as part of an embedded stylesheet in the HEAD section - that way they are loaded with the page and the user cannot see a delay. (Whilst developing you still keep the embedded stylesheet external - separation of concerns - and embed it using a server-side technology when the page is served.)
<br>
. – Mike -- No longer here Apr 15 '15 at 0:18<br>
is only 4 bytes where as<div ID="X"> </div>
is almost 25 bytes. I like to make my code small because 1. I want a good code/text ratio and 2. I want the download time to be small and I just find it ridiculous myself to use an opening and closing tag just for a simple line break when<br>
works fine. – Mike -- No longer here Apr 15 '15 at 0:23