css过去及未来展望—分析css演进及排版布局的考量
读初二的时候,学校有了计算机,也简单地介绍了下网页,不过那是的html 都是table,也没有去细看。到了高中,qq空间有个html模式,为了让文章好看点。也浅尝辄止地学了下css
css简介
在HTML迅猛发展的 90 年代,不同的浏览器根据自身的 HTML 语法结构来支持实现不同的样式语言。在最初的 HTML 版本中,由于只含有很少的显示属性,所以用户可以自己决定显示页面的方式。
但随着 HTML 的发展,HTML 增加了很多功能,代码也越来越臃肿,HTML 就变得越来越乱。网页也失去了语义化,维护代码很艰难,因为代码很混乱:比如现在博客园里面还有大量的<font color="blue" face="verdana"><body bgcolor="#e6e6fa">标签等。于是装饰网页样式的 CSS(层叠样式表,Cascading Style Sheets)诞生了。
CSS 是随着前端表现分离的提出而产生的,因为最早网页内容的样式都是通过center、strike等标签或fontColor等属性内容来体现的,而CSS提出使用样式描述语言来表达页面内容,而不是用HTML的标签来表达。
css历史
CSS的早期历史可以读此文:http://www.w3.org/Style/LieBos2e/history/ ,以及CSS之父的博士论文:层叠样式表。css的特性早起由印刷出版业而来。
1994 年,Hkon Wium Lie 最初提出了 CSS 的想法,联合当时正在设计 Argo 的浏览器的Bert Bos,他们决定一起合作设计 CSS,于是创造了 CSS 的最初版本。
1995年他们在芝加哥的Mosaic and the Web 大会上第一次正式提出了 CSS 的建议,博斯演示了Argo浏览器支持CSS的例子,哈肯也展示了支持CSS的Arena浏览器。当时 W3C 刚刚建立,W3C 对 CSS 很感兴趣,为此专门组织了一次讨论会。同年,W3C组织(World WideWeb Consortium)成立,CSS的创作成员全部成为了W3C的工作小组并且全力以赴负责研发CSS标准,层叠样式表的开发终于走上正轨。有越来越多的成员参与其中,例如微软公司的托马斯·莱尔顿(Thomas Reaxdon),他的努力最终令Internet Explorer浏览器支持CSS标准。
1996 年 12 月,W3C 推出了 CSS 规范的第一版本。
1997 年,W3C 颁布 CSS1.0 版本 ,CSS1.0 较全面地规定了文档的显示样式,可分为选择器、样式属性、伪类 / 对象几个部分。这一规范立即引起了各方的关注,随即微软和网景公司的浏览器均能支持 CSS1.0,这为 CSS 的发展奠定了基础。W3C组织负责CSS的工作组开始讨论第一版中没有涉及到的问题。其讨论结果组成了1998年5月出版的CSS规范第二版。
1998年5,W3C 发布了 CSS 的第二个版本,目前的主流浏览器都采用这标准。
CSS2 的规范是基于 CSS1 设计的,包含了 CSS1 所有的功能,并扩充和改进了很多更加强大的属性。包括选择器、位置模型、布局、表格样式、媒体类型、伪类、光标样式。
1999年,CSS 3的草稿开始制定
2001年5月23日W3C完成了CSS3的工作草案,主要包括盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效、多栏布局等模块
2005 年 12 月,W3C 开始 CSS3 标准的制定。css是有一系列的标准组成。每个系列完成的时间不一样。所以css3是不断的演进的,直到现在。
css模块演化图
从形式上来说,CSS3 标准自身已经不存在了。每个模块都被独立的标准化。

网页布局模式演变
用于展示的HTML标签
1990年代中期,主流浏览器厂商(网景和微软)添加了一些标签(tag),从而使得设计者可以用“展示类”的标签来控制页面的外观,例如<b>让文字成为粗体,<i>则是斜体。
表格布局
table布局,在IBM的邮箱系统中投放,是个很好的解决方案。
帧(Frames)
通过使用<frameset>和<frame src>标签,一个HTML页面中的一些区域可以包含另外的HTML文件。帧甚至还可以嵌套使用。
客户端分区响应图(Image Map)
这在dreawave大热的时代,是利器。就是在图片上面添加锚点与热点区域,然后点击锚点。

css 层叠样式
浏览器战争中的对手们(网景和微软)达成了共识,决定逐渐淘汰展示类标签。CSS(Cascading Style Sheet)的广泛使用大大促进了结构和展示的分离。
DIV和“盒模型”
<div>元素起初是作为CSS的一部分被发明的,用来把页面组织成逻辑上独立的几个部分。它的设计初衷其实是替代当时最常用的表格布局。<div>标签内可以包含文字和图片,(从而形成“盒子”)。这些“盒子”可以设置宽度和/或长度,甚至还能有外边距(margin)和内边距(padding)。
CSS 定位(Position)属性
<div>默认是块级元素,如果不专门设置的话,多个<div>会一个个地上下层叠排列。而最早能够专门设置元素对齐的就是定位属性(即position:fixed)。定位属性至今仍然是CSS规范的一部分
浮动布局
float浮动属性最早是为了实现图片的文字环绕效果,允许的值包括left、right、none、inherit,后来人们发现,浮动<div>元素可以用来有效地控制页面上元素的位置。把<div>设置成浮动会使得对应的盒子有一定的自适应效果,多个浮动元素一一排列,如果超出了容器元素宽度,一行放不下时还会自动换行。
移动和响应式网站
Flexbox,Column Grid
CSS Grid
基于CSS来实现某种网格(grid)布局的想法已经存在多年了。CSS的两位联合发明人Bert Bos和Håkon Wium Lie都有相关的想法。
突破来自微软。一些微软员工一直在为他们的浏览器探索更好的布局工具,慢慢形成了一份提案。事实上,2011年的时候,微软发布的IE 10中甚至用-ms-的厂商前缀实现了一个grid布局草案。随后的2012年,他们将规范的草案提交给了W3C。微软还为他们的grid系统申请了一份专利,并通过了审批。在专利文档中,这项技术被称为基于样式法则的内容无关网格布局。
css grid第一份规范的网址是:https://www.w3.org/TR/css-grid-1
现在所有的主流浏览器全都支持CSS Grid了。
Flexbox
这个是目前主流的布局方式。就不多说了
参考文章:
前端技术演进(四):前端三层结构与应用 https://juejin.im/post/5c137fc96fb9a049e82b677b
转载本站文章《css过去及未来展望—分析css演进及排版布局的考量》,
请注明出处:https://www.zhoulujun.cn/html/webfront/style/cssBase/2020_0520_8436.html
css过去及未来展望—分析css演进及排版布局的考量的更多相关文章
- 20170305深圳Meetup Rails中CSS,JS引用关系分析
新手上路,若有错误请及时提醒 Rails中CSS,JS引用关系分析 一.Rails静态文件存放位置 二.Rails中CSS引用方式 三.Rails中JS引用方式与CSS类似 四.上面都是默认引用app ...
- JS获取元素CSS值的各种方法分析
先来看一个实例:如何获取一个没有设置大小的字体? <!DOCTYPE html> <html lang="en"> <head> <met ...
- CSS技巧(二):CSS hack
什么是CSS hack CSS hack由于不同的浏览器,比如IE6,IE7,Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果. 这个时候我们就需 ...
- CSS减肥的工具–Firefox插件 CSS Usage
首先,我们需要安装Firefox(猛击此处下载),或者确定你已经安装的版本已经高于3.1; 第二步,安装前端开发人员最普及的开发工具 Firebug: 第三步,安装CSS Usage 0.3.4.1: ...
- HTML CSS + DIV实现排版布局
HTML CSS + DIV实现排版布局 1.网页可以看成是由一个一个"盒子"组成,如图: 由上图可以看出,页面分为上(网站导航).中.下(版权声明)三个部分,中间部分又分为左(商 ...
- 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- Normalize.css – 现代 Web 开发必备的 CSS resets
Normalize.css 是一个可定制的 CSS 文件,使浏览器呈现的所有元素,更一致和符合现代标准.它正是针对只需要统一的元素样式.该项目依赖于研究浏览器默认元素风格之间的差异,精确定位需要重置的 ...
- 你真的精通 CSS 了?来挑战一下 CSS 选择器测验吧
CSS 选择器赋予 CSS 强大的 HTML 元素匹配功能.作为前端开发人员必须要掌握的一部分,可能基本的大家都知道.但是你真的精通 CSS 了吗?挑战一下 CSS 选择器测验就知道. 您可能感兴趣的 ...
- CSS易混淆知识点总结与分享-定位与布局
CSS定位有四种模式:static.relative.absolute.fixed,其它static是默认值,下面分别讲解下各自的特点: static:静态定位,处于动态布局流中,按照页面中的各元素先 ...
随机推荐
- [C++]vector的基本的用法
[vector/容器/向量/动态数组]的基本的用法 容器的定义 向量/容器(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container). 跟任意其它类型容器一样,它能够存 ...
- 数据泄露成LLM应用最大障碍,如何用RPA Agent智能体破解谜题?
大语言模型数据泄露堪忧,超自动化Agent成解决之道 数据泄露成LLM应用最大障碍,如何用RPA Agent智能体破解谜题? 从RPA Agent智能体安全机制,看AI Agent如何破解LLM应用安 ...
- DiscuzQ官方最新v3.0.220211源码编译搭建教程和官方部署教程,适合二开(已本地编译通过,无任何错误)
经过长达半个月的研究! 完成这篇DiscuzQ官方最新版本v3.0.220211的源码编译和官方部署教程.适合喜欢二次开发的小伙伴们,已经通过本地编译测试,保证没有任何错误. 具体教程在我搭建的dzq ...
- Spring Boot Bean的多种加载方式
在 Spring Boot 中,您可以以多种方式加载 Bean,这取决于项目的需求和设计.以下是一些常见的加载 Bean 的方式以及相应的示例源代码. 1.组件扫描(Component Scannin ...
- 【uniapp】【微信小程序】【外包杯】如何创建分包
意义:分包可以减少小程序数次启动时的加载时间 1.创建分包的根目录 2.在page.json中,和pages节点平级的位置声明节点,用来定义分包的相关结构 3.在subpkg目录上新建页面 4.完成了
- python3 打包上传pypi失败及解决方法
1.打包及上传 1.1.安装构建和打包工具 pip3 install build # 构建包的工具 pip3 install twine # 上传包的工具 pip3 install wheel #he ...
- 【开源项目推荐】-支持GPT的智能数据库客户端与报表工具——Chat2DB
2023年是人工智能爆火的一年,ChatGPT为首的一系列的大模型的出现,让生成式人工智能彻底火了一把.但有人会说,GPT对于我们数据开发来说并没有什么作用啊? 今天为大家推荐的开源项目,就是GPT在 ...
- 【ASP.NET Core】使用SignalR推送服务器日志
一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API.由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动.经 ...
- ASR项目实战-交付过程中遇到的疑似内存泄漏问题
基于Kaldi实现语音识别时,需要引入一款名为OpenFST的开源软件,本文中提到的内存问题,即和这款软件相关. 考虑到过程比较曲折,内容相对比较长,因此先说结论. 在做长时间的语音识别时,集成了Ka ...
- Ubuntu apt-get 的使用
在Ubuntu中,可以使用apt-get命令来管理软件包.下面是一些常见的apt-get命令及其用法: 安装软件包: sudo apt-get install <package> 其中,& ...