Bootstrap vh-100 on body 垂直生长子元素
Bootstrap vh-100 on body growing child elements vertically
当我在 Chrome 开发工具中更改页面宽度时,页面也会垂直增长。 bootstrap 假设我拥有的视口高度似乎比实际情况要大。
相关代码:
<!DOCTYPE html>
<html class="vh-100">
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<title>Reef Chat</title>
<style>
* { border: 1px black solid;}
body {font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;}
#form {display: inline-flex; backdrop-filter: blur(10px); }
#input {border-radius: 0;}
#input:focus {outline: none;}
#form > button {background: #333; border: none; outline: none; color: #fff; border-radius: 0;}
</style>
</head>
<body class="vh-100">
<div class="container-fluid h-100">
<ul id="messages"></ul>
<form id="form" action="" class="position-fixed bottom-0 start-50 translate-middle-x w-100">
<input id="input" autocomplete="off" class="form-control"/><button class="btn btn-primary">Send</button>
</form>
</div>
...
参考自this answer
height: 100vh
= 100% of the viewport height
height: 100%
= 100% of the parent's element height
如果我有 window 高度 593 像素并且如果我在 <body>
上使用 height: 100vh;
则 body
本身将是高度 593 像素包括边框。
但是,如果我在 <html>
和 <body>
上都使用 height: 100%;
,则 html
元素的高度将为 593 像素,而 body
的高度将为 591 像素。在两个元素上使用此 height: 100%;
将不会溢出您的 body
标签。
选项 1。
删除 html
和 body
上的 class="vh-100"
并改用 CSS height: 100%;
。
* {
border: 1px black solid;
}
html {
height: 100%;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
height: 100%;
}
#form {
display: inline-flex;
backdrop-filter: blur(10px);
}
#input {
border-radius: 0;
}
#input:focus {
outline: none;
}
#form>button {
background: #333;
border: none;
outline: none;
color: #fff;
border-radius: 0;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<body>
<div class="container-fluid h-100">
<ul id="messages"></ul>
<form id="form" action="" class="position-fixed bottom-0 start-50 translate-middle-x w-100">
<input id="input" autocomplete="off" class="form-control" />
<button class="btn btn-primary">Send</button>
</form>
</div>
</body>
在 jsfiddle 上查看实际效果。
选项 2。
在您的 <body>
标签上使用 overflow: hidden;
。
在 jsfiddle 上查看。
当我在 Chrome 开发工具中更改页面宽度时,页面也会垂直增长。 bootstrap 假设我拥有的视口高度似乎比实际情况要大。
相关代码:
<!DOCTYPE html>
<html class="vh-100">
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<title>Reef Chat</title>
<style>
* { border: 1px black solid;}
body {font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;}
#form {display: inline-flex; backdrop-filter: blur(10px); }
#input {border-radius: 0;}
#input:focus {outline: none;}
#form > button {background: #333; border: none; outline: none; color: #fff; border-radius: 0;}
</style>
</head>
<body class="vh-100">
<div class="container-fluid h-100">
<ul id="messages"></ul>
<form id="form" action="" class="position-fixed bottom-0 start-50 translate-middle-x w-100">
<input id="input" autocomplete="off" class="form-control"/><button class="btn btn-primary">Send</button>
</form>
</div>
...
参考自this answer
height: 100vh
= 100% of the viewport height
height: 100%
= 100% of the parent's element height
如果我有 window 高度 593 像素并且如果我在 <body>
上使用 height: 100vh;
则 body
本身将是高度 593 像素包括边框。
但是,如果我在 <html>
和 <body>
上都使用 height: 100%;
,则 html
元素的高度将为 593 像素,而 body
的高度将为 591 像素。在两个元素上使用此 height: 100%;
将不会溢出您的 body
标签。
选项 1。
删除 html
和 body
上的 class="vh-100"
并改用 CSS height: 100%;
。
* {
border: 1px black solid;
}
html {
height: 100%;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
height: 100%;
}
#form {
display: inline-flex;
backdrop-filter: blur(10px);
}
#input {
border-radius: 0;
}
#input:focus {
outline: none;
}
#form>button {
background: #333;
border: none;
outline: none;
color: #fff;
border-radius: 0;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<body>
<div class="container-fluid h-100">
<ul id="messages"></ul>
<form id="form" action="" class="position-fixed bottom-0 start-50 translate-middle-x w-100">
<input id="input" autocomplete="off" class="form-control" />
<button class="btn btn-primary">Send</button>
</form>
</div>
</body>
在 jsfiddle 上查看实际效果。
选项 2。
在您的 <body>
标签上使用 overflow: hidden;
。
在 jsfiddle 上查看。