题目
- 实现如下页面布局。核心区域左侧自适应,右侧固定宽度 200px
解决思路一
- 侧边栏aside通过负值左外边距得以和content共处一行
- 真正的自适应内容则放置在content的内部,使用右外边距得以和aside保持固定距离
- 使用
overflow:hidden
清除浮动
实现代码
html:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="css/main.css" media="screen">
</head>
<body>
<div class="head">
<div class="logo">
logo
</div>
<div class="username">
用户名
</div>
</div>
<div class="main">
<div class="content">
<div class="real">content-自适应宽度</div>
</div>
<div class="aside">
aside-定宽200px
</div>
</div>
<div class="footer">
footer
</div>
</body>
</html>
css:
*{
margin: 0;
padding: 0;
}
.head{
height: 70px;
margin: 10px;
overflow: hidden;
border: 2px solid green;
}
.logo{
width: 50px;
height: 50px;
margin: 10px;
float: left;
border: 1px solid red;
}
.username{
width: 150px;
margin: 40px 10px 0px 0px;
float: right;
text-align: right;
border: 1px solid black;
}
.main{
margin: 10px;
overflow: hidden;
}
.content{
width: 100%;
float: left;
}
.real{
border: 2px solid blue;
height: 400px;
margin-right: 220px;
}
.aside{
width: 200px;
margin-left: -204px;
float: left;
border: 2px solid red;
}
.footer{
height: auto;
margin: 0 10px;
text-align: center;
border: 2px solid black;
}
运行截图
解决思路二
- 使用grid属性构建网格布局
- 在
.heade
r中通过flex属性完成对.logo
和.username
的定位
实现代码
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="css/grid.css" media="screen">
<title>grid布局</title>
</head>
<body>
<div class="container">
<div class="header">
<div class="logo">logo</div>
<div class="username">username</div>
</div>
<div class="content">content-自适应宽度</div>
<div class="aside">aside-定宽200px</div>
<div class="footer">footer</div>
</div>
</body>
</html>
css:
.header{
display:flex;
justify-content: space-between;
grid-area: header;
border: 2px solid green;
margin: 10px;
}
.logo{
align-self: flex-start;
height: 50px;
width: 50px;
margin: 5px 0 0 5px;
border: 1px solid gold;
padding: 5px;
}
.username{
align-self: flex-end;
height: 25px;
width: 150px;
margin: 0 5px 5px 0;
border: 1px solid rgb(255, 30, 199);
text-align: right;
padding: 5px;
}
.content{
grid-area: content;
border: 2px solid blue;
margin-left: 10px;
padding: 5px;
}
.aside{
grid-area: aside;
border: 2px solid red;
margin-right: 10px;
padding: 5px;
}
.footer{
grid-area: footer;
border: 2px solid black;
margin: 10px;
text-align: center;
padding: 5px;
}
.container{
display: grid;
grid-column-gap: 20px;
grid:
[row-start] "header header" 100px [row-end]
[row-start] "content aside" 400px [row-end]
[row-start] "footer footer" auto [row-end]
/ auto 200px;
}