css——圣杯布局

圣杯布局要求

  • header和footer各自占领屏幕所有宽度,高度固定
  • 中间dontainer部分为左中右三栏式布局
  • 三栏布局中左右两侧宽度固定,中间部分自动填充

实现方式

1.浮动

  • 先定义header和footer的样式,使其宽度撑满,高度随意
  • container中三列设置为浮动和相对定位,且center部分放在最起那么,对footer设置clear:both;清除浮动
  • 三列中的左右定宽200px,中间设置100%
  • 由于浮动关系,center会撑满container,左右会被挤下去,给left添加margin-left:-100%,使left回到上一行的最左侧
  • 会发现left遮住了center部分,给container设置padding-left:200px;padding-right:200px;,给left和right腾出位置;
  • 这时的left由于padding的原因并不在最左侧,之前设置了定位,可以给left添加right:200px,使left回到最左侧
  • 对于right可以设置margin-right:-200px;,使其回到第一行

最好设置一个最小宽度防止页面变形

 1 <!DOCTYPE html>
 2 <html>
 3
 4 <head>
 5     <meta charset="utf-8">
 6     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 7     <title>圣杯布局</title>
 8     <link rel="stylesheet" href="">
 9 </head>
10 <style type="text/css" media="screen">
11     /**
12      圣杯布局要求
13         1.header和footer各自占领屏幕所有宽度,高度固定。
14         2.中间的container是一个三栏布局。
15         3.三栏布局两侧宽度固定不变,中间部分自动填充整个区域。
16         4.中间部分的高度是三栏中最高的区域的高度。
17      */
18     body {
19         min-width: 600px;
20     }
21
22     .header, .footer {
23         width: 100%;
24         height: 100px;
25         background: #ccc;
26     }
27
28     .footer {
29         clear: both;
30     }
31
32     .container {
33         padding: 0 200px;
34     }
35
36     .container .column {
37         float: left;
38         position: relative;
39         height: 400px;
40     }
41
42     #left {
43         width: 200px;
44         right: 200px;
45         background: pink;
46         margin-left: -100%;
47     }
48
49     #right {
50         width: 200px;
51         background: red;
52         margin-right: -200px;
53     }
54
55     #center {
56         width: 100%;
57         background: blue;
58     }
59 </style>
60
61 <body>
62 <div class="header">header</div>
63 <div class="container">
64     <div id="center" class="column">center</div>
65     <div id="left" class="column">left</div>
66     <div id="right" class="column">right</div>
67 </div>
68 <div class="footer">footer</div>
69 </body>
70
71 </html>

2.flex弹性布局

  • 先定义header和footer的样式,使其宽度撑满,高度随意
  • container中的left、center、right依次排列
  • container设置弹性布局display:flex;
  • left、right区域定宽,center部分设置flex:1;
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>圣杯布局-flex</title>
 6 </head>
 7 <style>
 8     body{
 9         min-width: 600px;
10     }
11     .header,.footer{
12         width: 100%;
13         height: 100px;
14         background: #ccc;
15     }
16     .container{
17         display: flex;
18     }
19     .container .column{
20         height: 400px;
21     }
22     #left{
23         width: 200px;
24         background: pink;
25     }
26     #center{
27         flex: 1;
28         background: blue;
29     }
30     #right{
31         width: 200px;
32         background: red;
33     }
34 </style>
35 <body>
36 <div class="header">header</div>
37 <div class="container">
38     <div id="left" class="column">left</div>
39     <div id="center" class="column">center</div>
40     <div id="right" class="column">right</div>
41 </div>
42 <div class="footer">footer</div>
43 </body>
44 </html>

原文地址:https://www.cnblogs.com/smallpen/p/10306593.html

时间: 2024-10-08 15:01:30

css——圣杯布局的相关文章

CSS 圣杯布局

前端的两个经典布局想必大家都有多了解--圣杯布局和双飞翼布局,因为它既能体现你懂HTML结构又能体现出你对DIV+CSS布局的掌握. 事实上,圣杯布局其实和双飞翼布局是一回事.它们实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局.它们实现的效果是一样的,差别在于其实现的思想. 通过缩放页面就可以发现,随着页面的宽度的变化,这三栏布局是中间盒子优先渲染,两边的盒子框子固定不变,即使页面宽度变小,也不影响我们的浏览.注意:当你缩放页面的时候,宽度不能小于700PX,

css 圣杯布局三种方式

所谓的圣杯布局就是左右两边大小固定不变,中间宽度自适应.我们可以用浮动.定位以及flex这三种方式来实现 一般这种布局方式适用于各种移动端顶部搜索部分,这是最常见的,如京东手机版主页面顶部搜索: 可以看到左边有个菜单按钮,中间是搜索框,右边是登录两个文字,左右大小是固定的,而中间部分则是随着手机屏幕尺寸的大小而自适应.   第一种方法 float实现: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 &

圣杯布局,双飞翼布局详解

圣杯布局和双飞翼布局解决的问题是一样的,都是用来解决左右定宽,中间自适应的三栏布局,中间栏要放在文档流前面以优先渲染. 圣杯布局和双飞翼布局:三栏全部加上float:left,左右两栏加上负margin,以形成三栏布局. 圣杯布局:大的div设置padding-left和padding-right,左右两个div用相对布局position: relative,加上right和left属性.双飞翼布局:中间div内加一层标签,在设置内层标签的margin html圣杯布局: <div class=

css布局之圣杯布局和双飞翼布局

圣杯布局和双飞翼布局 今天看了很多圣杯布局和双飞翼布局的技术博客,通过自己的理解总结一下吧. 1.二者相同点: 实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局.它们实现的效果是一样的. 2.不同点: 圣杯布局知识点:浮动,负边距,相对定位,不需要添加额外标签. 双飞翼:只用到浮动,负边距,不需要使用相对定位,需要添加一个额外的标签. 注意:html结构中中间部分要写在左右布局之前,为了优先渲染. 下面就先来看一下圣杯布局的实现过程吧: 先写出基本DOM结构:

【CSS】 布局之圣杯布局

在看众多大神的css布局指南时,经常看到一个布局:圣杯布局(也有称为双飞翼布局的).今天我们也来剖析一下. 其实,对于众多css布局,我们只要明确理解了3种技术,那么基本上大多数布局都难不倒我们了: 浮动 float 绝对定位和相对定位 negative margin 负边距 relative position 浮动 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样.(w3c) 上面是

CSS之圣杯布局与双飞翼布局

圣杯布局 三行等高 HTML: <!DOCTYPE html><html><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <title></title>    <link rel="stylesheet"

CSS布局 -- 圣杯布局 &amp; 双飞翼布局

按照我的理解,其实圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应. 但在这里实现起来还是有一些区别的 [圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中间自适应,container部分高度保持一致. DEMO 稍微说明一下: html代码中  middle部分首先要放在container的最前部分.然后是left,right 1.将三者都 float:left , 再加上一个position:relative (因为相对定位后面会用到) 2.mid

css中的圣杯布局和双飞翼布局

圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩小到指定的700px的时候,页面内容宽度不再随着浏览器缩小.是为了电脑的正常浏览效果 2.注意到container设置的值0 220px  0 200px,上 右 下 左,所以left 设置widh:200px,right设置width:220px 3.设置min-height:300px,是让三列

CSS布局(五) 圣杯布局

本文翻译修改自https://alistapart.com/article/holygrail 圣杯布局 在页面上的显示效果就是左右两边是个固定的宽度,中间的容器自适应:即根据页面大小的变化而变化. 如何实现 战略很简单.容器div的侧面有自适应中心和固定宽度的衬垫.然后诀窍是让左列与左侧填充对齐,右侧列与右侧填充对齐,留下中心列以填充容器的自适应宽度. 1.基本结构 <div id='header'></div> <div id='container'> <di