This small HTML code represents my HTML5 page very clearly.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Pebble Go</title>
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
</head>
<body>
<style>
#media only screen and (orientation: portrait) {
html, body {
background: #222;
}
}
#media only screen and (orientation: landscape) {
html, body {
background: #000;
}
}
</style>
</body>
</html>
And so, on desktop browsers, Android tables and phones - it's working fine. But on iPad mini - it is not! … Result is - background is always gray. So my question is:
Why is this media query not working on iPad mini … ??? …
PS: I know that I have to use the max-device-width property as well, but I have a big reason not to do it! …
The requirement for this page is to be 100% wide and high, and I decided to:
Make the default CSS rules for landscape mode;
Define rules for different widths in landscape mode;
Define the portrait variants, relying basically on "orientation: portrait", and define different widths as well.
I did this! It's working! … Except the iPad mini !!! … And if I use max-device-width or something like this - then I'll be in a situation where I'll have to write different rules for landscape - different widths, portrait mode - different widths, and then mobile devices - landscape and portrait … !!! ….
The problem appeared to be caused by the clause in the meta tag for the viewport, and more specifically: "height=device-height". Removing it made everything work normal :) ...
Related
I am trying to use the orientation media query during print to change the way my data is displayed. This works in FF and Edge but not Chrome. If I enable emulation in dev tools and select 'print' then my code works. If I try to print though neither the print preview window nor the output change based on orientation.
I have tried locating the style in the html as well as externally.
This is my print.css file:
#media (orientation: portrait) {
pre {
font-size: 5px;
}
}
#media (orientation: landscape) {
pre {
font-size: 20px;
}
}
And this is my source file:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="print.css" media="print" type="text/css">
</head>
<body>
<pre>1234567890</pre>
</body>
</html>
I would have expected it to display the <pre> text in a 20px font size when landscape layout is chosen during print and 5px font size when portrait is chosen. This is the way it works in FF and Edge when either viewing the print preview or actually printing (say to a PDF).
Hey everyone i'm currently struggling with media queries in my website. I need to build a website that changes certain things according to screen size of the device.
I have copied the media query from the internet and added the Meta view-port. My friend has the exact same thing and there it works fine. I've added some code as reference. This should just work right?
Could someone tell me why it doesn't?
/*Mobile media query*/
#media only screen and (max-width: 360px) {
.blue_box2{
display:none;
}
}
My HTML viewport:
<meta name="viewport" content="width=device-width, initial-scale=1">
Have you tried the following?:
#media only screen and (max-width: 360px) {
.blue_box2{
display:none !important;
}
}
or this :
<meta name="viewport" content="width=device-width, initial-scale=1.0">
My view port wouldn't work unless i put 1.0. Just wondering if the same is happening to you.
Have you got any conflicting code outside of this media query (or any inline styles in your HTML) that could cause it to function incorrectly?
The query you've shown works fine, which leads me to believe it's a problem with the code you haven't shown.
HTML
<div class="blue_box2" style="width:200px; height:200px;">
</div>
CSS
.blue_box2 { background:red; }
#media only screen and (max-width: 360px) {
.blue_box2 {
background:blue;
}
}
Just a thought:
Are you testing this using Google Chromes Developer Tools (F12), as just shrinking your browser window down normally may not reach as low as 360px.
I have the following media query in a <style> block, within the <head> of my index.htm file....
#media screen and (min-width: 40.5em) {
header[role="banner"] {border:solid 1px red;}
}
But IE10 will not produce a red border around my header when the page loads. Now if I take the style out of that media query, then IE will process the red border when the page reloads.
What is the secret here in getting this displayed in IE10, with my page loads?
Also...I have the following set in my
<head>
...
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1 user-scalable=no" />
<meta http-equiv="X-UA-Compatible" content="IE=9" />
...
</head>
px does not work for me either...
#media only screen and (max-device-width: 100px) {
header[role="banner"] {border:solid 1px red;}
}
no show...
UPDATE
I figured out whats going on. Within my style block I have the following css code...
#media screen and (min-width: 5em) {
//various css rules for mobile view
}
and right below it I have....
#media screen and (max-width: 40.5em) {
//various css rules for desktop view
}
Chrome understands this on my desktop browser and reads the second media query. But IE10 gets stuck on the first one. My goal is to have a mobile first approach, but not for IE to get stuck there if the screen size is larger. That is my issue...
When I remove the 1st media query, the 2nd one works in IE. How can i keep both of them and have IE know to ignore the first for larger screens...?
Set up your mobile styles first without calls to any #media queries (those will be your defaults). From there, you can use #media queries to adjust for larger/different screen resolutions.
I have a site that uses a custom font from google fonts. On my website it is aligned normally, but on my android, the source is out of alignment. Researched by various mobile tricks, and I wonder if any of them actually work, because, as tested one by one, and it did not work. What am I doing wrong?
#media screen and (max-device-width 480px)
::made-up-pseudo-element, .selector {}
#media only screen and (-webkit-min-device-pixel-ratio: 2){}
Solution
Before use this hacks, add this line in your <head> HTML:
<meta name="viewport" content="width=device-width, initial-scale=1">
Major Browsers render line-height differently if not specified. Put line-height: 15px; in the body or more/less.
I am working on a PC with screen resolution 1600x900.
Here is my code:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>Page title</title>
<style type="text/css">
#media screen and (max-device-width : 600px) {
body { background-color:#F00; }
}
</style>
</head>
<body></body>
</html>
The problem is that I am trying to develop a resposive version of the site and while developing I want to use Chrome on my PC. I was expecting that when I resize my browser to width less than 600px, the media queries will run, but it seems to think my device width is 1600px and it never changes. How to make it fire the media queries while I resize the window on my PC?
Remove "device" from #media screen and (max-device-width : 600px) { :http://jsfiddle.net/7rSzr/
Making it:
#media screen and (max-width : 600px) {
body { background-color:#F00; }
}
"I want to use Chrome on my PC"
You can change device-width in the settings of the Chrome Developer Tools. Refresh your page after that and admire the red background ;)