一、背景


翻出我4年前看的《精通CSS》一书,可惜当初没有整理读书笔记的习惯,最近又很少写前端,遂很多东西、知识点遗忘了,恰且现在 css 也有些变化和进步,遂一起打包整理,输出成几篇 blog 系列,以犒自己。

二、HTML


1、什么是 HTML?

超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。

超文本(Hypertext)是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。

2、HTML 历史

1980年,物理学家蒂姆·伯纳斯-李在欧洲核子研究中心(CERN)在承包工程期间,为使CERN的研究人员使用并共享文档,他提出并创建原型系统ENQUIRE。

ENQUIRE 即最早的雏形。

1993年中期,互联网工程任务组(IETF)发布首个HTML规范的提案:超文本标记语言(HTML)互联网草案,由伯纳斯-李与丹·康纳利撰写。

1995年11月24日,HTML 2.0作为IETF RFC 1866发布。

2000年,HTML成为国际标准(ISO/ IEC15445:2000)。

1997年12月18日,HTML 4.0作为W3C推荐标准发布。

1999年12月24日,HTML 4.01作为W3C推荐标准发布。

插曲:这中间 W3C 走向了一条”歪路“,即推出 XHTML(下面会介绍),它是基于 HTML,但借用了 XML 的写法,但太严格、不向后兼容等缺点导致适得其反(尤其是 XHTML2.0 直接在草案阶段就腹死胎中),于是几大浏览器厂商联合起来成立了 WHATWG 制定新的标准,好在 W3C 及时认清回头,加入了 WHATWG 并肩作战,最后推出 HTML5,成为至今的主流。

2014年10月28日,HTML 5作为W3C推荐标准发布。

3、微格式

由于 HTML 中缺少相应的元素,很难突出显示人、地点或日期等类型的信息。为了解决这个问题,有一组开发人员决定开发一套标准的命名约定和标记模式来表示这些数据。这些命名约定基于 vcard 和 icalendar 等现有的数据格式,现在称为微格式(microformat)。

当前有 9 个正式的微格式,还有 14 个格式草案。例如一些:

ロ用于日期、日历和事件的 hCalendar

ロ用于人和组织的 hcard

ロ用于人之间的关系的 XFN

口用于产品说明的 hproduct(草案)

口用于原料和烹调步骤的 hrecipe(草案)

ロ用于产品和事件审查的 hreview(草案)

口用于博客帖子等片段式内容的 hatom(草案)

4、什么是 XML ?

可扩展标记语言(英语:Extensible Markup Language ,XML )。

1、跟 HTML 的共同点:

都是标记语言,为了标记数据的含义。

2、跟 HTML 的不同点:

HTML 只是用来描述网页数据,而是 XML 可以用来描述几乎所有数据。

HTML 的标签是 W3C 制定好的,但 XML 完全可以自定义标签,创造自己的规范。

题外话,笔者之前用到 Web service 技术,用到的数据传输格式就是 XML。

5、什么是 XHTML?

可扩展超文本标记语言(英语:eXtensible HyperText Markup Language,XHTML)

为了约束 HTML 松散的语法,把严格的 XML 套在了 HTML 身上,即诞生了 XHTML。

XHTML 就是以 XML 的语法形式来写 HTML。

语法的严格体现在——例如:

1、元素名称和属性必须小写

2、所有元素必须是封闭的,即要有结束标签。而空元素的话可用/>来结束。

正确:<br />

错误:<br>

3、所有 XHTML 属性必须包含引号

正确:<td rowspan="3">

错误:<td rowspan=3>

4、禁止属性简化

正确:<dl compact="compact">

错误:<dl compact>

5、必须包含一个文件头声明 <!DOCTYPE>

文档标记类型<!DOCTYPE html>用于HTML5

6、语义化HTML

(1)语义化HTML作用

1、利于 SEO (搜索引擎)

2、利于爬虫

3、方便无障碍浏览

(2)例1:strong / em / i / b几个标签的区别

strong 标签表示很强的强调,表现为字体变粗。

em 标签表示稍强的强调,表现为斜体。

i 标签表示因为某种原因和正常文本不同的文本,例如专业术语、外语短语等。

b 标签 没有语义,建议用 css 的 font-weight:bold。

(3)例2:语义化HTML 实例 demo

这里模仿一个文章详情页的网页:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>文章详情</title>
</head>
<body>
<nav>
<ul>
<li>网站导航栏 - 1</li>
<li>网站导航栏 - 2</li>
</ul>
</nav>
<article>
<header>
<h1>文章标题</h1>
<h2>文章副标题</h2>
</header> <aside>
<h1>文章作者</h1>
<p>文章作者简述</p>
<time datetime="2019-07-26" pubdate>文章发布日期</time>
</aside> <figure>
<img src="#" alt="文章配图" />
<figcaption>文章配图说明</figcaption>
</figure> <p>文章内容..</p>
<p>文章内容..</p>
<p>文章内容..</p> <section>
文章互动区(点赞等)
</section> <section>
文章分享区
</section> <article>
<h2>评论区</h2>
<article>
<header>
<h3>评论者: 专业水军</h3>
<p>
<time pubdate datetime="2018-03-23T15:10-08:00">~1 min ago</time>
</p>
</header>
<p>还行</p>
</article> <article>
<header>
<h3>评论者: 大水怪</h3>
<p>
<time pubdate datetime="2018-03-23T15:10-08:00">~1 hour ago</time>
</p>
</header>
<p>楼上说的对</p>
</article>
</article> <footer>
文章版权说明
</footer>
</article>
</body>
</html>

注意点:

1、header 和 footer 适用于 article 或者 整个 body

2、acticle、nav、aside 可以理解为特殊的section,如果可以用 article、nav、aside 就不要用section,实在没有实际意义的就用 div。

(4)语义化HTML的市面使用情况

我这里随便挑了几家,

国外的 medium,支持的还不错。

但国内的知乎、简书,都是 div + span 党,还是不行。


更多的HTML5标签参考:HTML5 标签列表

7、ARIA

ARIA(Accessible Rich Internet Application 无障碍富互联网应用),是能够让残障人士更加便利的访问 Web 的一套机制。

主要通过role和aria-*来标识,例如下面用无语义的 div 实现的进度条:

<div id="percent-loaded" role="progressbar" aria-valuenow="75"
aria-valuemin="0" aria-valuemax="100" />

这里平时的开发几乎不会涉猎,故不做深究。

8、HTML5 的最简格式

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>文档标题</title>
</head>
<body>
文档内容......
</body>
</html>

三、CSS


1、什么是 CSS ?

层叠样式表(英语:Cascading Style Sheets,缩写:CSS)

样式和表很好理解,层叠是什么意思呢?后面的文章我会有详细的介绍。

1、CSS 属于领域专用语言(DSL)

2、CSS区分大小写

2、CSS 的最新版本?

CSS3 是最新的CSS 标准,由万维网联盟(W3C)定义和维护。

3、引入 CSS 的几种方法

方法一 直接 外部样式表 [推荐]
<link rel="stylesheet" type="text/css" href="my.css"/>
方法二 间接 外部样式表
<style type="text/css">
@import "mystyle.css";
</style>

导入样式表比链接样式表慢。

方法三 内部样式表
<style type="text/css">
div{margin: 0;padding: 0;border:1px red solid;}
</style>
方法四 内联样式
<div style="border:1px red solid;">测试信息</div>

4、CSS 语义化

如果说HTML语义化标签是给机器看的,那么CSS命名的语义化就是给人看的。

5、CSS 书写小技巧

(1) 可以去掉小数点前的 0

font-size : .8em

(2) 0后面无需跟单位

.class{padding:0;}

(3) url()里面的value不用加引号

url(images/logo.png)

(4) 有意义的注释

为了使注释更有意义,可以使用关键字来区分重要的注释。我使用 @todo 来表示某些东西需要在以后进行修改、修复或复查,用 @bugfix 表示代码或特定浏览器遇到的问题,用 @workaround 表示并不完普的权宜之计。

6、CSSDOC

貌似很少有人专门去用,暂略。

7、CSS3 新特性

2D、3D 转化、过渡、动画等略

朝花夕拾《精通CSS》一、HTML & CSS 的基础的更多相关文章

  1. Html 之div+css布局之css基础

    Css是什么 CSS即层叠样式表(Cascading StyleSheet). 在网页制作时采用层叠样式表技术,可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控制. 只要对相应的代码 ...

  2. css系列教程--简介及基础语法和注意事项

    css简介:css指的是层叠样式表,cascading style sheets.用来定义html中的dom节点如何展示在页面中的问题.解决了内容与表现形式的分离问题.常见的样式表有外部链接样式表和内 ...

  3. CSS+DIV入门第一天基础视频 CSS选择器层叠性和继承性

    大家好,我是小强老师, 现在网上的CSS+DIV视频,要么讲的太深,要么太浅,很多初学的同学们总是遇到困难,今天小强老师专门给大家准备了css课程的视频.带你从零基础学习CSS+DIV一直到能独立完成 ...

  4. Css入门课程 Css基础

    html css javascript三者关系 html是网页内容的载体 css是网页内容的表现,外观控制 javascript是网页逻辑处理和行为控制 css相对于html标签属性的优势 css简化 ...

  5. css基础-css选择器和css文本样式相关

    css基础-css选择器和css文本样式相关: 使用link链入外部样式,页面加载时会同时加载样式 @import url(“*.css”);使用导入式,页面加载完后,才会加载样式 链接伪类的顺序 : ...

  6. CSS学习笔记1:基础知识

    CSS规则由两部分组成,选择器和声明     选择器:标签,告诉浏览器哪些标签需要用到这个样式     声明:样式的内容,由一或多对属性:值以:隔开组成,由{}包围,需要多个选择器时以逗号隔开     ...

  7. CSS从零开始(1)--CSS基础语法

    1.CSS语法 CSS规则有两个主要部分构成:选择器,以及一条或多条说明. 例如:selector{declaration1;declaration2;declaration3;......;} 注: ...

  8. 前端基础----CSS语法、CSS四种引入方式、CSS选择器、CSS属性操作

    一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如: h1 {color:red; font-size:14px;} 二.CSS四种引入方式 1,行内式 行内式是在标 ...

  9. [HTML & CSS] HTML和CSS基础知识

    最近将博客简单地修饰了下,需要用到HTML和CSS代码,花了一天时间学习了一下这两方面的知识.虽然内容很简单,但是足够用来修改自己的博客了. 1. HTML 1.1. HTML介绍 HTML与CSS的 ...

  10. 关于CSS你应该知道的基础知识 - 样式应用篇

    上一篇简单总结了一下选择器,如果一个元素被多个选择器选中,元素的样式就会以级联方式被应用到.要搞清最终那个样式被应用到元素上了,首先要明白引用CSS代码的几种方式. CSS代码引用方式 如何应用CSS ...

随机推荐

  1. Java读取Properties文件 Java加载配置Properties文件

    static{ Properties prop = new Properties(); prop.load(Thread.currentThread().getContextClassLoader() ...

  2. 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

    一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...

  3. ssm项目集成

    ssm项目集成 说明:ssm指的是 spring + springMvc+ mybatis,是目前开发比较流行的集成方式,可以较好的实现前后端分离 spring与mybatis的集成,是通过配置文件a ...

  4. webpack打包出现WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. 错误

    打包运行的时候出现以下错误 WARNING in configurationThe 'mode' option has not been set, webpack will fallback to ' ...

  5. Python 分析电影《南方车站的聚会》

    <南方车站的聚会>由刁亦男执导,主要演员包括:胡歌.桂纶镁.廖凡.万茜等,该片于 2019 年 5 月 18 在戛纳电影节首映,2019 年 12 月 6 日在中国正式上映.故事灵感来自真 ...

  6. java8-从Lamda到方法引用和构造引用

    一方法引用概述 经过前面2章Lamda原理引入和Lamda解析,基本就会熟练使用Lamda表达式,这次我们更深入点.来了解一下方法引用. 方法引用是特定Lamda表达式的一种简写,其思路就是能替换La ...

  7. 用函数式编程,从0开发3D引擎和编辑器(二):函数式编程准备

    大家好,本文介绍了本系列涉及到的函数式编程的主要知识点,为正式开发做好了准备. 函数式编程的优点 1.粒度小 相比面向对象编程以类为单位,函数式编程以函数为单位,粒度更小. 正所谓: 我只想要一个香蕉 ...

  8. Java题库——Chapter17 二进制I/0

    Introduction to Java Programming 的最后一章,完结撒花!Chapter 17 Binary I/O Section 17.2 How is I/O Handled in ...

  9. sql server的简单分页

    --显示前条数据 select top(4) * from students; --pageSize:每页显示的条数 --pageNow:当前页 )) sno from students); --带条 ...

  10. Web安全测试学习笔记-DVWA-盲注(使用sqlmap)

    之前的sql注入页面(https://www.cnblogs.com/sallyzhang/p/11843291.html),返回了查询结果和错误信息.而下面的页面,返回信息只有存在和不存在两种情况, ...