龙空技术网

零基础教你学前端——87、圣杯布局

陆荣涛 205

前言:

现时我们对“css一个元素在另一个上面”大体比较看重,看官们都需要学习一些“css一个元素在另一个上面”的相关知识。那么小编在网上收集了一些关于“css一个元素在另一个上面””的相关资讯,希望看官们能喜欢,小伙伴们快快来了解一下吧!

本文,我们学习经典的三列布局——圣杯布局。

圣杯布局,顾名思义,中间容器高,旁边两侧的容器低,整个布局看上去像一个圣杯。

我们来实现一下。

创建 grail-layout.html 文件和 grail-layout-style.css 文件。在 html 里构建基础代码,引入外部样式。

在 body 里添加一个 div 容器,定义类属性 class="container"。在容器里定义子元素 div,定义类属性 class="main"。在子元素main 里面 添加三个 div 容器,定义样式类分别为 class="center",class="left",class="right",填入一些文本。

HTML <div class="container">    <div class="main">      <div class="center">中</div>      <div class="left">左</div>      <div class="right">右</div>    </div>  </div>

在 css 文件里定义基础样式。

CSS* {  box-sizing: border-box;  margin: 0;  padding: 0;}html, body {  height: 100%;}

定义选择器 .container,声明样式:width: 100%,height: 500px,min-width: 700px。外层容器宽度小于等于700像素,高度固定。

定义选择器 .left,声明样式:height: 200px,background-color:pink。给左侧容器设置固定高度,并添加一个背景颜色。

定义选择器 .center,声明样式:height: 800px,background-color: gold。给中间容器设置固定高度,并添加一个背景颜色。

定义选择器 .right,声明样式:height: 200px,background-color:greenyellow。给右侧容器设置固定高度,并添加一个背景颜色。

CSS.container {  width: 100%;  height: 500px;  min-width: 700px;}.left {  height: 200px;  background-color:cyan;}.center {  height: 800px;  background-color: gold;}.right {  height: 200px;  background-color:greenyellow;}

在浏览器里预览一下效果。

回到 css,定义选择器 .main,声明样式:padding: 0 300px 0 200px,给左右两侧的容器留出空间。

看一下效果。左边留出 200px 间隙,右面留出 300px 间隙。

CSS.main {  padding: 0 300px 0 200px;}

下一步,我们要做的就是将左右两个子元素,放置到左右两个间隙处,这里需要用到浮动和负margin。给 left 添加样式 float: left,width: 200px,使左侧容器左浮动,宽度等于间隙的大小。给 center 添加样式 float: left,width: 100%,使中间容器也左浮动,宽度撑满父容器。

CSS.left {  float: left;  width: 200px;}.center {  float: left;  width: 100%;}

我们看,因为中间容器宽度为 100%,左侧容器折行到了下面。

因为中间容器宽度为 100%,外层容器已经装不下左侧容器,只能折行显示到下面。想要实现左侧容器回到页面左上角,只需要将左侧容器向左移动 父容器宽度即可。

回到 css,我们就给 left 添加一样式 margin-left: -100%。

再看一下效果,左侧容器盖在了中间容器上面,但它的位置应该在屏幕的左上角。

继续给 left 添加样式:position: relative,right: 200px,再让它向左移动 200px。

这样,左侧容器的布局就完成了。接下来调整右测容器的布局。

和左侧容器一样的思路,给 right 添加样式:float: left,width: 300px,margin-right: -300px。

看一下最终效果,当缩放窗口时,左右两个容器固定不动,中间容器自适应。到这儿,圣杯布局就大功告成了!

关于圣杯布局有一点需要注意:由于三个子元素都是浮动的,撑不开父元素的高度,这就需要给父元素设置固定高度,或者做浮动的清理。

有关经典的三列布局——圣杯布局,就讲完了。最后布置一个作业,根据屏幕上提供的 html 结构,完成另一个经典的三列布局——双飞翼布局效果。

双飞翼布局和圣杯布局最大的不同就是,它多了一个包裹着中间元素的容器。当给 container 容器添加了边框后,要求左右两个容器在边框内部排列。

HTML<body>  <div class="container column">    <div class="center">中</div>  </div>  <div class="left column">左</div>  <div class="right column">右</div></body>

文章配套教程链接:

标签: #css一个元素在另一个上面