Reputation: 5139
I'm doing a mobile website now and trying to target different devices using CSS3 media queries. Part of my code is as follows:
@media screen and (max-width:320px) {
body {
width: 320px;
}
/* some other style */
}
As you can see, I have to set the body width explicitly to make sure it doesn't show the width I set for desktop in my normal css, which is 920px. I'm wondering if there is any way that the body width can be set automatically to the device width and I don't need to set this manually every time I create a new @media
.
By the way, I also add the following code inside my head
tag:
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
Upvotes: 25
Views: 63344
Reputation: 11
I messed with a lot of different solutions and this is the one that came out best for me.
:root {
Max-width:100%;
}
body { min-height:100vh;
}
From here you’ll add in (max-width:100%;) on each child element from the root. Root sets it as the uppermost parent element causing everything to be able to set to 100% width. If the element above the child element doesn’t have 100% width it won’t apply.
Upvotes: 1
Reputation: 2356
You can also use
width: 100vw;
That will set the element to 100% of the viewport's width. You might want to check your browsers' compatibility before adding: http://caniuse.com/#search=vw
More info on viewport sizing: https://css-tricks.com/viewport-sized-typography/
Upvotes: 44
Reputation: 1794
Just use width: auto;
Difference between width: 100%;
and width: auto;
is that outer width for 100% is 100% + padding-left + padding-right
, inner 100%
. Outer width of width: auto
is 100%
, inner width is 100% - padding-left - padding-right
if and only if display
is block
and no float
is set (and no floated element without clear is before).
Upvotes: 27