【问题标题】:html/css to fit entire screen for mobilehtml/css 以适应移动设备的整个屏幕
【发布时间】:2017-07-14 15:53:03
【问题描述】:

我正在尝试使用 css 来适应我的表单/背景图像以占据整个屏幕,现在背景图像在底部被切断并且表单没有完全占据屏幕上的所有空间相反,屏幕底部和顶部有空白。

这是完整的代码 sn-p。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>SpaceMX</title>
  <!-- CORE CSS-->

  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.1/css/materialize.min.css">

<style type="text/css">
html,
body {
    height: 100%;

}
html {
    display: table;
    margin: auto;
    height: 100%;

}
body {
    display: table-cell;
    height: 100%;
    vertical-align: middle;

}
.margin {
  margin: 0 !important;

}
form{
  background: url('http://i.imgur.com/qhn5HDG.png');
  width: 100%;
  background-repeat:no-repeat;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}
</style>

</head>

<body class="">



      <form class="login-form">
        <div class="row">
          <div class="input-field col s12 center">
            <p class="center login-form-text" class="responsive-img valign profile-image-login">SpaceMX</p>
          </div>
        </div>
        <div class="row margin">
          <div class="input-field col s12">
            <i class="mdi-social-person-outline prefix"></i>
            <input id="username" type="text" class="validate">
            <label for="username" class="center-align">Username</label>
          </div>
        </div>
        <div class="row margin">
          <div class="input-field col s12">
            <i class="mdi-communication-email prefix"></i>
            <input id="email" type="email" class="validate">
            <label for="email" class="center-align">Email</label>
          </div>
        </div>
        <div class="row margin">
          <div class="input-field col s12">
            <i class="mdi-action-lock-outline prefix"></i>
            <input id="password" type="password" class="validate">
            <label for="password">Password</label>
          </div>
        </div>
        <div class="row margin">
          <div class="input-field col s12">
            <i class="mdi-action-lock-outline prefix"></i>
            <input id="password-again" type="password">
            <label for="password-again">Re-type password</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <a href="register.html" class="btn waves-effect waves-light col s12">Register Now</a>
          </div>
          <div class="input-field col s12">
            <p class="margin center medium-small sign-up" color="white">Already have an account? <a href="login.html">Login</a></p>
          </div>
        </div>
      </form>





  <!-- ================================================
    Scripts
    ================================================ -->

  <!-- jQuery Library -->
 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  <!--materialize js-->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.1/js/materialize.min.js"></script>



  <script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-27820211-3', 'auto');
  ga('send', 'pageview');




</body>

</html>

【问题讨论】:

  • 使用 vh, vw 代替 precents 来确定尺寸!
  • 这并没有做任何事情,只是背景图像变得更小更奇怪,页面顶部和底部仍然有空白。我将所有 % 更改为 vh 高度和 vw 宽度,
  • 绝对表单位置top,left 0px,可能你的浏览器不支持vh,vw

标签: html css


【解决方案1】:

从 html 标签中删除 display: table 并从 css 中的 body 标签中删除 display: table-cell。因此,主体在 html 标记中居中,这会在两侧创建空白。

【讨论】:

    【解决方案2】:

    把css改成这样:

    html {
        width: 100%;
        height: 100%;
    
    }
    body {
        width: 100%;
        height: 100%;
    }
    
    form{
      position absolute;
      top: 0;
      left: 0;
      bottom:0;
      right: 0;
      overflow-y: auto;
      background: url('http://i.imgur.com/qhn5HDG.png');
      background-repeat:no-repeat;
      -webkit-background-size: cover;
      -moz-background-size: cover;
      -o-background-size: cover;
      background-size: cover;
    }
    

    【讨论】:

      【解决方案3】:

      浏览器有自己的默认填充和边距。所以你必须让它们等于零。

      form{
        background: url('http://i.imgur.com/qhn5HDG.png');
        width: 100%;
        background-repeat:no-repeat;
        -webkit-background-size: cover;
        -moz-background-size: cover;
        -o-background-size: cover;
        background-size: cover;
        padding-top: 0;
        padding-bottom: 0;
        padding-right: 0;
        padding-left: 0;
        margin-top: 0;
        margin-bottom: 0;
        margin-right: 0;
        margin-left: 0;
      }
      

      请告诉我这是不是你想要的。

      【讨论】:

        猜你喜欢
        • 2014-08-22
        • 1970-01-01
        • 1970-01-01
        • 2015-12-23
        • 1970-01-01
        • 1970-01-01
        • 2014-06-02
        • 2014-11-02
        • 1970-01-01
        相关资源
        最近更新 更多