CSS flex direction:列,对齐定位未发生



我在40分钟内找不到错误。我想要实现的是定位一些元素、输入字段等。。使用高度和显示:flex,flex方向:列和对齐内容:间距。基本的东西,这里是一些代码

*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: inherit;
}
html {
font-family: 16px/1.2 "Montserrat", sans-serif;
box-sizing: border-box;
}
.content {
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-image: linear-gradient(to right top, #01dbde, #00cfff, #00b8ff 20%, #6a8cff, #fc00ff 100%);
}
form {
background: #fff;
}
.border-curve {
border-radius: 0.2em;
overflow: hidden;
}
fieldset {
border: none;
margin: 3em 5em;
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 32rem;
}
.form-title {
text-align: center;
font-size: 2.5rem;
}
.form-social {
display: flex;
justify-content: space-between;
}
.form-social button {
flex: 0 0 48%;
}
.form-field {
}
.form-action {
}
.form-field label,
.form-field input,
.form-action input {
width: 100%;
display: block;
}
.form-action input {
border: 0.2em solid #333;
background: #333;
color: #fff;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Funny Login Form</title>
<link href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="content">
<form action="#" method="GET" class="border-curve">
<fieldset>
<p class="form-title">Sign In With</p>
<p class="form-social">
<button class="border-curve">Facebook</button>
<button class="border-curve">Google</button>
</p>
<p class="form-field">
<label for="username">Username</label>
<input class="border-curve" type="text" name="username" id="username" />
</p>
<p class="form-field">
<label for="password">Password</label>
<input class="border-curve" type="password" name="password" id="password" />
</p>
<p class="form-action">
<input class="border-curve" type="submit" value="Sign in" />
</p>
</fieldset>
</form>
</div>
</body>
</html>

我的问题是,为什么我不能使用flexbox在标记字段集中定位我的元素?

<fieldset>是一个按钮元素,因此display: flex无法应用于它。请尝试在字段集中放置一个div,该字段集将包含所有表单元素作为子元素,然后将display: flex应用于该字段集。

HTML:

<fieldset>
<div class="fieldset-content">
<div>
<p class="form-title">Sign In With</p>
</div>
<div>
<p class="form-social">
<button class="border-curve">Facebook</button>
<button class="border-curve">Google</button>
</p>
</div>
<div>
<p class="form-field">
<label for="username">Username</label>
<input class="border-curve" type="text" name="username" id="username" />
</p>
</div>
<div>
<p class="form-field">
<label for="password">Password</label>
<input class="border-curve" type="password" name="password" id="password" />
</p>
</div>
<div>
<p class="form-action">
<input class="border-curve" type="submit" value="Sign in" />
</p>
</div>
</div>
</fieldset>

现在,您已经将flex项放在一个可以应用flex的容器中,您可以添加所有所需的flex属性。

CSS:

.fieldset-content {
display: flex;
flex-direction: column;
justify-content: space-between;
}

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset#Styling_with_CSS表示有一个匿名框,其中包含字段集的内容。这个匿名框将继承字段集的显示值,但似乎其他样式将应用于字段集标记本身,而不是匿名框。

如果将字段集的当前内容包装在容器div中,则可以设置它们之间的容器空间的样式。

*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: inherit;
}
html {
font-family: 16px/1.2 "Montserrat", sans-serif;
box-sizing: border-box;
}
.content {
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-image: linear-gradient(to right top, #01dbde, #00cfff, #00b8ff 20%, #6a8cff, #fc00ff 100%);
}
form {
background: #fff;
}
.border-curve {
border-radius: 0.2em;
overflow: hidden;
}
fieldset {
border: none;
margin: 3em 5em;
}
.fieldset-container {
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 32rem;
}
.form-title {
text-align: center;
font-size: 2.5rem;
}
.form-social {
display: flex;
justify-content: space-between;
}
.form-social button {
flex: 0 0 48%;
}
.form-field {}
.form-action {}
.form-field label,
.form-field input,
.form-action input {
width: 100%;
display: block;
}
.form-action input {
border: 0.2em solid #333;
background: #333;
color: #fff;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Funny Login Form</title>
<link href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="content">
<form action="#" method="GET" class="border-curve">
<fieldset>
<div class="fieldset-container">
<p class="form-title">Sign In With</p>
<p class="form-social">
<button class="border-curve">Facebook</button>
<button class="border-curve">Google</button>
</p>
<p class="form-field">
<label for="username">Username</label>
<input class="border-curve" type="text" name="username" id="username" />
</p>
<p class="form-field">
<label for="password">Password</label>
<input class="border-curve" type="password" name="password" id="password" />
</p>
<p class="form-action">
<input class="border-curve" type="submit" value="Sign in" />
</p>
</div>
</fieldset>
</form>
</div>
</body>
</html>

最新更新