我正在尝试创建一个简单的登录页面,在不久前我学习了CSS3 flexbox后,我使用这个新概念重新编写了页面。现在,我的页面看起来像这样:
这是我想要的...直到我尝试调整浏览器的大小。然后,我得到了这个(当我简单地减小浏览器窗口的高度而不减小宽度时):
和这(当我将浏览器窗口的高度和宽度都降低到最小值时):
这让我很困惑,因为我读了其他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
答案 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;
}
}