博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.CSS简介
阅读量:4606 次
发布时间:2019-06-09

本文共 2495 字,大约阅读时间需要 8 分钟。

1996年 CSS1

1998年 CSS2

2001年 CSS3(分为不同的模块,陆续推出)

2007年 CSS2.1

......

一、CSS历史

HTML被设计的初衷是用于表示文档的内容和结构

通过使用<h1><p><table>这样的标签,来表明“这是一级标题”、“这是段落”、“这是表格”——同时文档布局和外观完全由用户代理(通常是浏览器)来决定,那个时候HTML并不关心外观,它只是一种简洁的小型标记机制

但是,对于网页样式多样性的需求不断增加,导致当时两种主要的浏览器(Netscape 和 IE)不断地将新的HTML标签和HTML特性(比如<font><big>等)添加到HTML规范中,他们大多仅仅是负责表现页面样式

突然之间,原本用于描述结构的语言开始描述外在表现了,虽然网页内容看上不是那么单调了,但是从此开始,创建文档结构清晰、独立于表现层、且具有良好语义的网页变得越来越困难

这还导致了以下一些问题

  • 页面没有语义,可用性降低(对于盲人、对于语音浏览器)
  • 对于搜索引擎优化不利(搜索引擎就是最活跃的盲人用户)
  • 页面可读性差,不易于维护

为了解决这个问题,万维网联盟(W3C,非营利Web标准化联盟),肩负起了HTML标准化的使命,并在HTML 4.0 之外创造出了CSS

严格来讲,HTML和CSS并不算是编程语言,而是用来标记内容和为内容提供样式的一种机制

CSS定义了如何显示HTML元素——通过仅仅编辑一个简单的 CSS 文档(样式表),就能够同时改变站点中几乎所有页面的布局和外观,大大简化了工作,并且易于修改和维护

CSS的出现解决了内容与表现分离的问题,即

  • HTML用来定义一个文档的结构(内容)
  • CSS用来定义一个文档的外观(表现)
  • JS用来定义一个文档的行为(交互)

二、CSS定义

CSS即层叠样式表(Cascading Style Sheet),定义了如何显示HTML元素

CSS不需要编译,直接由浏览器解释执行

CSS文件的后缀名为.css

三、CSS使用

使用CSS有以下4种方式

1、内联样式(行内样式)——不推荐

通过html元素的style特性来添加样式,使用分号分隔多个声明

段落内容

2、嵌入样式(页面样式)——不推荐

通过位于head标签内的style标签来添加样式(可选的media特性,指定媒体类型)

3、外部样式(链接样式)——真正实现内容与表现分离

通过位于head标签内的link标签(自闭合)来添加外部CSS文件

外部样式表中只能出现CSS规则和CSS注释

当指定了媒体类型(media)之后,只有符合条件的媒体类型才会加载此样式表(具体内容在媒体查询一节详述)

4、@import规则——不推荐

该规则位于style元素内部或者外部样式表中,并且必须出现在其他所有CSS规则之前

@import url(../test.css);@import "../test.css";@import url(../test.css) screen;
小结:方式3和4的区别

首先,外部样式使用的是html的link标签(是html级别的),link标签除了引入样式表之外,还有其他作用,而@import规则使用的是CSS规则(是CSS级别的),必须包含在style元素或者CSS文件内,且要位于任何规则之前

link标签可以引入候选样式表,而@import规则不可以

其次,link引入的样式会同html页面同时加载,而@import规则引入的CSS会等到页面全部下载完成后才加载,所以会使页面闪烁(出现无样式的页面,后恢复)

当浏览器遇到style或link元素时,会停止对html的解析,转而下载/解析CSS代码(阻塞式),解析完毕后,转而继续解析html文档,所以要把样式表放在前面,先渲染CSS,保证样式提前加载,避免出现页面“闪烁”

最后,@import规则会在外部样式表中再次引入其它样式表,会对服务器产生过多http请求,加重服务器负担(这也是不建议使用的根本原因)

使用打包构建工具的前提下,@import规则是可以无忧使用的

四、CSS编码

必须采用UTF-8的编码格式来书写和保存CSS文件

如果不能保证文件格式是UTF-8,那么就必须在CSS文件的最顶部书写如下规则(不是最顶部的话,会失效)

@charset "utf-8";   /*强制文件使用UTF-8编码,分号是必须的*//*即使能够保证文件格式是UTF-8,也总应该写上这条规则,因为如果不写的话,浏览器查看源代码时,中文注释就是乱码了*/

五、CSS语法

一个CSS文件,由很多CSS规则和CSS注释构成

1、CSS规则

一条CSS规则,由选择器声明块构成

一个声明块可以包含多条声明,每条声明以分号分隔

一条CSS声明,由很多属性和值构成,属性和值以冒号分隔

div {width:120px;height:120px;}

每条声明必须以分号结束,以告知浏览器正确解析不同的声明

最后一条声明的分号可选,但应该总是加上,方便以后扩展

浏览器会忽略样式表中多余的空白符,因此可以保持适当的缩进,增加代码可读性

2、CSS注释

除了CSS规则外,CSS文件里就只能写CSS注释了

CSS注释只有一种格式,那就是

/*注释内容,不可嵌套,没有//这种单行注释!*/

六、大小写

涉及到CSS的大部分内容都是不区分大小写的,例如大部分选择器,所有属性和属性值

div {margin:10px;}  /*都一样*/DIV {MARGIN:10PX;}Div {Margin:10Px;}

但是,涉及到类选择器、ID选择器、特性选择器等时,是区分大小写的,要严格跟HTML中的特性匹配

div[class="abc"] {}  /*不一样*/div[class="Abc"] {}.abc {}  /*不一样*/.Abc {}

转载于:https://www.cnblogs.com/zoustrong/p/11090321.html

你可能感兴趣的文章
java 中 “==” 和 equals 的区别
查看>>
web工程迁移---weblogic8迁移到jboss5遇到的异常
查看>>
live555中类关系与数据结构
查看>>
SPOJ COT Count on a tree 主席树
查看>>
Python中的sort()
查看>>
(转)centos liveCD liveDVD netinstall minimal DVD1 DVD2 版本区别
查看>>
ansible-playbook api 2.0 运行项目
查看>>
leetcode 538. 把二叉搜索树转换为累加树(Convert BST to Greater Tree)
查看>>
self与super的区别
查看>>
leetcode: Add Two Numbers
查看>>
【BZOJ1001】狼抓兔子
查看>>
共享锁(S锁)和排它锁(X锁)
查看>>
nginx安装方式
查看>>
[转]BP人工神经网络的介绍与实现
查看>>
近期oepnfire工作总结.
查看>>
查看安装的模块
查看>>
测试用例的设计方法(全)
查看>>
JS倒计时代码
查看>>
Linq中使用反射实现--LINQ通用数据表绑定DataGrid控件的方法(原创)
查看>>
【Web安全】DoS及其家族
查看>>