您好,我如何使侧面菜单随着并行容器的内容一起增长,该内容也应该随其内容一起扩展。
我试图确保aside
标签中包含的左列与div
列.right_panel
中右侧内容的大小相同。我能够通过在stackoverflow上根据类似查询将html
和body
标签以及.wrapper
类的大小设置为height: 100%
来实现此目的。
但是现在当我向main添加更多内容时,.wrapper
没有扩展。我试图将height
更改为min-height
,但它将其缩小到其内容大小。
我知道我可以通过flex布局实现这一点,但因为flex不在我的课程范围内,也因为我想学习替代方法以防将来需要使用它们以便与旧浏览器兼容我正在寻找解决方案不会使用flex布局。
下面的片段和JSFiddle link:
html,
body {
height: 100%;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
background-color: blue;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}
.wrapper {
margin: 10px auto 30px;
padding: 0;
width: 80%;
background-color: white;
height: calc(100% - 40px);
max-height: 100%;
}
aside.left_panel {
float: left;
min-height: 100%;
width: 130px;
background-color: #9eb9f1;
padding-left: 30px;
overflow: auto;
}
.right_panel {
margin-left: 160px;
}
nav ul {
list-style-type: none;
padding: 0;
}
header {
background-color: #6f90d1;
padding: 20px;
}
header h1 {
font-size: 60px;
color: darkblue;
}
main {
padding: 20px 20px 0;
}
main h2 {
color: #6f90d1;
}
main #lantern {
height: 400px;
width: 200px;
}
main img {
margin: 10px;
}
main h2{
margin-bottom: 30px;
}
main p {
margin-bottom: 30px;
}
footer {
text-align: center;
margin: 10px 0;
}
.f-right {
float: right;
overflow: auto;
}
.f-left {
float: left;
overflow: auto;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
<link rel="stylesheet" type="text/css" href="styles/styles.css">
</head>
<body>
<div class="wrapper">
<aside class="left_panel">
<nav>
<ul>
<li>Home</li>
<li>Manu item 1</li>
<li>Manu item 2</li>
<li>Manu item 3</li>
</ul>
</nav>
</aside>
<div class="right_panel">
<header>
<h1>Name of the website</h1>
</header>
<main>
<img id="lantern" class="f-right" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/PlaceholderLC.png/600px-PlaceholderLC.png" alt="">
<h2>Subheading 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. </p>
<h2>Subheading 3</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius.</p>
</main>
<footer>
<p>Copyright © 2019</p>
</footer>
</div>
</div>
</body>
</html>
使用表格布局
一种解决方案是使用display: table
上的wrapper
表格布局,并将left-section
和right-section
变成table-cell
- 请参阅下面的演示:
html,body {
height: 100%;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
background-color: blue;
}
h1,h2,h3,h4,h5,h6 {
font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}
.wrapper {
margin: 10px auto 30px;
padding: 0;
width: 80%;
background-color: white;
height: calc(100% - 40px);
max-height: 100%;
display: table; /* added */
}
aside.left_panel {
/* float: left; */
min-height: 100%;
width: 130px;
background-color: #9eb9f1;
padding-left: 30px;
overflow: auto;
display: table-cell; /* added */
vertical-align: top; /* added */
}
.right_panel {
/*margin-left: 160px;*/
display: table-cell; /* added */
}
nav ul {
list-style-type: none;
padding: 0;
}
header {
background-color: #6f90d1;
padding: 20px;
}
header h1 {
font-size: 60px;
color: darkblue;
}
main {
padding: 20px 20px 0;
}
main h2 {
color: #6f90d1;
}
main #lantern {
height: 400px;
width: 200px;
}
main img {
margin: 10px;
}
main h2 {
margin-bottom: 30px;
}
main p {
margin-bottom: 30px;
}
footer {
text-align: center;
margin: 10px 0;
}
.f-right {
float: right;
overflow: auto;
}
.f-left {
float: left;
overflow: auto;
}
<div class="wrapper">
<aside class="left_panel">
<nav>
<ul>
<li>Home</li>
<li>Manu item 1</li>
<li>Manu item 2</li>
<li>Manu item 3</li>
</ul>
</nav>
</aside>
<div class="right_panel">
<header>
<h1>Name of the website</h1>
</header>
<main>
<img id="lantern" class="f-right" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/PlaceholderLC.png/600px-PlaceholderLC.png" alt="">
<h2>Subheading 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. </p>
<h2>Subheading 3</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius.</p>
</main>
<footer>
<p>Copyright © 2019</p>
</footer>
</div>
</div>
使用Float
你可以尝试这个 - 但你没有得到溢出权限或者无法使列的高度相同 - 请参阅一个例子来说明:
html,body {
height: 100%;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
background-color: blue;
}
h1,h2,h3,h4,h5,h6 {
font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}
.wrapper {
margin: 10px auto 30px;
padding: 0;
width: 80%;
background-color: white;
height: calc(100% - 40px);
max-height: 100%;
overflow: hidden; /* to clear the float */
}
aside.left_panel {
float: left;
min-height: 100%;
width: 130px;
background-color: #9eb9f1;
padding-left: 30px;
overflow-y: auto; /*changed to overflow-y */
}
.right_panel {
float: left; /* added */
width: calc(100% - 160px); /* added */
/*margin-left: 160px;*/
}
nav ul {
list-style-type: none;
padding: 0;
}
header {
background-color: #6f90d1;
padding: 20px;
}
header h1 {
font-size: 60px;
color: darkblue;
}
main {
padding: 20px 20px 0;
}
main h2 {
color: #6f90d1;
}
main #lantern {
height: 400px;
width: 200px;
}
main img {
margin: 10px;
}
main h2 {
margin-bottom: 30px;
}
main p {
margin-bottom: 30px;
}
footer {
text-align: center;
margin: 10px 0;
}
.f-right {
float: right;
overflow: auto;
}
.f-left {
float: left;
overflow: auto;
}
<div class="wrapper">
<aside class="left_panel">
<nav>
<ul>
<li>Home</li>
<li>Manu item 1</li>
<li>Manu item 2</li>
<li>Manu item 3</li>
</ul>
</nav>
</aside>
<div class="right_panel">
<header>
<h1>Name of the website</h1>
</header>
<main>
<img id="lantern" class="f-right" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/PlaceholderLC.png/600px-PlaceholderLC.png" alt="">
<h2>Subheading 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. </p>
<h2>Subheading 3</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius.</p>
</main>
<footer>
<p>Copyright © 2019</p>
</footer>
</div>
</div>
但有一个黑客 - 使用大型margin
和padding
。请注意,您需要删除height
上设置的max-height
和wrapper
- 请参阅下面的演示:
html,body {
height: 100%;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
background-color: blue;
}
h1,h2,h3,h4,h5,h6 {
font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}
.wrapper {
margin: 10px auto 30px;
padding: 0;
width: 80%;
background-color: white;
/*height: calc(100% - 40px);
max-height: 100%;*/
overflow: hidden; /* to clear the float */
}
aside.left_panel {
float: left;
min-height: 100%;
width: 130px;
background-color: #9eb9f1;
padding-left: 30px;
overflow-y: auto; /*changed to overflow-y */
margin-bottom: -100000px; /* a large value */
padding-bottom: 100000px; /* a large value */
}
.right_panel {
float: left; /* added */
width: calc(100% - 160px); /* added */
/*margin-left: 160px;*/
margin-bottom: -100000px; /* a large value */
padding-bottom: 100000px; /* a large value */
}
nav ul {
list-style-type: none;
padding: 0;
}
header {
background-color: #6f90d1;
padding: 20px;
}
header h1 {
font-size: 60px;
color: darkblue;
}
main {
padding: 20px 20px 0;
}
main h2 {
color: #6f90d1;
}
main #lantern {
height: 400px;
width: 200px;
}
main img {
margin: 10px;
}
main h2 {
margin-bottom: 30px;
}
main p {
margin-bottom: 30px;
}
footer {
text-align: center;
margin: 10px 0;
}
.f-right {
float: right;
overflow: auto;
}
.f-left {
float: left;
overflow: auto;
}
<div class="wrapper">
<aside class="left_panel">
<nav>
<ul>
<li>Home</li>
<li>Manu item 1</li>
<li>Manu item 2</li>
<li>Manu item 3</li>
</ul>
</nav>
</aside>
<div class="right_panel">
<header>
<h1>Name of the website</h1>
</header>
<main>
<img id="lantern" class="f-right" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/PlaceholderLC.png/600px-PlaceholderLC.png" alt="">
<h2>Subheading 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. </p>
<h2>Subheading 3</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius.</p>
</main>
<footer>
<p>Copyright © 2019</p>
</footer>
</div>
</div>
使用flexboxes
最后但是同样重要的;由于flexboxes在所有现代浏览器中都有IE11 +支持,我更喜欢它 - 感谢你让我了解我的知识。 :)
html,body {
height: 100%;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
background-color: blue;
}
h1,h2,h3,h4,h5,h6 {
font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}
.wrapper {
margin: 10px auto 30px;
padding: 0;
width: 80%;
background-color: white;
/*height: calc(100% - 40px);*/
/*max-height: 100%;*/
display: flex; /* added */
}
aside.left_panel {
/* float: left; */
min-height: 100%;
width: 130px;
background-color: #9eb9f1;
padding-left: 30px;
overflow-y: auto; /* changed to overflow-y*/
}
.right_panel {
/*margin-left: 160px;*/
}
nav ul {
list-style-type: none;
padding: 0;
}
header {
background-color: #6f90d1;
padding: 20px;
}
header h1 {
font-size: 60px;
color: darkblue;
}
main {
padding: 20px 20px 0;
}
main h2 {
color: #6f90d1;
}
main #lantern {
height: 400px;
width: 200px;
}
main img {
margin: 10px;
}
main h2 {
margin-bottom: 30px;
}
main p {
margin-bottom: 30px;
}
footer {
text-align: center;
margin: 10px 0;
}
.f-right {
float: right;
overflow: auto;
}
.f-left {
float: left;
overflow: auto;
}
<div class="wrapper">
<aside class="left_panel">
<nav>
<ul>
<li>Home</li>
<li>Manu item 1</li>
<li>Manu item 2</li>
<li>Manu item 3</li>
</ul>
</nav>
</aside>
<div class="right_panel">
<header>
<h1>Name of the website</h1>
</header>
<main>
<img id="lantern" class="f-right" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/PlaceholderLC.png/600px-PlaceholderLC.png" alt="">
<h2>Subheading 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. </p>
<h2>Subheading 3</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius. Orci varius natoque penatibus et magnis dis parturient. </p>
<h2>Subheading 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus dignissim tristique varius.</p>
</main>
<footer>
<p>Copyright © 2019</p>
</footer>
</div>
</div>
您可以删除浮动并将您的包装设置为display: flex
。同时删除包装器上的高度属性和右列上的左边距。