整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

一篇文章带你了解HTML的网页布局结构

家好,我是IT共享者,人称皮皮。这篇我们来讲讲CSS网页布局。

一、网页布局

网页布局有很多种方式,一般分为以下几个部分:头部区域、菜单导航区域、内容区域、底部区域


1. 头部区域

头部区域位于整个网页的顶部,一般用于设置网页的标题或者网页的 logo:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS 项目(runoob.com)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
  margin: 0;
}


/* 头部样式 */
.header {
  background-color: #f1f1f1;
  padding: 20px;
  text-align: center;
}
</style>
</head>
<body>


<div class="header">
  <h1>头部区域</h1>
</div>


</body>
</html>


2. 菜单导航区域

菜单导航条包含了一些链接,可以引导用户浏览其他页面:

/* 导航条 */
.topnav {
  overflow: hidden;
  background-color: #333;
}
 
/* 导航链接 */
.topnav a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}
 
/* 链接 - 修改颜色 */
.topnav a:hover {
  background-color: #ddd;
  color: black;
}

3. 内容区域

内容区域一般有三种形式:

  • 1 列:一般用于移动端。
  • 2 列:一般用于平板设备。
  • 3 列:一般用于 PC 桌面设备。

不相等的列

不相等的列一般是在中间部分设置内容区域,这块也是最大最主要的,左右两次侧可以作为一些导航等相关内容,这三列加起来的宽度是 100%。

例:

.column {
  float: left;
}
 
/* 左右侧栏的宽度 */
.column.side {
  width: 25%;
}
 
/* 中间列宽度 */
.column.middle {
  width: 50%;
}
 
/* 响应式布局 - 宽度小于600px时设置上下布局 */
@media screen and (max-width: 600px) {
  .column.side, .column.middle {
    width: 100%;
  }
}

4. 底部区域

底部区域在网页的最下方,一般包含版权信息和联系方式等。

.footer {
  background-color: #F1F1F1;
  text-align: center;
  padding: 10px;
}


二、响应式网页布局

通过以上等学习我们来创建一个响应式等页面,页面的布局会根据屏幕的大小来调整:

案例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>项目</title>
<style>
* {
  box-sizing: border-box;
}
 
body {
  font-family: Arial;
  padding: 10px;
  background: #f1f1f1;
}
 
/* 头部标题 */
.header {
  padding: 30px;
  text-align: center;
  background: white;
}
 
.header h1 {
  font-size: 50px;
}
 
/* 导航条 */
.topnav {
  overflow: hidden;
  background-color: #333;
}
 
/* 导航条链接 */
.topnav a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}
 
/* 链接颜色修改 */
.topnav a:hover {
  background-color: #ddd;
  color: black;
}
 
/* 创建两列 */
/* Left column */
.leftcolumn {   
  float: left;
  width: 75%;
}
 
/* 右侧栏 */
.rightcolumn {
  float: left;
  width: 25%;
  background-color: #f1f1f1;
  padding-left: 20px;
}
 
/* 图像部分 */
.fakeimg {
  background-color: #aaa;
  width: 100%;
  padding: 20px;
}
 
/* 文章卡片效果 */
.card {
  background-color: white;
  padding: 20px;
  margin-top: 20px;
}
 
/* 列后面清除浮动 */
.row:after {
  content: "";
  display: table;
  clear: both;
}
 
/* 底部 */
.footer {
  padding: 20px;
  text-align: center;
  background: #ddd;
  margin-top: 20px;
}
 
/* 响应式布局 - 屏幕尺寸小于 800px 时,两列布局改为上下布局 */
@media screen and (max-width: 800px) {
  .leftcolumn, .rightcolumn {   
    width: 100%;
    padding: 0;
  }
}
 
/* 响应式布局 -屏幕尺寸小于 400px 时,导航等布局改为上下布局 */
@media screen and (max-width: 400px) {
  .topnav a {
    float: none;
    width: 100%;
  }
}
</style>
</head>
<body>


<div class="header">
  <h1>我的网页</h1>
  <p>重置浏览器大小查看效果。</p>
</div>


<div class="topnav">
  <a href="#">链接</a>
  <a href="#">链接</a>
  <a href="#">链接</a>
  <a href="#" style="float:right">链接</a>
</div>


<div class="row">
  <div class="leftcolumn">
    <div class="card">
      <h2>文章标题</h2>
      <h5>xx 年xx月 xx日</h5>
      <div class="fakeimg" style="height:200px;"><img src="img/bird.png"></div>
      <p>文本...</p>
      <p>当热诚变成习惯,恐惧和忧虑即无处容身。缺乏热诚的人也没有明确的目标。热诚使想象的轮子转动。一个人缺乏热诚就象汽车没有汽油。
      善于安排玩乐和工作,两者保持热诚,就是最快乐的人。热诚使平凡的话题变得生动。!</p>
    </div>
    <div class="card">
      <h2>文章标题</h2>
      <h5>xx 年 xx 月xx日</h5>
      <div class="fakeimg" style="height:200px;"><img src="img/border.png"></div>
      <p>文本...</p>
      <p>一切事无法追求完美,唯有追求尽力而为。这样心无压力,出来的结果反而会更好!</p>
    </div>
  </div>
  <div class="rightcolumn">
    <div class="card">
      <h2>关于我</h2>
      <div class="fakeimg" style="height:100px;"></div>
      <p>6666</p>
    </div>
    <div class="card">
      <h3>热门文章</h3>
      <div class="fakeimg"><img src="img/fy2_wp.png">\</div>
    
    </div>
    <div class="card">
      <h3>关注我</h3>
      <p>本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,
      不得用于任何商业用途,否则后果自负,请支持购买正版软件!如侵犯到您的权益,请及时通知我们,我们会及时处理。


声明:为非赢利性网站 不接受任何赞助和广告。</p>
    </div>
  </div>
</div>


<div class="footer">
  <h2>底部区域</h2>
</div>


</body>
</html>


三、总结

本文主要介绍了Html的网页布局结构,如何去了解网络的布局,介绍了常见的移动设备的三种网页模式,最后通过一个小项目,总结之前讲解的内容。

代码很简单,希望可以帮助你学习。

页布局对改善网站的外观非常重要。

请慎重设计您的网页布局。

实例

使用 <div> 元素的网页布局

[demo]

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<style type="text/css">

div#container{width:500px}

div#header {background-color:#99bbbb;}

div#menu {background-color:#ffff99;height:200px;width:150px;float:left;}

div#content {background-color:#EEEEEE;height:200px;width:350px;float:left;}

div#footer {background-color:#99bbbb;clear:both;text-align:center;}

h1 {margin-bottom:0;}

h2 {margin-bottom:0;font-size:18px;}

ul {margin:0;}

li {list-style:none;}

</style>

</head>

<body>

<div id="container">

<div id="header">

<h1>Main Title of Web Page</h1>

</div>

<div id="menu">

<h2>Menu</h2>

<ul>

<li>HTML</li>

<li>CSS</li>

<li>JavaScript</li>

</ul>

</div>

<div id="content">Content goes here</div>

<div id="footer">Copyright W3School.com.cn</div>

</div>

</body>

</html>

[/demo]

如何使用 <div> 元素添加布局。

使用 <table> 元素的网页布局

[demo]

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

</head>

<body>

<table width="500" border="0">

<tr>

<td colspan="2" style="background-color:#99bbbb;">

<h1>Main Title of Web Page</h1>

</td>

</tr>

<tr valign="top">

<td style="background-color:#ffff99;width:100px;text-align:top;">

<b>Menu</b><br />

HTML<br />

CSS<br />

JavaScript

</td>

<td style="background-color:#EEEEEE;height:200px;width:400px;text-align:top;">

Content goes here</td>

</tr>

<tr>

<td colspan="2" style="background-color:#99bbbb;text-align:center;">

Copyright W3School.com.cn</td>

</tr>

</table>

</body>

</html>

[/demo]

如何使用 <table> 元素添加布局。

网站布局

大多数网站会把内容安排到多个列中(就像杂志或报纸那样)。

可以使用 <div> 或者 <table> 元素来创建多列。CSS 用于对元素进行定位,或者为页面创建背景以及色彩丰富的外观。

提示:即使可以使用 HTML 表格来创建漂亮的布局,但设计表格的目的是呈现表格化数据 - 表格不是布局工具!

HTML 布局 - 使用 <div> 元素

div 元素是用于分组 HTML 元素的块级元素。

下面的例子使用五个 div 元素来创建多列布局:

实例

[demo]

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<style type="text/css">

div#container{width:500px}

div#header {background-color:#99bbbb;}

div#menu {background-color:#ffff99; height:200px; width:100px; float:left;}

div#content {background-color:#EEEEEE; height:200px; width:400px; float:left;}

div#footer {background-color:#99bbbb; clear:both; text-align:center;}

h1 {margin-bottom:0;}

h2 {margin-bottom:0; font-size:14px;}

ul {margin:0;}

li {list-style:none;}

</style>

</head>

<body>

<div id="container">

<div id="header">

<h1>Main Title of Web Page</h1>

</div>

<div id="menu">

<h2>Menu</h2>

<ul>

<li>HTML</li>

<li>CSS</li>

<li>JavaScript</li>

</ul>

</div>

<div id="content">Content goes here</div>

<div id="footer">Copyright W3School.com.cn</div>

</div>

</body>

</html>

[/demo]

上面的 HTML 代码会产生如下结果:

使用 div 和 CSS 进行布局

HTML 布局 - 使用表格

使用 HTML <table> 标签是创建布局的一种简单的方式。

可以使用 <div> 或者 <table> 元素来创建多列。CSS 用于对元素进行定位,或者为页面创建背景以及色彩丰富的外观。

提示:即使可以使用 HTML 表格来创建漂亮的布局,但设计表格的目的是呈现表格化数据 - 表格不是布局工具!

下面的例子使用三行两列的表格 - 第一和最后一行使用 colspan 属性来横跨两列:

实例

[demo]

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

</head>

<body>

<table width="500" border="0">

<tr>

<td colspan="2" style="background-color:#99bbbb;">

<h1>Main Title of Web Page</h1>

</td>

</tr>

<tr valign="top">

<td style="background-color:#ffff99;width:100px;text-align:top;">

<b>Menu</b><br />

HTML<br />

CSS<br />

JavaScript

</td>

<td style="background-color:#EEEEEE;height:200px;width:400px;text-align:top;">

Content goes here</td>

</tr>

<tr>

<td colspan="2" style="background-color:#99bbbb;text-align:center;">

Copyright W3School.com.cn</td>

</tr>

</table>

</body>

</html>

[/demo]

上面的 HTML 代码会产生以下结果:

使用表格进行布局

HTML 布局 - 有用的提示

提示:使用 CSS 最大的好处是,如果把 CSS 代码存放到外部样式表中,那么站点会更易于维护。通过编辑单一的文件,就可以改变所有页面的布局。如需学习更多有关 CSS 的知识,请访问我们的 CSS 教程。

提示:由于创建高级的布局非常耗时,使用模板是一个快速的选项。通过搜索引擎可以找到很多免费的网站模板(您可以使用这些预先构建好的网站布局,并优化它们)。

HTML 布局标签

标签 描述

<div> 定义文档中的分区或节(division/section)。

<span> 定义 span,用来组合文档中的行内元素。

通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。

实例

垂直框架

[demo]

<html>

<frameset cols="25%,50%,25%">

<frame src="/example/html/frame_a.html">

<frame src="/example/html/frame_b.html">

<frame src="/example/html/frame_c.html">

</frameset>

</html>

[/demo]

本例演示:如何使用三份不同的文档制作一个垂直框架。

水平框架

[demo]

<html>

<frameset rows="25%,50%,25%">

<frame src="/example/html/frame_a.html">

<frame src="/example/html/frame_b.html">

<frame src="/example/html/frame_c.html">

</frameset>

</html>

[/demo]

本例演示:如何使用三份不同的文档制作一个水平框架。

框架

通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。每份HTML文档称为一个框架,并且每个框架都独立于其他的框架。

使用框架的坏处:

开发人员必须同时跟踪更多的HTML文档

很难打印整张页面

框架结构标签(<frameset>)

框架结构标签(<frameset>)定义如何将窗口分割为框架

每个 frameset 定义了一系列行或列

rows/columns 的值规定了每行或每列占据屏幕的面积

编者注:frameset 标签也被某些文章和书籍译为框架集。

框架标签(Frame)

Frame 标签定义了放置在每个框架中的 HTML 文档。

在下面的这个例子中,我们设置了一个两列的框架集。第一列被设置为占据浏览器窗口的 25%。第二列被设置为占据浏览器窗口的 75%。HTML 文档 "frame_a.htm" 被置于第一个列中,而 HTML 文档 "frame_b.htm" 被置于第二个列中:

<frameset cols="25%,75%">

<frame src="frame_a.htm">

<frame src="frame_b.htm">

</frameset>

基本的注意事项 - 有用的提示:

假如一个框架有可见边框,用户可以拖动边框来改变它的大小。为了避免这种情况发生,可以在 <frame> 标签中加入:noresize="noresize"。

为不支持框架的浏览器添加 <noframes> 标签。

重要提示:不能将 <body></body> 标签与 <frameset></frameset> 标签同时使用!不过,假如你添加包含一段文本的 <noframes> 标签,就必须将这段文字嵌套于 <body></body> 标签内。(在下面的第一个实例中,可以查看它是如何实现的。)

更多实例

如何使用 <noframes> 标签

[demo]

<html>

<frameset cols="25%,50%,25%">

<frame src="/example/html/frame_a.html">

<frame src="/example/html/frame_b.html">

<frame src="/example/html/frame_c.html">

<noframes>

<body>您的浏览器无法处理框架!</body>

</noframes>

</frameset>

</html>

[/demo]

本例演示:如何使用 <noframes> 标签。

混合框架结构

[demo]

<html>

<frameset rows="50%,50%">

<frame src="/example/html/frame_a.html">

<frameset cols="25%,75%">

<frame src="/example/html/frame_b.html">

<frame src="/example/html/frame_c.html">

</frameset>

</frameset>

</html>

[/demo]

本例演示如何制作含有三份文档的框架结构,同时将他们混合置于行和列之中。

含有 noresize="noresize" 属性的框架结构

[demo]

<html>

<frameset cols="50%,*,25%">

<frame src="/example/html/frame_a.html" noresize="noresize" />

<frame src="/example/html/frame_b.html" />

<frame src="/example/html/frame_c.html" />

</frameset>

</html>

[/demo]

本例演示 noresize 属性。在本例中,框架是不可调整尺寸的。在框架间的边框上拖动鼠标,你会发现边框是无法移动的。

导航框架

[demo]

<html>

<frameset cols="120,*">

<frame src="/example/html/html_contents.html">

<frame src="/example/html/frame_a.html" name="showframe">

</frameset>

</html>

[/demo]

本例演示如何制作导航框架。导航框架包含一个将第二个框架作为目标的链接列表。名为 "contents.htm" 的文件包含三个链接。

内联框架

[demo]

<html>

<head>

<meta charset="UTF-8">

</head>

<body>

<iframe src="./imagecopy1234567890/test.jpg"></iframe>

<p>一些老的浏览器不支持 iframe。</p>

<p>如果得不到支持,iframe 是不可见的。</p>

</body>

</html>

[/demo]

本例演示如何创建内联框架(HTML 页中的框架)。

跳转至框架内的一个指定的节

[demo]

<html>

<frameset cols="20%,80%">

<frame src="/example/html/frame_a.html">

<frame src="/example/html/link.html#C10">

</frameset>

</html>

[/demo]

本例演示两个框架。其中的一个框架设置了指向另一个文件内指定的节的链接。这个"link.htm"文件内指定的节使用 <a name="C10"> 进行标识。

使用框架导航跳转至指定的节

[demo]

<html>

<frameset cols="180,*">

<frame src="/example/html/content.html">

<frame src="/example/html/link.html" name="showframe">

</frameset>

</html>

[/demo]

本例演示两个框架。左侧的导航框架包含了一个链接列表,这些链接将第二个框架作为目标。第二个框架显示被链接的文档。导航框架其中的链接指向目标文件中指定的节。

网站的布局是一个网站设计的根本,CSS的Grid布局已经成为了未来网站布局的基本方式。

今天这篇文章我们通过图文,一起看看如何自己实现Grid布局方式。

CSS

第一个Grid布局

首先我们看看最基本的Grid布局是什么样的,HTML页面的代码如下所示。

HTML代码

然后设置其CSS属性,这里主要展示容器的CSS属性,给子元素添加的color属性就不在这里展示了。

CSS属性

在页面上看到的效果如下,目前因为没有对子div元素做任何设置,会自动将子div沿垂直方向排列。

页面效果

设置行和列

为了让外层的div(wrapper)为一个网格容器,需要设置其行数和列数,就像一个表格一样。

此时就需要用到grid-template-columns和grid-template-rows两个属性值。

  • grid-template-columns

用于设置网格容器的列属性,其实就相当于列的宽度。当我们需要几列展示时,就设置几个值,这个属性可以接收具体数值比如100px,也可以接收百分比值,表示占据容器的宽度。

需要注意的是:当给容器设定了宽度时,grid-template-columns设定的百分比值是以容器的宽度值为基础计算的。如果未设置宽度时,会一直向上追溯到设置了宽度的父容器,直到body元素。

比如我们设置了以下的CSS属性。

CSS属性

可以看出三列宽度加起来的百分比值为120%,而且wrapper容器并未设置宽度,会一直向上追溯到body元素,这样三列的总宽度已经超过了body的宽度,因此会出现滚动条。

页面效果

  • grid-template-rows

用于设置网格容器的行属性,其实就相当于行的高度,其特性与grid-template-columns属性类似。

下面简单修改grid-template-columns和grid-template-rows两个属性的值。

CSS值

得到的效果图如下所示。

效果图

放置子元素

接下来我们看看别的情况,通过CSS属性设置3*3的网格。

CSS属性

在页面上的呈现方式如下所示。

页面呈现

从页面上看我们看不出有什么问题,但是打开控制台后可以发现,这个网格已经占据了3*3的空间。它后面的元素只能排列在所有的网格后面。

页面实际情况

不规则排列

当我们需要得到特殊的排列方式,比如占满整行,占满整列,二三行合并等等。

这就需要用到grid-column和grid-row属性,表示行网线和列网线的序号。通过设置start和end值,来进行网格的合并。

网线序号

我们重新给wrapper容器内部的div添加class类。

HTML代码

然后添加以下的CSS代码,给不同的网格特定的行号和列号。

CSS代码

最终得到的效果图如下所示。

页面效果图

结束语

今天这篇文章介绍了CSS中Grid布局的基础知识,应该可以很快掌握,其他的复杂点的网格布局大家也可以自己去尝试。