【发布时间】:2021-09-16 20:54:22
【问题描述】:
我正在尝试使用 HTML 和 CSS 创建一个简单的登录页面:
HTML 头部:
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Defines a title in the browser toolbar -->
<title>CueClick, You Click.</title>
<!-- Imports the css for the homepage -->
<link rel="stylesheet" href="styles.css">
HTML正文:
<!-- Logo -->
<img id="logo" src="cueclick.png" alt="cueclick logo">
<!-- Login element -->
<form class="login">
<p>Enter <i>your</i> secret key</p>
<br>
<input type="password" placeholder="ilovecueclick" autofocus autocomplete="off"/>
</form>
以及对应的CSS:
/* -- Background image -- */
body {
background-image: url(clouds.png);
background-repeat: no-repeat;
background-size: cover;
background-attachment: fixed;
opacity: 0.75;
filter:alpha(opacity=75);
}
/* -- Logo style -- */
#logo {
position: absolute;
max-width: 30%;
height: auto;
top: 25%;
left: 35%;
}
/* -- Form styles -- */
form.login {
position: absolute;
max-width: 30%;
max-height: 40%;
top: 42%;
left: 35%;
}
form.login p {
font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;
font-size: 2.5vw;
position: absolute;
left: 10%;
top: 10%;
max-width: 80%;
}
form.login input[type=password] {
position: absolute;
top: 60%;
max-width: 100%;
width: 80%;
}
作为 web 开发的新手,我了解到当 position 属性的值是 absolute 时,这意味着元素相对于最近的定位祖先(父、祖父等)定位,而元素将从中删除文档并准确放置在您告诉它的位置。
因此,我根据我的代码将其可视化:
我的印象是徽标和 .login 类将相对于文档正文定位,并且表单中的段落以及输入框将相对于 .login 类本身定位。不幸的是,这就是现实:
为什么会这样?这里的概念错误是什么?还有其他建议吗?
很抱歉,这篇文章很长,但我希望它已经清楚地说明了我的困惑根源在哪里。在此先感谢您,如果您认为这个问题仍然没有必要,我可以删除它......在我清除我的疑虑之后:(
附:我之所以这样做是因为我也想涉足响应式网页设计
【问题讨论】:
-
input 和 p 没有宽度。您需要定义宽度或左右两边
-
您能否提供您正在使用的完整代码/html css 文件的链接,以便我们自己测试然后反馈
-
@jimmy8ball HTML 在这里:pastebin.com/69yWLWVq,CSS 在这里:pastebin.com/NC2RAfT1
-
@niorad 啊,所以只使用 max-width 不会自动给它一个宽度?
-
没错,max-width 只处理最大宽度,而不是实际宽度。