CSS 实现 10 种现代布局的代码

CSS 实现现代布局有很多种方式,但是通常我们可以通过浮动、定位、Flexbox 和 CSS Grid 等技术来实现。下面是一份完整的攻略,让你了解如何实现 10 种常见的现代布局,并包含了两个示例说明。

1. 上下左右布局

这种布局方式也被称为定位布局,需要使用到 position 属性来设置元素的位置。通常,我们可以将容器设置为 position: relative;,然后将内部的子元素设置为 position: absolute; 并且设置 toprightbottomleft 属性来控制元素的位置。

<div class="container">
  <div class="box"></div>
</div>
.container {
  position: relative;
}

.box {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

2. 左右布局

这种布局方式最常见的实现方式是通过浮动来实现。我们可以将左侧的子元素设置为 float: left;,右侧的子元素设置为 float: right; 即可。

<div class="container">
  <div class="left"></div>
  <div class="right"></div>
</div>
.left {
  float: left;
}

.right {
  float: right;
}

示例说明:

一个简单的左右布局可以用来展示内容和侧栏。比如一个博客网站可以使用这种布局,将文章放在左侧,将相关文章链接放在右侧。

<div class="container">
  <div class="content">
    <h1>文章标题</h1>
    <p>文章内容</p>
  </div>
  <div class="sidebar">
    <h2>相关文章</h2>
    <ul>
      <li><a href="#">文章1</a></li>
      <li><a href="#">文章2</a></li>
      <li><a href="#">文章3</a></li>
    </ul>
  </div>
</div>
.content {
  float: left;
  width: 70%;
}

.sidebar {
  float: right;
  width: 30%;
}

3. 两栏布局

这种布局方式通常使用 Flexbox 技术来实现。我们需要将容器设置为 display: flex;,然后将左侧的子元素设置为 flex: 1;(或者设置一个固定宽度),右侧的子元素设置为 flex: 2;(或者设置一个固定宽度)。

<div class="container">
  <div class="left"></div>
  <div class="right"></div>
</div>
.container {
  display: flex;
}

.left {
  flex: 1;
}

.right {
  flex: 2;
}

4. 三栏布局

这种布局方式也适合使用 Flexbox 技术来实现。我们需要将容器设置为 display: flex;,然后将左侧的子元素设置为 flex: 1;,中间的子元素设置为 flex: 2;,右侧的子元素设置为 flex: 1;

<div class="container">
  <div class="left"></div>
  <div class="middle"></div>
  <div class="right"></div>
</div>
.container {
  display: flex;
}

.left {
  flex: 1;
}

.middle {
  flex: 2;
}

.right {
  flex: 1;
}

5. 等高布局

这种布局方式可以使用 Flexbox 或者 Grid 技术来实现。我们需要让容器中的所有子元素高度相等,可以通过设置 height 或者 flex: 1; 来实现。

<div class="container">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>
.container {
  display: flex;
}

.item {
  flex: 1;
}

6. 栅格布局

这种布局方式同样可以使用 Flexbox 或者 Grid 技术来实现。我们需要将容器分割为一定数量的行和列,然后将每个子元素放在指定的位置上。

<div class="container">
  <div class="item item1"></div>
  <div class="item item2"></div>
  <div class="item item3"></div>
  <div class="item item4"></div>
  <div class="item item5"></div>
  <div class="item item6"></div>
</div>
.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.item1 {
  grid-column: 1 / 3;
  grid-row: 1 / 3;
}

.item2 {
  grid-column: 3 / 4;
  grid-row: 1 / 2;
}

.item3 {
  grid-column: 3 / 4;
  grid-row: 2 / 3;
}

.item4 {
  grid-column: 1 / 2;
  grid-row: 3 / 4;
}

.item5 {
  grid-column: 2 / 3;
  grid-row: 3 / 4;
}

.item6 {
  grid-column: 3 / 4;
  grid-row: 3 / 4;
}

7. 非对称布局

这种布局方式可以使用 Flexbox 或者 Grid 技术来实现。我们需要将容器中的子元素放置在不同的位置上,并且使用 align-selfjustify-self 来进行微调。

<div class="container">
  <div class="item item1"></div>
  <div class="item item2"></div>
  <div class="item item3"></div>
  <div class="item item4"></div>
  <div class="item item5"></div>
</div>
.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, 1fr);
}

.item1 {
  grid-column: 1 / 2;
  grid-row: 1 / 3;
}

.item2 {
  grid-column: 2 / 3;
  grid-row: 1 / 2;
  align-self: end;
}

.item3 {
  grid-column: 2 / 3;
  grid-row: 2 / 3;
  justify-self: end;
}

.item4 {
  grid-column: 3 / 4;
  grid-row: 1 / 2;
}

.item5 {
  grid-column: 3 / 4;
  grid-row: 2 / 3;
  align-self: start;
}

示例说明:

非对称布局可以用来展示不同大小的图片和文字。比如一个图片库网站可以使用这种布局,让大图和描述文字分别在不同的位置上,以达到更好的视觉效果。

<div class="container">
  <div class="item item1"><img src="large-image.jpg"></div>
  <div class="item item2">描述文字</div>
  <div class="item item3"><img src="small-image1.jpg"></div>
  <div class="item item4"><img src="small-image2.jpg"></div>
  <div class="item item5"><img src="small-image3.jpg"></div>
</div>
.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, 1fr);
}

.item1 {
  grid-column: 1 / 2;
  grid-row: 1 / 3;
}

.item2 {
  grid-column: 2 / 3;
  grid-row: 1 / 2;
  align-self: end;
}

.item3 {
  grid-column: 2 / 3;
  grid-row: 2 / 3;
  justify-self: end;
}

.item4 {
  grid-column: 3 / 4;
  grid-row: 1 / 2;
}

.item5 {
  grid-column: 3 / 4;
  grid-row: 2 / 3;
  align-self: start;
}

8. 圣杯布局

这种布局方式通常用来展示网页的头部、底部和主内容区域。我们可以使用 Float 技术来实现。通常,我们可以将主内容 div 先放在 HTML 中,然后使用 float: left; 将其向左浮动,然后设置三个定位的子元素,一个放在左边、一个放在右边、一个放在主内容区域下方,大小和位置根据具体情况设置。

<div class="container">
  <div class="main-content">这里是主内容</div>
  <div class="left-sidebar">这里是左侧边栏</div>
  <div class="right-sidebar">这里是右侧边栏</div>
  <div class="header">这里是头部</div>
  <div class="footer">这里是底部</div>
</div>
.container {
  padding-left: 200px;
  padding-right: 200px;
}

.main-content {
  float: left;
  width: 100%;
}

.left-sidebar {
  float: left;
  width: 200px;
  margin-left: -100%;
  position: relative;
  left: -200px;
}

.right-sidebar {
  float: right;
  width: 200px;
  margin-right: -100%;
  position: relative;
  right: -200px;
}

.header, .footer {
  clear: both;
}

9. 双飞翼布局

这种布局方式也可以用来展示网页的头部、底部和主内容区域,与圣杯布局相似。但是双飞翼布局相比于圣杯布局,使用了更少的 HTML 标记。通常,我们可以将主内容 div 放在 HTML 中,使用 float: left; 浮动它,并且使用负边距将它移出容器的左右边距。然后,我们在主内容区域内部使用一个额外的 div 来包裹着放置左边栏 div 和右边栏 div,再对这个额外的 div 应用 margin-leftmargin-right 来设置左右边栏的宽度、位置。

<div class="container">
  <div class="main-content">
    <div class="inner-content">这里是主内容</div>
  </div>
  <div class="left-sidebar">这里是左侧边栏</div>
  <div class="right-sidebar">这里是右侧边栏</div>
</div>
.container {
  padding-left: 200px;
  padding-right: 200px;
}

.main-content {
  float: left;
  width: 100%;
}

.inner-content {
  margin-left: 200px;
  margin-right: 200px;
}

.left-sidebar {
  float: left;
  width: 200px;
  margin-left: -100%;
}

.right-sidebar {
  float: right;
  width: 200px;
  margin-right: -100%;
}

10. Sticky Footer 布局

这种布局方式可以用来实现一个 "粘性" 底部布局,即当页面内容较少时,底部区域始终固定在视图底端。我们可以通过使用 Flexbox 或者 Grid 技术来实现。主要思路是将页面设置为至少充满整个视图,然后将底部区域固定在底部。

<body>
  <div class="container">
    <div class="content"></div>
  </div>
  <div class="footer"></div>
</body>
html, body {
  min-height: 100%;
}

body {
  display: flex;
  flex-direction: column;
}

.container {
  flex: 1;
}

.footer {
  flex-shrink: 0;
}

示例说明:

Sticky Footer 布局可以用来实现网页的底部区域(比如版权信息或者联系方式)固定在底部,不管页面内容多少。比如一个企业官网可以使用这种布局,让联系方式一直在底端,方便用户获取相关信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS 实现 10 种现代布局的代码 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 详解CSS中的flex布局

    详解CSS中的flex布局 概述 flex布局是一种强大的CSS布局方式,它可以在不使用传统的float或position布局情况下,实现弹性和自适应的布局效果。使用flex布局,可以使得网页页面更加灵活、简洁,并且可以快速对不同尺寸的设备做出响应。 属性介绍 使用flex布局,需要在容器上应用display: flex或display: inline-fl…

    css 2023年6月10日
    00
  • js 本地预览的简单实现方法

    下面就为大家分享一下JS本地预览的简单实现方法。 如何实现JS本地预览 1. 安装浏览器插件 Chrome浏览器已经集成了一个本地预览的插件,我们可以直接在Chrome浏览器中打开本地HTML文件进行预览,但是其他浏览器可能不具备此功能,我们可以手动安装一个浏览器插件。目前比较常用的插件有“Live Server”和“Web Server for Chrom…

    css 2023年6月11日
    00
  • 用CSS建设网站的实例

    以下是使用CSS建设网站的完整攻略,过程中附带两个示例。 1. 了解CSS基础知识 在使用CSS建设网站之前,首先需要了解CSS的基础知识,如CSS属性、选择器、盒子模型等。可以通过阅读教程或书籍来学习,还可以通过看代码示例来巩固所学知识。 2. 设计网站并实现HTML结构 在使用CSS布局之前,需要先设计好网站,并使用HTML代码实现页面内容结构。HTML…

    css 2023年6月9日
    00
  • 详解CSS3 Media Queries中媒体属性的使用

    详解CSS3 Media Queries中媒体属性的使用 概述 媒体查询(Media Query)是CSS3新增的一个特性,它允许我们针对不同的媒体设备和不同的设备参数(如屏幕宽度、屏幕方向、设备分辨率等)应用不同的CSS样式规则。通过使用媒体查询,我们可以为不同的设备创建不同的布局和风格,从而提高网站的用户体验,提高可访问性。 媒体查询基于媒体类型(med…

    css 2023年6月10日
    00
  • HTML页面弹出居中可拖拽的自定义窗口层

    HTML页面弹出居中可拖拽的自定义窗口层是一个比较常见的需求,在实现过程中需要用到HTML、CSS和JavaScript技术。 以下是实现的步骤: 1. HTML布局 首先,在HTML页面中设置一个弹出层的容器,例如: <div class="popup-container"> <div class="popu…

    css 2023年6月10日
    00
  • 什么是DIV+CSS?有哪些优势?

    DIV + CSS 是一种常用的网页制作技术,其中 DIV 是页面元素结构的划分,CSS 则负责元素样式的设置。DIV 按照页面结构逻辑划分各个部分,如头部、导航、主体部分、底部等,而 CSS 则可对每个 DIV 元素进行单独的样式设置,从而实现更准确和精致的页面效果。 DIV + CSS 的优势有以下几点: 1.提高网页加载速度:通过 DIV + CSS …

    css 2023年6月9日
    00
  • 用hover配合(纯css)position实现网页动态展示效果

    使用hover配合纯CSS的position属性,可以实现许多网页动态展示效果,如悬停弹出层、下拉菜单等。下面是一份关于如何用hover配合CSS动画实现此类效果的攻略。 准备环境 首先,我们需要准备一个HTML文件。我们可以在文件中定义一个div元素,后面的动态效果将会在其中实现。 <!DOCTYPE html> <html> &l…

    css 2023年6月10日
    00
  • vue.js项目使用原生js实现移动端的轮播图

    下面是实现“vue.js项目使用原生js实现移动端的轮播图”的完整攻略: 准备工作 安装vue-cli 首先需要安装vue-cli,它是一款官方提供的vue.js脚手架工具。可以通过以下命令安装: npm install -g vue-cli 创建vue.js项目 创建vue.js项目的命令为: vue init webpack my-project 其中“…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部