How to write different HTML for different screen sizes

34,345

Solution 1

As far as i have experienced, you cannot do media queries inside HTML pages. You need to do it from within your CSS.

But if you want to show some special text only when it is below a certain resolution, why not only make it visible when the resolution is lower than 960px?

Creating responsive designs is very different from a regular design, because you have to think a lot more (which is haaard)

Solution 2

you can check it via using javascript screen object :

screen.width 

or you can do this with css

<link rel="stylesheet" media="screen and (min-device-width: 800px)" href="800.css" />

http://css-tricks.com/6206-resolution-specific-stylesheets/ http://www.javascriptkit.com/howto/newtech3.shtml

Solution 3

You need to assign an id (or a class or any other way of finding your element from CSS) to the <div> and then you can set a media query definition like this:

<div id="mydiv">...</div>
<style type="text/css">
@media screen and (min-width: 961px) {
   div#mydiv { display: none }
}
</style>

Or for better readability: Make it hidden on default and visible if max-width: 960px.

Solution 4

I am actually going through the same situation and found that if you want to do this you could really add all the text in the HTML page, and then hide it on screen widths that you don't want it to show. For example:


    <div>
    [text that will be shown for screens less or equal to 960px in width]
        <div class="smallScreen">
        some new text only for lower resolution
        </div>
    [end of condition for small screens]

    [text that will be shown for other screens that are greater in width]
        <div class="largeScreen">
        some new text only for higher resolution
        </div>
    </div>

And then you could add CSS:

    /* On smaller resolutions, hide the text for Large screens */
    @media only screen and (max-width: 960px) {
        .largeScreen {display: none;}
   }

   /* On larger resolutions, hide the text for Small screens */
    @media only screen and (min-width: 960px) {
        .smallScreen {display: none;}
   }

I hope this works out fine :)

Solution 5

I could be wrong, but I think css selection by resolution would need a little help from javascript.

Here is a quick example of what that js could look like, embedded in jquery:

$(document).ready(function() {

  if ((screen.width>=1024) && (screen.height>=768)) {
   alert('Screen size: 1024x768 or larger');  
   $("link[rel=stylesheet]:not(:first)").attr({href : "detect1024.css"});
 }
  else  {
    alert('Screen size: less than 1024x768, 800x600 maybe?');
    $("link[rel=stylesheet]:not(:first)").attr({href : "detect800.css"});
  }
});

Hope that helps.

Share:
34,345
Alon
Author by

Alon

Updated on May 30, 2020

Comments

  • Alon
    Alon almost 4 years

    I understood how I change CSS via media queries (such as media="screen and (max-width:640px)")

    but let's say I want to write (just for example)

    <div>
    [if screen resolution is lower then 960 px]
        <div>
        some new text only for lower resolution
        </div>
    [end of condition]
    </div>
    

    What is the condition I need to write to get it right?

  • T.J. Crowder
    T.J. Crowder over 12 years
    It doesn't have to be an ID, it can be anything to allow the OP to target the element. I suspect I'd use a class so that I could put more than one of these on a page if I wanted to.
  • Till Helge
    Till Helge over 12 years
    True. It just looked so specific that I thought an ID to be the best choice...but yeah...a class or just a tag hierarchy would also work if the circumstances allow it.
  • Alon
    Alon over 12 years
    I haven't thought of the display:none option - I think that should do the work