5

I have a DIV that is fixed positioned, but I would like it to be relative when viewed by mobile devices. Is this possible with a specific css?

Erik

Erik
  • 5,701
  • 27
  • 70
  • 119

4 Answers4

8

You can use media queries to do this.

CSS

div {
    position: fixed;
}

@media only screen and (max-device-width : 480px) {
    div {
        position: relative;
    }
}
​
3dgoo
  • 15,716
  • 6
  • 46
  • 58
0

Don't know how much this will help but I had two divs with relative positioning on web view. Setting their position to inherit in mobile view worked for me.

 @media only screen and (max-device-width : 600px) {
     div {
         position: inherit;
    } 
  }
Siddhant Varma
  • 574
  • 5
  • 10
0

I've had the problem of having different css if is mobile or not. There is an excelent solution already posted here: Detecting a mobile browser

You could check it out! Above, I've used the solution proposed by the author and stored it in a function that returns it's boolean result.

const isMobile = function() {
  let check = false;
  (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
  return che\ck;
};

document.write(`Is mobile? ${isMobile()}`)
-3

You can do this via php very easily (If PHP is installed on your server).

1) Download mobile_detect.php from here.

2) Write this php code in your file and don't forget to rename it to anyname.php

<?php
include 'Mobile_Detect.php';
$detect = new Mobile_Detect();

if ($detect->isMobile()) {
    // Any mobile device.
$position = "relative";
}

else
{
$position = "fixed";
}
?>

3) Now in the style code where you have written relative/fixed, write this code.

<?php echo $position; ?>

Now, when user will be from mobile it will show relative, else it will show fixed. I hope this will work!

Ayush Mishra
  • 506
  • 1
  • 4
  • 15
  • 1
    IMHO, this is not a great solution because if a tablet/mobile changes orientation (landscape to portrait) the layout won't change until the page is refreshed, or another page is loaded. With CSS media queries, if the orientation changes, the layout switches immediately, giving a much better user experience. Also, the user hasn't mentioned PHP anywhere in his question, but he has mentioned CSS. – TheCarver Aug 26 '13 at 13:04