CSS垂直缩放浏览器窗口时的CSS调整失败

时间:2017-06-04 16:04:53

标签: html css css3 flexbox

我正在尝试创建一个简单的登录页面,在不久前我学习了CSS3 flexbox后,我使用这个新概念重新编写了页面。现在,我的页面看起来像这样:

enter image description here

这是我想要的...直到我尝试调整浏览器的大小。然后,我得到了这个(当我简单地减小浏览器窗口的高度而不减小宽度时):

enter image description here

和这(当我将浏览器窗口的高度和宽度都降低到最小值时):

enter image description here

这让我很困惑,因为我读了其他stackoverflow的答案,我没有媒体查询来创建响应式网页设计(我打算稍后做),但只是通过指定最大宽度的CSS就百分比而言。

这是我的代码:

HTML:     

<div class="center">
    <!-- Logo -->
    <img id="logo" src="assets/logowshadow.png" alt="cueclick logo">

    <!-- Login element -->
    <form class="login" action="/action_page.js" method="post">
        <p>Enter <i>your</i> secret key</p>
        <div id="password">
            <img id ="eye" src="assets/eye2.png" alt="eye">
            <input type="password" name="secret-key" placeholder="ilovecueclick" autofocus autocomplete="off"/>
        </div>
    </form>
</div>

CSS:

/* -- Background image -- */
body {
    background-image: url(assets/wood.png);
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

/* -- Center element -- */
.center {
    max-width: 60%;
    max-height: 80%;
    width: 30%;
    height: 40%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background-color: rgba(255, 255, 255, 0.7);
    border-radius: 15%;
    box-shadow: 2px 2px 4px 3px #505050;
    position: absolute;
    z-index: 1;
}

/* -- Logo style -- */
#logo {
    position: relative;
    z-index: 2;
    max-width: 100%;
    height: auto;
}

/* -- Form styles -- */
form.login {
    max-width: 100%;
    height: auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    position: relative;
    z-index: 2;
}

#password {
    display: flex;
    flex-direction: row;
    align-items: center;
    margin-bottom: 5%;
}

/* -- Show password -- */
#eye {
    height: auto;
    max-width: 15%;
    margin-right: 3%;
}

/* -- Login element -- */
form.login p {
    font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;
    font-size: 2vw;
    max-width: 100%;
    height: auto;
    line-height: 2%;
}

form.login input[type=password] {
    max-width: 100%;
    width: 100%;
    height: auto;
}

要解释此代码的进一步操作: - body具有可随浏览器窗口缩放的全尺寸背景图像 - “中心”基本上是背景上方的半透明白色矩形 - 徽标和表单登录元素与白色矩形重叠

我还为他们的弹性项目创建了三个flex容器(以解决棘手的居中问题): 1)body是flex容器,flex项是中心元素 2)center是flex容器,logo和表单输入部分(即段落+眼睛+输入字段)是flex项目 3)'password'div是flex容器(内联),eye和login字段是flex项

我真的不确定问题出在哪里,因为目前的代码似乎有一些扩展......

完整的HTML可以在这里找到:https://pastebin.com/6tS6SXi3,完整的CSS可以在这里找到:https://pastebin.com/6M11HnJE

提前致谢!

编辑:

经过进一步的实验,结果证明我只需要让中心级的高度自动...

接受了简单的答案,即使它不像我想要的那样使用flex-box

2 个答案:

答案 0 :(得分:1)

使用HTML和CSS构建表单包装器而不是使用图像,这在屏幕大小更改时很难控制。

样品: https://codepen.io/anon/pen/NgPGoQ

.login {
  width: 300px;
}

@media screen and (max-width: 768px) {
  .login {
    width: 80%;
  }
}

为包装器设置默认宽度,并为您想要自定义宽度的屏幕尺寸添加媒体查询。

答案 1 :(得分:0)

从手机启动..

像这样的东西(不经意地将100%调整到你想要的东西)

从手机到桌面工作,我想你会发现你更容易处理这种情况..

这对我来说很好..

@media (max-width:768px){
    .center {
    max-width: 100%;
    max-height: 100%;
    width: 100%;
    height: 100%;
    }

/* -- Logo style -- */
#logo {
    max-width: 100%;
    height: auto;
}

/* -- Form styles -- */
form.login {
    max-width: 100%;

}

#password {
max-width:100%
}

/* -- Show password -- */
#eye {
    max-width: 100%;
}

/* -- Login element -- */
form.login p {
    max-width: 100%;
    height: auto;
}

form.login input[type=password] {
    max-width: 100%;
    width: 100%;
    height: auto;
}


}