网页前端后台技巧(CSS+HTML)

经典圣杯布局

2018-12-11  本文已影响12人  前端来入坑

以基础代码为例,说一下第二种:
在写完这一段后

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圣杯布局2</title>
<style>
*{margin:0;padding:0;}
body{background-color: #ccc;text-align:center;}
header{height:50px;background-color: pink;line-height:50px;}
.container{padding:0 220px 0 200px;overflow: hidden;}
.middle,.left,.right{
    min-height: 300px;
    position: relative;
}
.middle{background-color: red;width:100%;}
.left{width:200px;background-color: yellow;}
.right{width:220px;background-color: blue;}
footer{width: 100%; height: 50px;line-height:50px;background-color: #999;}
</style>
</head>
<body>
<header>
<h2>我是header</h2>
</header>
<div class="container">
    <div class="middle">
      <h4>我是middle</h4>
      <p>我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分</p>
    </div>
    <div class="left">
      <h4>我是left</h4>
      <p>我是left的内容</p>
    </div>
    <div class="right">
      <h4>我是right的内容</h4>
      <p>我是right的内容</p>
    </div>
</div>
<footer><h4>Footer内容区</h4></footer>
</body>
</html>

效果是这样的


image.png

给这三个元素加上浮动之后:

//给这三个元素加个浮动
.middle,.left,.right{
    float: left;
}

然后效果是这样的


image.png

接下来把left移到左边的空白部分,right移到右边的空白部分就ok了

.left{margin-left: -100%;left: -200px;}
.right{margin-left: -220px;right: -220px;}

以下是两种方式实现的源代码,实际上也是一样的,只是写法有一点区别

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圣杯布局1</title>
    <style>
        *{margin:0;padding:0;text-align: center;}
        body{background-color: #ccc;}
        header{width: 100%;height: 50px;line-height:50px;background-color: darkseagreen;}
        .container{overflow: hidden;padding: 0 200px;line-height:200px;}
        .middle{width: 100%;height: 300px; background-color: deeppink;float:left;}
        .left{ width: 200px;height: 300px;background-color: skyblue;float:left;margin-left: -100%;position: relative;left: -200px;}
        .right{width: 200px;height: 300px;background-color: orchid;float:left;margin-right: -100%;}
        footer{width: 100%; height: 50px;line-height:50px;background-color: slategray;}
    </style>
</head>
<body>
    <header><h4>Header内容区</h4></header>
    <div class="container">
        <div class="middle"><h4>中间弹性区</h4></div>  
        <div class="left"><h4>左边栏</h4></div>  
        <div class="right"><h4>右边栏</h4></div>
    </div>
    <footer><h4>Footer内容区</h4></footer>
</body>
</html>
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圣杯布局2</title>
<style>
*{margin:0;padding:0;}
body{background-color: #ccc;text-align:center;}
header{height:50px;background-color: pink;line-height:50px;}
.container{padding:0 220px 0 200px;overflow: hidden;}
.middle,.left,.right{
    min-height: 300px;
    float: left;
    position: relative;
}
.middle{background-color: red;width:100%;}
.left{width:200px;background-color: yellow;margin-left: -100%;left: -200px;}
.right{width:220px;background-color: blue;margin-left: -220px;right: -220px;}
footer{width: 100%; height: 50px;line-height:50px;background-color: #999;}
</style>
</head>
<body>
<header>
<h2>我是header</h2>
</header>
<div class="container">
    <div class="middle">
      <h4>我是middle</h4>
      <p>我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分</p>
    </div>
    <div class="left">
      <h4>我是left</h4>
      <p>我是left的内容</p>
    </div>
    <div class="right">
      <h4>我是right的内容</h4>
      <p>我是right的内容</p>
    </div>
</div>
<footer><h4>Footer内容区</h4></footer>
</body>
</html>
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圣杯布局2</title>
<style>
*{margin:0;padding:0;}
body{background-color: #ccc;text-align:center;}
header{height:50px;background-color: pink;line-height:50px;}
.container{display: flex;}
.middle,.left,.right{height: 300px;}
.middle{background-color: red;flex: 1;}
.left{background-color: yellow;flex: 0 0 200px;}
.right{background-color: blue;flex: 0 0 200px;}
footer{width: 100%; height: 50px;line-height:50px;background-color: #999;}
</style>
</head>
<body>
<header>
<h2>我是header</h2>
</header>
<div class="container">
    <div class="left">
      <h4>我是left</h4>
      <p>我是left的内容</p>
    </div>
    <div class="middle">
      <h4>我是middle</h4>
      <p>我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分我是内容部分</p>
    </div>
    <div class="right">
      <h4>我是right的内容</h4>
      <p>我是right的内容</p>
    </div>
</div>
<footer><h4>Footer内容区</h4></footer>
</body>
</html>
image.png

对flex布局不了解的小伙伴参考https://www.jianshu.com/p/82e923f7997a

上一篇 下一篇

猜你喜欢

热点阅读