#yyds干货盘点# 前端歌谣的刷题之路-第一百五十一题-三列布局 - 圣杯布局

简介: #yyds干货盘点# 前端歌谣的刷题之路-第一百五十一题-三列布局 - 圣杯布局

题目

 不像Flexbox或Grid布局可以控制元素显示的次序,圣杯布局是通过浮动元素和外边距属性实现三列布局,但最重要的一点是,在文档中需要将优先渲染的内容写在最前方,但显示时看起来却好像是按照显示次序书写的一样。

 首先给类名为"container"的盒子添加"overflow: hidden"和"padding: 0px 100px"属性,以为了防止容器盒子高度塌陷和给之后的左、右浮动元素预留位置。现在继续给类名为"left"的盒子添加以下属性:

1. "float: left",浮动,保证之后的"margin-left"属性可以将自身拉到上一行

2. "width: 100px",固定宽度

3. "margin-left: -100%",该属性可以将元素向左移动属性值的单位,100%相对于父容器计算

4. "position: relative",相对定位,需要将自身再向左移动自身的宽度,进入容器的"padding-left"区域

5. "left: -100px",自身的宽度,刚好进入容器的"padding-left"区域

 到这里圣杯布局中最核心的步骤和思想就完了。之后继续给类名为"right"的盒子添加"float: left"、"width: 100px"、"margin-left: -100px"、"position: relative"和"left 100px"属性,该右盒子的思想和左盒子一样,即,将右盒子向上拉一行并且再向右移动自身宽度进入"padding-right"区。最后再给类名为"center"的盒子添加"float: left"和"width: 100%"即可。此时中间内容区的宽度是自适应的,并且因为有内边距属性所以内容不会被两边的浮动盒子遮挡住。

 圣杯布局需要注意的是,当中间内容区域的宽度小于左、右盒子的宽度时,整个布局就会混乱,所以为了避免这种情况,再给容器盒子添加"min-width: 100px"属性,保证圣杯布局正确、有效。

 完成以上所讲的步骤即可通过测试,进入下一节的学习吧。

image.png

编辑

核心代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>圣杯布局</title>
</head>
<style type="text/css">
  * {
      margin: 0;
      padding: 0;
  }
    .container {
      overflow: hidden;
      padding: 0 100px;
      min-width: 100px;
      border: 1px solid black;
  }
  .left {
      float: left;
      width: 100px;
      margin-left: -100%;
      position: relative;
      left: -100px;
      background-color: greenyellow;
  }
  .center {
      float: left;
      width: 100%;
      background-color: darkorange;
  }
  .right {
      float: left;
      width: 100px;
      margin-left: -100px;
      position: relative;
      left: 100px;
      background-color: darkgreen;
  }
</style>
<body>
  <section class="container">
    <article class="center"><br /><br /><br /></article>
    <article class="left"><br /><br /><br /></article>
    <article class="right"><br /><br /><br /></article>
</section>
</body>
</html>


相关文章
|
2天前
|
前端开发
前端三栏布局(包括圣杯,双飞翼)
前端三栏布局(包括圣杯,双飞翼)
|
16天前
|
Web App开发 XML 前端开发
CSS中的非布局样式+CSS布局 前端开发入门笔记(十一)
CSS中的非布局样式+CSS布局 前端开发入门笔记(十一)
31 0
|
16天前
|
编解码 前端开发 iOS开发
前端开发入门笔记(八)CSS3属性详解:动画详解+Flex布局图文详解+Web字体
前端开发入门笔记(八)CSS3属性详解:动画详解+Flex布局图文详解+Web字体
59 1
|
2月前
|
数据可视化 前端开发
web前端-Echarts-5.3高级可视化和图表组合布局
web前端-Echarts-5.3高级可视化和图表组合布局
|
2月前
|
编解码 前端开发 UED
前端需要完完全全掌握的这些布局方案
前端需要完完全全掌握的这些布局方案
|
9月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
95 0
|
9月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
66 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置
|
9月前
|
前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
55 0
|
9月前
|
前端开发
前端学习笔记202306学习笔记第五十一天-工厂模式4
前端学习笔记202306学习笔记第五十一天-工厂模式
34 0
|
5月前
|
前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> 构建微前端应用
《Webpack5 核心原理与应用实践》学习笔记-> 构建微前端应用
41 1