【CSS|第1期】网页设计的演变:从表格布局到Grid布局

news2024/11/15 12:43:41

日期:2024年9月9日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉在这里插入代码片有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


文章目录

  • 一、前言
  • 二、网页设计起源
  • 三、CSS的诞生与作用
    • 1、CSS是什么
    • 2、CSS的提出场景
  • 四、布局方式的演变
    • 1、表格布局
    • 2、Div+CSS
    • 3、Flex布局
    • 4、Grid布局
  • 五、特别的布局方式
    • 1、绝对定位布局
    • 2、相对定位布局
    • 3、框架布局(`Frame` 布局)
  • 六、标准化和模块化
    • 1、标准化
    • 2、模块化
  • 七、结语


在这里插入图片描述


一、前言


互联网的兴起带来了网页设计的革命,经历了数十年的发展和演变。从最初的简单文本和图像展示,到如今的复杂交互和响应式设计,网页设计的技术和方法不断进步。今天,让我们一起回顾网页设计的发展历程,探索从表格布局到CSS、Flex布局,再到Grid布局的演变。

二、网页设计起源


网页设计的起源可以追溯到20世纪90年代初,当时互联网刚刚兴起。最早的网页设计主要是基于HTMLHyperText Markup Language)的简单文本和图像展示。随着互联网的普及和技术的进步,网页设计逐渐发展成为一个独立的领域,涵盖了视觉设计、用户体验、交互设计等多个方面。

三、CSS的诞生与作用


1、CSS是什么

CSSCascading Style Sheets层叠样式表)是一种用于描述 HTMLXML(包括如 SVGMathML 等各种 XML 方言)文档样式的样式表语言,它可以控制网页元素的外观,如字体、颜色、布局等。CSS 的主要作用是将网页的内容(HTML)与样式分离,使得网页设计更加灵活和易于维护。

2、CSS的提出场景

在早期的网页设计中,HTML 不仅用于结构化内容,还用于定义内容的样式,样式和结构是混合在一起的,这导致了 HTML 代码的冗长、网页的维护和修改非常困难。为了解决这个问题,CSS 被提出,它将网页的内容样式分离,大大提高了网页的可维护性和可重用性。

四、布局方式的演变


1、表格布局

CSS 广泛应用之前,网页布局主要依赖于HTML表格(<table>)。表格布局的优点是简单易用,但缺点也很明显:

  • 可维护性差:表格嵌套复杂,修改布局需要大量修改HTML代码。
  • 性能问题:复杂的表格布局会导致页面加载速度变慢。
  • 灵活性差:表格布局难以实现复杂的响应式设计。

以下例子,我们将通过表格的行和列来划分网页的不同区域:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格布局</title>
</head>
<body>
	<table>
		<tr>
			<td colspan="2">头部</td>
		</tr>
		<tr>
			<td>侧边栏</td>
			<td>主体内容</td>
		</tr>
		<tr>
			<td colspan="2">底部</td>
		</tr>
	</table>
</body>
</html>

2、Div+CSS

随着 CSS 的发展,网页布局逐渐转向了 Div+CSS 模式。这种模式下,HTML 用于定义内容的结构,而 CSS 用于定义内容的样式和布局。例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Div+CSS布局</title>
    <style>
        *{
            margin:0;
            padding: 0;
        }
	    #header {
	        height: 100px;
	        background-color: #ccc;
	    }
	    #sidebar {
	        width: 200px;
	        float: left;
	        background-color: #eee;
	    }
	    #main-content {
	        margin-left: 200px;
	        background-color: #fff;
	    }
	    #footer {
	        height: 50px;
	        background-color: #ccc;
	    }
    </style>
</head>
<body>
	<div id="header">头部</div>
	<div id="sidebar">侧边栏</div>
	<div id="main-content">主体内容</div>
	<div id="footer">底部</div>
</body>
</html>

3、Flex布局

Flex 布局(Flexible Box Layout Module)是 CSS3 中引入的一种新的布局模式,旨在提供一种更加灵活和强大的方式来排列和对齐容器中的子元素。Flex 布局特别适用于需要响应式设计的场景。例如:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>flex布局</title>
	<style>
		* {
			margin: 0;
			padding: 0;
		}

		.flex-container {
			display: flex;
			justify-content: space-between;
		}

		.item {
			width: 100px;
			height: 100px;
			background-color: #ccc;
		}
	</style>
</head>

<body>
	<div class="flex-container">
		<div class="item">项目 1</div>
		<div class="item">项目 2</div>
		<div class="item">项目 3</div>
	</div>
</body>

</html>

4、Grid布局

Grid 布局(CSS Grid Layout)是 CSS3 中引入的另一种强大的二维布局系统,旨在提供一种更加直观和灵活的方式来创建复杂的网页布局。Grid 布局特别适用于需要精确控制行和列的场景。例如:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>grid布局</title>
	<style>
		* {
			margin: 0;
			padding: 0;
		}

		.grid-container {
			display: grid;
			grid-template-columns: 1fr 1fr 1fr;
			grid-template-rows: 100px 100px;
		}

		.item1 {
			grid-column: 1 / 3;
			grid-row: 1;
			background-color: #ccc;
		}

		.item2 {
			grid-column: 3;
			grid-row: 1 / 3;
			background-color: #eee;
		}

		.item3 {
			grid-column: 1;
			grid-row: 2;
			background-color: #fff;
		}
	</style>
</head>

<body>
	<div class="grid-container">
		<div class="item1">项目 1</div>
		<div class="item2">项目 2</div>
		<div class="item3">项目 3</div>
	</div>
</body>

</html>

五、特别的布局方式

1、绝对定位布局

绝对定位布局通过设置元素的绝对定位(position: absolute),并利用 toprightbottomleft 属性来精确控制元素在页面中的位置。常用于创建特殊效果,比如:

<div style="position: absolute; bottom: 20px; right: 20px;">客服按钮</div>

它可以创建出固定在页面特定位置的元素,如弹出框、固定导航栏等。但需要注意管理好元素的堆叠顺序和布局结构。

  • 绝对定位的元素会脱离文档流,因此它原来的位置不会被保留,下面的元素会向上移动来填补空位。
  • 绝对定位的元素可以重叠其他元素。
  • 通常,绝对定位的元素需要一个相对定位的父元素作为定位的参考点。
  • 如果没有设置偏移属性(top, right, bottom, left),则绝对定位的元素会位于其父元素的左上角。

2、相对定位布局

相对定位布局是元素相对其原本在文档流中的位置进行偏移。例如:

< img src="image.jpg" alt="图片">
<p style="position: relative; left: 10px;">这是图片的描述文字</p >

相对定位是CSS布局中一个非常灵活的工具,在不影响其他元素位置的情况下,对元素进行微调,实现更细致的布局调整。

  • 相对定位的元素不会脱离文档流,因此它下面的元素不会上移来填补它的位置。
  • 相对定位通常用于微调元素的位置,或者作为绝对定位元素的参考点。
  • 如果没有设置偏移属性(top, right, bottom, left),则相对定位的元素不会发生任何位置上的变化。

3、框架布局(Frame 布局)

HTML 中,框架布局(Frame Layout)指的是使用框架集(<frameset>)和框架(<frame>)元素来创建一个包含多个 HTML 文档的页面布局。不过,需要注意的是,HTML 框架(frames)已经不被推荐使用,并且在 HTML5 中已经被移除。现代的网页设计更倾向于使用 CSS框架内联框架(<iframe> 来实现类似的功能。

<!DOCTYPE html>
<html>
<head>
  <title>框架布局示例</title>
</head>
<frameset rows="25%, 75%">
  <frame src="top.html" noresize="noresize">
  <frameset cols="25%, 75%">
    <frame src="left.html">
    <frame src="right.html">
  </frameset>
</frameset>
</html>

本示例中,<frameset> 元素定义了页面的框架布局,而 rows 属性定义了框架集的行划分,cols 属性定义了框架集的列划分。

  • <frame src="top.html" noresize="noresize">:定义了一个框架,其内容来自 “top.html” 文件,且用户不能调整框架的大小。
  • <frameset cols="25%, 75%">:在主框架集内部定义了一个新的框架集,它将剩余空间分为两列,比例为 25%75%
    每个 <frame> 元素都指向一个 HTML 文件,该文件将显示在相应的框架中。

虽然在老式网站系统中曾有应用,但由于不利于搜索引擎优化和页面加载速度慢等缺点,在现代网页设计中使用较少。

六、标准化和模块化


1、标准化

网页设计的标准化主要体现在 HTMLCSSJavaScript 等技术的规范和标准上。W3CWorld Wide Web Consortium)是制定这些标准的主要组织。标准化的好处包括:

  • 兼容性:不同浏览器和设备之间的兼容性更好。
  • 可维护性:代码更加规范,易于维护和更新。

2、模块化

模块化是指将网页设计和开发过程中的各个部分分解成独立的模块,每个模块负责特定的功能或样式。模块化的优点包括:

  • 可重用性:模块可以在不同的项目中重复使用,减少开发时间和成本。
  • 可维护性:模块化的代码结构清晰,易于维护和更新。
  • 团队协作:模块化使得团队成员可以并行工作,提高开发效率。

七、结语


网页设计从最初的 表格布局 发展到如今的 Flex布局Grid布局,经历了不断的演变和进步。CSS的出现使得网页设计更加灵活和易于维护,而标准化和模块化则进一步提高了网页设计的效率和质量。


参考文章:

  • 《CSS:层叠样式表》
  • 《CSS Tutorial》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/142137348

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调用系统的录音设备提示:line with format PCM_SIGNED 16000.0 Hz

javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 8 bit, mono, 1 bytes/frame, not supported. 打开 设置->隐私->麦克风->允许应用访问你的麦克风 与 16000Hz没关系 与 16000Hz没关系 与 16000Hz没关系

【iOS】dismiss多级的方法

前言 上次笔者总结过push和pop推入和推出界面的方法&#xff0c;这里对于dismiss多级的方法进行一个总结&#xff0c;推入推出方法可以看看笔者这篇博客&#xff1a;【iOS】UI学习——界面切换 dismiss推出多级的原理 当我们使用pop推入新的界面的时候&#xff0c;连续pop推…

复杂情感识别系统

复杂情感识别系统&#xff08;CERS&#xff09;是一种先进的技术平台&#xff0c;旨在通过分析情感的组合、相互关系及其动态变化来解读和识别复杂的情感状态。这种系统通常采用以下技术和方法&#xff1a; 机器学习与深度学习&#xff1a; 通过训练算法识别和解释大量情感数据…

从汇编语言到高级语言:人类计算机科学的伟大探索

从20世纪中叶第一台电子计算机的诞生&#xff0c;到如今的智能设备遍布全球&#xff0c;计算机科学的发展历程是一部充满着人类探索精神的伟大史诗。计算机语言作为人类与机器交流的桥梁&#xff0c;见证并推动了这一切。从最早的汇编语言到如今多样的高级语言&#xff0c;我们…

视频监控摄像头国标GB28181配置参数逐条解析

转载&#xff1a;视频监控摄像头国标GB28181配置参数逐条解析 现在的很多信息化项目&#xff0c;都会涉及到国标GB28181的视频监控产品&#xff0c;当我们配置这些国标平台&#xff0c;录像机&#xff0c;摄像头时&#xff0c;如果对相关参数的定义不清楚的话&#xff0c;会给我…

【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树

在安卓源码的设计中&#xff0c;将将屏幕分为了37层&#xff0c;不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析&#xff0c;整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…

Redis基础数据结构之 quicklist 和 listpack 源码解读

目录标题 quicklist为什么要设计 quicklist&#xff1f;quicklist特点ziplist quicklist数据结构 listpacklistpack是什么&#xff1f;listpack数据结构ziplist干啥去了&#xff1f;为什么有listpack?什么是ziplist的连锁更新&#xff1f;listpack 如何避免连锁更新&#xff1…

从ANN到SNN的转换:实现、原理及两种归一化方法【MINIST、实战】

从ANN到SNN的转换&#xff1a;实现、原理及两种归一化方法 引言 随着神经形态计算的迅猛发展&#xff0c;脉冲神经网络&#xff08;Spiking Neural Networks, SNNs&#xff09;作为一种仿生神经计算模型&#xff0c;逐渐展现出其在低功耗和事件驱动计算领域的巨大潜力。不同于…

8.5LoG算子边缘检测

LoG的基本概念 LoG&#xff08;Laplacian of Gaussian&#xff09;算子是一种结合了高斯模糊和平滑处理的边缘检测方法。它通过先对图像应用高斯滤波器来去除噪声&#xff0c;然后再对结果应用拉普拉斯算子来检测边缘。LoG算子的主要优点是可以检测图像中的边缘和其他重要特征…

MPICH 源码编译 with ucx with cuda,应用示例

先基于 cuda 编译ucx 再基于 ucx 编译 mpich mkdir mpich mkdir ucx 1, 安装 ucx 预备环境&#xff1a; sudo apt-get install valgrind sudo apt-get install libibverbs-dev librdmacm-dev 下载ucx 源代码 git clone --recursive https://github.com/openucx/ucx.git cd…

堆排序,快速排序

目录 1.堆排序 2.快速排序 1.hoare版本 2.挖坑法 3.前后指针法 注意点 1.堆排序 void Swap(int* a, int* b) {int tmp *a;*a *b;*b tmp; } void adjustdown(int* a, int n, int parent) {int child parent * 2 1;while (child < n){if (child 1 < n &&am…

【Python基础】Python lambda(简洁与高效的匿名函数)

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、lambda函数的基本概念三、lambda函数的应用实例3.1 在列表排序中使用lambda函数3.2 在map()函数中…

(批处理)设置延时+设置关机倒计时

使用方式&#xff1a;建立一个文本文件夹&#xff0c;将文件扩展名改为.bat&#xff0c;右键单击后编辑&#xff0c;将代码复制进去。 将文件保存 echo off echo 三秒后会出现一个提示自动关机ping -n 3 127.0.0.1 >nul rem 实现的功能是在这里停3秒再继续往下执行 rem 以…

OpenCore Legacy Patcher 2.0.0 发布,83 款不受支持的 Mac 机型将能运行最新的 macOS Sequoia

在不受支持的 Mac 上安装 macOS Sequoia (OpenCore Legacy Patcher v2.0.0) Install macOS on unsupported Macs 请访问原文链接&#xff1a;https://sysin.org/blog/install-macos-on-unsupported-mac/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

【Linux】多路转接epoll

一、I/O多路转接 poll 1.1 poll函数接口 函数原型 函数参数 fds&#xff1a;是一个poll函数监听的结构列表&#xff0c;每一个元素中包含了三部分内容&#xff1a;文件描述符&#xff0c;监听的事件集合&#xff0c;返回的事件集合。nfds&#xff1a;表示的是fds数组的长度tim…

VUE + NODE 历史版本安装

以node 12.20.0为例子&#xff0c;想下载哪个版本&#xff0c;后面写哪个版本 https://registry.npmmirror.com/binary.html?pathnode/v12.20.0/ 安装国内镜像7.1.0 cnpm npm install -g cnpm7.1.0 -g --registryhttps://registry.npmmirror.com 安装vue脚手架4.5.15 cnpm …

【有啥问啥】深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法

深入浅出马尔可夫链蒙特卡罗&#xff08;Markov Chain Monte Carlo, MCMC&#xff09;算法 0. 引言 Markov Chain Monte Carlo&#xff08;MCMC&#xff09;是一类用于从复杂分布中采样的强大算法&#xff0c;特别是在难以直接计算分布的情况下。它广泛应用于统计学、机器学习…

【linux基础】linux中的开发工具(4)--调试器gdb的使用

目录 前言一&#xff0c;背景二&#xff0c;gdb的使用1. 启动 gdb 调试器&#xff1a;2. 罗列代码信息3. 运行程序4. 有关断点的操作(1) 打断点(2) 查看断点(3) 删除断点(4) 在一次调试中&#xff0c;断点是递增的(5) 关闭断点(6) 开启断点(7) 逐过程调试&#xff0c;相当于 F1…

我与Linux的爱恋:进程|进程的查看与管理|创建进程

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 ​ 文章目录 一、进程的概念1.什么是进程2.在这里插入代码片多进程管理3.描述进程-PCB 2.查看进程与管理进程1.使用指令查看进程2.通过系统调用函数查看pid3.杀进程4.ppid&…

如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?

优质博文&#xff1a;IT-BLOG-CN 问题 我在 macOS 中使用 vscode 版本 1.92.2&#xff0c;并安装了Java 扩展包v0.29.0。当我打开command click或right click->Go to definition一个没有源代码的类时&#xff0c;vscode 会使用 FernFlower 反编译器打开 .class 文件。但…