Reputation: 13
Yes, I know, this has been asked many times before. None of the other solutions fix my problem, however.
I want the "register" div to slide down underneath the "container" div, but it appears next to it.
<html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<style>
.container
{
position: relative;
background-color: #00ffcc;
margin: 0 auto;
padding: 1em 3em;
box-shadow: 0px 0px 35px rgba(0, 0, 0, 1);
font-size: 15px;
display: none;
}
.register
{
position: relative;
background-color: #ff0066;
margin: 0 auto;
padding: 1em 3em;
box-shadow: 0px 0px 35px rgba(0, 0, 0, 1);
font-size: 15px;
display: none;
clear: left;
}
.background
{
display: flex;
align-items: center;
background-image: url("bg.jpg");
background-repeat: no-repeat;
background-size: cover;
width: 100vw;
height: 100vh;
float: none;
}
</style>
</head>
<body>
<div class="background">
<div class="container text-center" id="container">
<h1>Login</h1>
<br>
<form action="login.php" method="post">
<p>
Username:
</p>
<input name="name" type="text" class="form-control"/>
<br>
<p>
Password:
</p>
<input name="pw" type="password" class="form-control"/>
<br>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="button" class="btn btn-danger" id="register">Register</button>
</form>
</div>
<div class="register text-center">
<form action="login.php" method="post">
<h1>Register</h1>
<p>
Username:
</p>
<input name="name" type="text" class="form-control"/>
<br>
<p>
Password:
</p>
<input name="pw" type="password" class="form-control"/>
<br>
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
<script>
$(document).ready(function(){
$("#container").delay(75).fadeIn(250);
$("#register").click(function(){
$(".register").slideToggle();
});
});
</script>
</body>
</html>
How do I go about fixing this problem (and feel free to give me tips on how to clean up my terrible css!)? Thanks.
Upvotes: 0
Views: 447
Reputation: 2701
change flex-direction
to column, the default is row which means all flex items will appear in one row horizontally.
You will need to change align-items
to justify-content
, since the effect of those 2 is swapped when switching from row to column.
<html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<style>
.container
{
position: relative;
background-color: #00ffcc;
margin: 0 auto;
padding: 1em 3em;
box-shadow: 0px 0px 35px rgba(0, 0, 0, 1);
font-size: 15px;
display: none;
}
.register
{
position: relative;
background-color: #ff0066;
margin: 0 auto;
padding: 1em 3em;
box-shadow: 0px 0px 35px rgba(0, 0, 0, 1);
font-size: 15px;
display: none;
clear: left;
}
.background
{
display: flex;
flex-direction: column; /*add*/
justify-content: center; /*changed from align-items*/
background-image: url("bg.jpg");
background-repeat: no-repeat;
background-size: cover;
width: 100vw;
height: 100vh;
float: none;
}
</style>
</head>
<body>
<div class="background">
<div class="container text-center" id="container">
<h1>Login</h1>
<br>
<form action="login.php" method="post">
<p>
Username:
</p>
<input name="name" type="text" class="form-control"/>
<br>
<p>
Password:
</p>
<input name="pw" type="password" class="form-control"/>
<br>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="button" class="btn btn-danger" id="register">Register</button>
</form>
</div>
<div class="register">
Register
</div>
</div>
<script>
$(document).ready(function(){
$("#container").delay(75).fadeIn(250);
$("#register").click(function(){
$(".register").slideToggle();
});
});
</script>
</body>
</html>
Upvotes: 0
Reputation: 53709
The default flex-direction
for display: flex
is row
- that will put items side-by-side horizontally. To make them display on top of one another, like a column, use flex-direction: column
<html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<style>
.container
{
position: relative;
background-color: #00ffcc;
margin: 0 auto;
padding: 1em 3em;
box-shadow: 0px 0px 35px rgba(0, 0, 0, 1);
font-size: 15px;
display: none;
}
.register
{
position: relative;
background-color: #ff0066;
margin: 0 auto;
padding: 1em 3em;
box-shadow: 0px 0px 35px rgba(0, 0, 0, 1);
font-size: 15px;
display: none;
clear: left;
}
.background
{
display: flex;
align-items: center;
background-image: url("bg.jpg");
background-repeat: no-repeat;
background-size: cover;
width: 100vw;
height: 100vh;
float: none;
flex-direction: column;
justify-content: center;
}
</style>
</head>
<body>
<div class="background">
<div class="container text-center" id="container">
<h1>Login</h1>
<br>
<form action="login.php" method="post">
<p>
Username:
</p>
<input name="name" type="text" class="form-control"/>
<br>
<p>
Password:
</p>
<input name="pw" type="password" class="form-control"/>
<br>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="button" class="btn btn-danger" id="register">Register</button>
</form>
</div>
<div class="register">
Register
</div>
</div>
<script>
$(document).ready(function(){
$("#container").delay(75).fadeIn(250);
$("#register").click(function(){
$(".register").slideToggle();
});
});
</script>
</body>
</html>
Upvotes: 1