Click to See Complete Forum and Search --> : Is there a valid way to do this?
Garamond
05-29-2009, 02:49 PM
Hi folks,
I haven't done much work on the web so some of my memories of CSS has faded a bit. I downloaded a copy of the css zen garden's exercise to refresh my memory.
I got everything to work, but one tag does not validate :(
html {
overflow-x: hidden
}
Is there any way to do this that adheres to the CSS 2.1 specification, or is there another way I can do this to prevent a horizontal scroll bar when an image is larger than the desired width of the window (and thus causes a horizontal scroll bar?)
Aestuo
05-29-2009, 07:11 PM
overflow-x is css 3, it needs to be just overflow: hidden and you need to specify a size of some sort (75% of width or 500px or something)
it should be in a div, but you could do it in body { not in the html {
Garamond
05-29-2009, 07:32 PM
Thanks for your reply Aestuo :)
I tried using the overflow: hidden property originally on the div but it seems to have no effect when I do that to the div itself. For reference:
<div id="extraDiv1"><span></span></div>
And the CSS applied to it:
div#extraDiv1 {
margin-left: 5%;
position: absolute;
top: 0;
z-index: -1;
overflow: hidden;
background-image:url(images/ss36-hires.jpg);
background-position: 600px 0px;
width: 1600px;
height: 681px;
}
#extraDiv1 span {
display: none;
}
How do I specify a width or height for the CSS 2.1 version of overflow? It doesn't seem to accept any given values.
Aestuo
05-29-2009, 08:03 PM
wait, what are you trying to do? backgrounds should never cause scroll bars, and are you testing in ie6 or something else? (i hope something else)
also, the overflow only affects content not the background of an element; a background image should automatically get cut off based on the size of the element.
Garamond
05-29-2009, 08:10 PM
wait, what are you trying to do? backgrounds should never cause scroll bars, and are you testing in ie6 or something else? (i hope something else)
also, the overflow only affects content not the background of an element; a background image should automatically get cut off based on the size of the element.
I'm trying to reproduce the effect of a giant image (in this case 1600x681) that does not cause the appearance of a horizontal scroll bar, clipping at 100% width (essentially showing as much of the image as possible before causing a scroll bar.)
Is this possible using just an empty div and span tag? I'm trying to follow the zen garden exercise by not modifying the html document.
Aestuo
05-29-2009, 08:40 PM
if you set the image as the background for the page it clips automatically. you just specify the image as the background in the body, and do not specify the width. if you have fixed width elements within the page, they will cause a scroll bar, but doing the background this way, you should have no issue.
Aestuo
05-29-2009, 09:06 PM
(also, am i missing something? does everyone do the "Zen Garden Exercise"? - I've heard of the zen garden site before...)
Garamond
05-29-2009, 09:52 PM
(also, am i missing something? does everyone do the "Zen Garden Exercise"? - I've heard of the zen garden site before...)
All it is is just downloading the sample html and css file (or supplying your own, same difference) and editing only the css file, you can't touch the html file.
I guess from your explanation that it can't be done with a div, and essentially can't be done at all with the stylesheet as a whole unless I get rid of that 5% margin (because otherwise everything would get a 5% margin to the left, no?) The 5% margin was not an absolute necessity, I was just experimenting using percentages instead of static numbers.
Thanks for the help on understanding overflow and its effect (or lack thereof)!
Edit: Scratch that, I can make it work I just forgot to remove the margin on the container div to achieve the same effect! Thanks again!
Aestuo
05-29-2009, 10:00 PM
specify in the css that the background of the body be the image, not the background of a div. your content can have its margins then, and the image will get as much shown as fits in the browser size.