In the CSS course Learning CSS The Box Model, on Lesson 10: Auto, using it to center text, couldn’t you do the same thing with text-align: center; What is the difference and what situations would you use either one.
In the second example mentioned in this exercise the width has been set to 400px.
As a result the div will center the element greater than 400px in a content.
How is that possible? I thought the width is until 400px?
The containing element can never be smaller than the 400px set width of this element. When the containing element is greater than 400px, the box will be centered horizontally no matter what the width of the outer one.
margin: 0 auto;
versus
text-align: center;
Margins do not affect text alignment. We can center the element but not have an effect on text it contains. If we use text-align on the parent to align boxes it contains, that will also have an effect on the text in the boxes.
Why is it not possible to center an element that takes up the full width of the page? Wouldn’t that just make the element appear in the exact center of the webpage?
There would be no margins if the element itself spans the entire width. All block level elements default to 100% and border-box would have the same effect it has on narrower widths.
I understand using ‘margin: 0 auto’ removes top/bottom margins, and adds margins left/right to automatically center an element horizontally, but why doesn’t ‘margin: auto 0’ (reversing the command) center an element vertically instead?
An age old question, and one that you’ll get a multitude of answers to. It’s also the reason we have Flexbox and Grids, since in native form, CSS takes quite a beating (as in the layout author).
The document will flow where it can and stretch all the vertical limits it needs to. Horizontal is easy to control. Set the width, and Bob’s your uncle. Height is not such an easy thing to regulate, though we do have overflow fallback if a container has a set height.
We’ve brought down a document of indeterminant size and are expected to render it, by whatever style configurations we may have contrived.
It’s like a bucket of paint that we throw at the browser and let it sort out which pixels get it. Only we do help it along by structuring and directing presentation.
Sorry but i didn’t find out how to ask my own question so i just used reply.
Why do we need to give a width to the element for CSS to be able to center the element from the left and right borders of its container using the ‘‘auto’’ value? Because if we just use the ''margin-left" and “margin-right” properties we can do it without giving a width property to the element.
margin is fixed to whatever we set it. auto is not fixed but creates equal margins on both sides. The alternative is to use percentages for the margins but this also has an effect on container width when the browser is re-sized. auto handles this much more cleanly without affecting the container width if it is fixed.
There is a fine line that separates the two methods, as both are valid. Design preferences factor into our choice to use one over the other. There is no one better way.
Bottom line, be sure to test your document in all manner of device sizes to be sure the layout doesn’t break (responsive design), or at least breaks gracefully (adaptive design).
I was quite surprised that the whole box was moved to the left no matter the number it was (1, 10, 100). Does that mean I cannot use different number than zero?
Not exactly, no. It means CSS does not recognize the number if it has no unit. All numbers must have a unit, save for zero. Since zero is undefined, it has no unit that can be applied (logically).
The above sets all four borders with their own thickness. The order is as follows,
top left bottom right
Always. When we compress it further,
border: 1px 3px
Now the top and bottom are the same, and the right and left are the same.
top/bottom left/right
In margin: 0 auto the top and bottom have zero margin, the right and left are balanced out to be nearly the same, assuming the width is less than the parent’s width.