How to fix vh(viewport unit) css in mobile Safari?

前端 未结 8 1801
慢半拍i
慢半拍i 2020-12-14 16:54

I\'ve used vh (viewport units) css in one of my projects but in mobile safari it doesn\'t work. It seems like Safari doesn\'t know what to do with vh, but it works fine in o

相关标签:
8条回答
  • 2020-12-14 17:13

    I also had this issue, here is my solution.

    This is equals to height:100vh;

    document.getElementById("your-element").style.height = window.innerHeight + 'px';
    

    You can also use below code with jQuery,

    $('your-element').height(window.innerHeight + 'px');
    

    Checked with safari :)

    0 讨论(0)
  • 2020-12-14 17:21

    I used this CSS only hax today and it worked. iOS 8.2 iPhone Safari :

    html, body {
        ...
        width: -webkit-calc(100% - 0px);
        ...
    }
    

    Thought: Using calc seems to get Safari to convert units to px itself. Now my page is correctly full-bleed on Chrome and Safari on iOS.

    0 讨论(0)
  • 2020-12-14 17:22

    There's a pretty good answer to this across at CSS Tricks - https://css-tricks.com/the-trick-to-viewport-units-on-mobile/

    .my-element {
      height: 100vh; /* Fallback for browsers that do not support Custom Properties */
      height: calc(var(--vh, 1vh) * 100);
    }
    
    // First we get the viewport height and we multiple it by 1% to get a value for a vh unit
    let vh = window.innerHeight * 0.01;
    // Then we set the value in the --vh custom property to the root of the document
    document.documentElement.style.setProperty('--vh', `${vh}px`);
    
    0 讨论(0)
  • 2020-12-14 17:25

    I came across this fix today: https://github.com/rodneyrehm/viewport-units-buggyfill It checks every element for a vh/vw unit and turns it into px. Well worth checking out I think.

    0 讨论(0)
  • 2020-12-14 17:25

    If you need a fullscreen div on mobile browsers, try using wrapper with fixed position and height set to 100%. Then set 100% height to your popup. You can adjust the position of the wrapper and popup in a way you like with top, left, right, bottom properties, as well as height and width.

    These eliminates the problem with mobile browsers address bar autohiding in my case where I had to create a fullscreen popup on mobile chrome.

    0 讨论(0)
  • 2020-12-14 17:28

    My version is "querySelector" because: if I use class of element "getelementbyid" not worked. And this way js is most universal if jQuery libraries are not connected. document.querySelector("your-element").style.height = window.innerHeight + 'px';

    0 讨论(0)
提交回复
热议问题