HTML,css,js,php

HTML

HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。 [1]

超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。 [11]

HTML是一种基础技术,常与CSS、JavaScript一起被众多网站用于设计网页、网页应用程序以及移动应用程序的用户界面 [12]。网页浏览器可以读取HTML文件,并将其渲染成可视化网页。HTML描述了一个网站的结构语义随着线索的呈现,使之成为一种标记语言而非编程语言。

HTML元素是构建网站的基石。HTML允许嵌入图像与对象,并且可以用于创建交互式表单,它被用来结构化信息——例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。HTML的语言形式为尖括号包围的HTML元素(如),浏览器使用HTML标签和脚本来诠释网页内容,但不会将它们显示在页面上。

特点:超文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是万维网(WWW)盛行的原因之一,其主要特点如下: [4]

    简易性:超文本标记语言版本升级采用超集方式,从而更加灵活方便。 [4]

    可扩展性:超文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超文本标记语言采取子类元素的方式,为系统扩展带来保证。 [4]

    平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。 [4]

    通用性:另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。 [4]超文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是万维网(WWW)盛行的原因之一,其主要特点如下: [4]

    1. 简易性:超文本标记语言版本升级采用超集方式,从而更加灵活方便。 [4]
    2. 可扩展性:超文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超文本标记语言采取子类元素的方式,为系统扩展带来保证。 [4]
    3. 平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。 [4]
    4. 通用性:另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。 [4]

编辑

HTML其实是文本,它需要浏览器的解释,它的编辑器大体可以分为以下几种:

    基本文本、文档编辑软件,使用微软自带的记事本写字板都可以编写,当然,如果用WPS或Word来编写也可以,不过保存时请使用.htm或.html作为扩展名,这样就方便浏览器认出直接解释执行了。 [7]

    半所见即所得软件,如:FCK-Editer、E-webediter等在线网页编辑器;尤其推荐:[Sublime Text](https://baike.baidu.com/item/Sublime Text/0?fromModule=lemma_inlink)代码编辑器(由Jon Skinner开发,[Sublime Text](https://baike.baidu.com/item/Sublime Text/6284835?fromModule=lemma_inlink)2收费但可以无限期试用)。 [7]

    所见即所得软件,使用最广泛的编辑器,完全可以一点不懂HTML的知识就可以做出网页,如:AMAYA(出品单位:万维网联盟);FRONTPAGE(出品单位:微软);Dreamweaver(出品单位Adobe)。[Microsoft Visual Studio](https://baike.baidu.com/item/Microsoft Visual Studio/4735644?fromModule=lemma_inlink)(出品公司:微软):其中所见即所得软件与半所见即所得的软件相比,开发速度更快,效率更高,且直观的表现更强。任何地方进行修改只需要刷新即可显示。缺点是生成的代码结构复杂,不利于大型网站的多人协作和精准定位等高级功能的实现。 [7]

HTML其实是文本,它需要浏览器的解释,它的编辑器大体可以分为以下几种:

  1. 基本文本、文档编辑软件,使用微软自带的记事本写字板都可以编写,当然,如果用WPS或Word来编写也可以,不过保存时请使用.htm或.html作为扩展名,这样就方便浏览器认出直接解释执行了。 [7]
  2. 半所见即所得软件,如:FCK-Editer、E-webediter等在线网页编辑器;尤其推荐:[Sublime Text](https://baike.baidu.com/item/Sublime Text/0?fromModule=lemma_inlink)代码编辑器(由Jon Skinner开发,[Sublime Text](https://baike.baidu.com/item/Sublime Text/6284835?fromModule=lemma_inlink)2收费但可以无限期试用)。 [7]
  3. 所见即所得软件,使用最广泛的编辑器,完全可以一点不懂HTML的知识就可以做出网页,如:AMAYA(出品单位:万维网联盟);FRONTPAGE(出品单位:微软);Dreamweaver(出品单位Adobe)。[Microsoft Visual Studio](https://baike.baidu.com/item/Microsoft Visual Studio/4735644?fromModule=lemma_inlink)(出品公司:微软):其中所见即所得软件与半所见即所得的软件相比,开发速度更快,效率更高,且直观的表现更强。任何地方进行修改只需要刷新即可显示。缺点是生成的代码结构复杂,不利于大型网站的多人协作和精准定位等高级功能的实现。 [7]
字符 实体名称 实体编号 描述 字符 实体名称 实体编号 描述
& & & 与符号 (空格)     不间断空格
< < < 小于号 ¬ ¬ ¬ 逻辑非符号
> > > 大于号 µ µ µ 微符号
" " " 双引号 平方根
' ' 单引号 求和符号
欧元符号 乘积符号
¥ ¥ ¥ 日元符号 偏导符号
£ £ £ 英镑符号 积分符号
§ § § 段落符号 向量微分符号
换行符号 成比例符号
¢ ¢ ¢ 分币符号 约等于符号
无限符号 不等号
± ± ± 正负号 小于或等于
× × × 乘号 大于或等于
÷ ÷ ÷ 除号 直和符号
子集等于符号 张量积符号
超集等于符号 交集符号
左右箭头 并集符号
向上箭头 空集符号
向下箭头 属于符号
向右箭头 不属于符号
向左箭头 存在符号
回车箭头符号 对所有符号
复选标记 子集符号
错误标记 超集符号
黑桃符号 男性符号
红心符号 女性符号
方块符号 笑脸
梅花符号 &sad; 哭脸字符

数据类型

imgHTML示例

超文本标记语言定义了多种数据类型的元素内容,如脚本数据和样式表的数据,和众多类型的属性值,包括ID、名称、URI、数字、长度单位、语言、媒体描述符、颜色、字符编码、日期和时间等。所有这些数据类型都是专业的字符数据。 [9]

整体结构

播报

一个网页对应多个HTML文件,超文本标记语言文件以.htm或.html(外语缩写)为扩展名(其中.htm是因为之前的文件系统只支持最多三位扩展名)。可以使用任何能够生成TXT类型源文件文本编辑器来产生超文本标记语言文件,只用修改文件后缀即可。标准的超文本标记语言文件都具有一个基本的整体结构,标记一般都是成对出现(部分标记除外例如:
),即超文本标记语言文件的开头与结尾标志和超文本标记语言的头部与实体两大部分。这些成对出现的标签中,第一个标签是开始标签,第二个标签是结束标签。两个标签之间为元素的内容,有些标签没有内容,为空元素,如有三个双标记符用于页面整体结构的确认。 [10]

部分标记也可以不成对出现,如

,但是一般并不赞同这样做。

标记符,说明该文件是用超文本标记语言来描述的,它是文件的开头;而,则表示该文件的结尾,它们是超文本标记语言文件的开始标记和结尾标记。 [10]

头部内容

标记符:说明该文件是用超文本标记语言来描述的,它是文件的开头,而则表示该文件的结尾,它们是超文本标记语言文件的开始标记和结尾标记。 [10]

<head>:这2个标记符分别表示头部信息的开始和结尾。头部中包含的标记是页面的标题、序言、说明等内容,它本身不作为内容来显示,但影响网页显示的效果。头部中最常用的标记符是标题标记符和meta标记符,其中标题标记符用于定义网页的标题,它的内容显示在网页窗口的标题栏中,网页标题可被浏览器用做书签和收藏清单。 [10]

以下表格列出了 HTML head 元素:

标签 描述
定义了文档的信息
定义了文档的标题
定义了页面链接标签的默认链接地址
定义了一个文档和外部资源之间的关系
定义了HTML文档中的元数据

主体内容

<body>;,网页中显示的实际内容均包含在这2个正文标记符之间。正文标记符又称为实体标记。 [10]

  • 标题:总共有6个等级,定义方法如下
定义[一级标题](https://baike.baidu.com/item/一级标题/8643526?fromModule=lemma_inlink)
定义二级标题
定义三级标题
定义四级标题
定义五级标题
定义六级标题

以此类推

  • 文本

定义文本
  • 换行符


换行符

相关要求

播报

在编辑超文本标记语言文件和使用有关标记符时有一些约定或默认的要求。 [9]

    文本标记语言源程序的文件扩展名默认使用htm(磁盘操作系统DOS限制的外语缩写为扩展名)或html(外语缩写为扩展名),以便于操作系统程序辨认,除自定义的汉字扩展名。在使用文本编辑器时,注意修改扩展名。而常用的图像文件扩展名gifjpg。 [9]

    超文本标记语言源程序为文本文件,其列宽可不受限制,即多个标记可写成一行,甚至整个文件可写成一行;若写成多行,浏览器一般忽略文件中的回车符(标记指定除外);对文件中的空格通常也不按源程序中的效果显示。完整的空格可使用特殊符号(实体符)“&nbsp(注意此字母必须小写,方可空格)”表示非换行空格;表示文件路径时使用符号“/”分隔,文件名及路径描述可用双引号也可不用引号括起。 [9]

    标记符中的标记元素用尖括号括起来,带斜杠的元素表示该标记说明结束;大多数标记符必须成对使用,以表示作用的起始和结束;标记元素忽略大小写,即其作用相同,但完整的空格可使用特殊符号“&nbsp(注意此字母必须小写,方可空格)”;许多标记元素具有属性说明,可用参数对元素作进一步的限定,多个参数属性项说明次序不限,其间用空格分隔即可;一个标记元素的内容可以写成多行。 [9]

    标记符号,包括尖括号、标记元素、属性项等必须使用半角的西文字符,而不能使用全角字符。 [9]

    HTML注释由" “结束,例如 。注释内容可插入文本中任何位置。任何标记若在其最前插入感叹号,即被标识为注释,不予显示。 [9]相关要求

    播报

    在编辑超文本标记语言文件和使用有关标记符时有一些约定或默认的要求。 [9]

      文本标记语言源程序的文件扩展名默认使用htm(磁盘操作系统DOS限制的外语缩写为扩展名)或html(外语缩写为扩展名),以便于操作系统程序辨认,除自定义的汉字扩展名。在使用文本编辑器时,注意修改扩展名。而常用的图像文件扩展名gifjpg。 [9]

      超文本标记语言源程序为文本文件,其列宽可不受限制,即多个标记可写成一行,甚至整个文件可写成一行;若写成多行,浏览器一般忽略文件中的回车符(标记指定除外);对文件中的空格通常也不按源程序中的效果显示。完整的空格可使用特殊符号(实体符)“&nbsp(注意此字母必须小写,方可空格)”表示非换行空格;表示文件路径时使用符号“/”分隔,文件名及路径描述可用双引号也可不用引号括起。 [9]

      标记符中的标记元素用尖括号括起来,带斜杠的元素表示该标记说明结束;大多数标记符必须成对使用,以表示作用的起始和结束;标记元素忽略大小写,即其作用相同,但完整的空格可使用特殊符号“&nbsp(注意此字母必须小写,方可空格)”;许多标记元素具有属性说明,可用参数对元素作进一步的限定,多个参数属性项说明次序不限,其间用空格分隔即可;一个标记元素的内容可以写成多行。 [9]

      标记符号,包括尖括号、标记元素、属性项等必须使用半角的西文字符,而不能使用全角字符。 [9]

      HTML注释由" “结束,例如 。注释内容可插入文本中任何位置。任何标记若在其最前插入感叹号,即被标识为注释,不予显示。 [9]

css

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 [1]

CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。 [2]

编程工具

记事本:使用Windows系统自带的记事本可以编辑网页。只需要在保存文档时,以.html为后缀名进行保存即可。 [6]

Dreamweaver:它与Flash、Fireworks并称网页三剑客。Dreamweaver是集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别开发的视觉化网页开发工具,利用它可以轻而易举地制作出充满动感的网页。 [7]

语言特点

播报

编辑

CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。

总体来说,CSS具有以下特点:

丰富的样式定义

CSS提供了丰富的文档样式外观,以及设置文本和背景属性的能力;允许为任何元素创建边框,以及元素边框与其他元素间的距离,以及元素边框与元素内容间的距离;允许随意改变文本的大小写方式、修饰方式以及其他页面效果。

易于使用和修改

CSS可以将样式定义在HTML元素的style属性中,也可以将其定义在HTML文档的header部分,也可以将样式声明在一个专门的CSS文件中,以供HTML页面引用。总之,CSS样式表可以将所有的样式声明统一存放,进行统一管理。另外,可以将相同样式的元素进行归类,使用同一个样式进行定义,也可以将某个样式应用到所有同名的HTML标签中,也可以将一个CSS样式指定到某个页面元素中。如果要修改样式,只需要在样式列表中找到相应的样式声明进行修改。

多页面应用CSS样式表可以单独存放在一个CSS文件中,这样就可以在多个页面中使用同一个CSS样式表。CSS样式表理论上不属于任何页面文件,在任何页面文件中都可以将其引用。这样就可以实现多个页面风格的统一。

层叠

简单的说,层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。例如对一个站点中的多个页面使用了同一套CSS样式表,而某些页面中的某些元素想使用其他样式,就可以针对这些样式单独定义一个样式表应用到页面中。这些后来定义的样式将对前面的样式设置进行重写,在浏览器中看到的将是最后面设置的样式效果。

页面压缩

在使用HTML定义页面效果的网站中,往往需要大量或重复的表格和font元素形成各种规格的文字样式,这样做的后果就是会产生大量的HTML标签,从而使页面文件的大小增加。而将样式的声明单独放到CSS样式表中,可以大大的减小页面的体积,这样在加载页面时使用的时间也会大大的减少。另外,CSS样式表的复用更大程度的缩减了页面的体积,减少下载的时间。 [8]

工作原理

播报

编辑

CSS是一种定义样式结构如字体、颜色、位置等的语言,被用于描述网页上的信息格式化和显示的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式,样式单包含将样式应用到指定类型的元素的规则。外部使用时,样式单规则被放置在一个带有文件扩展名_css的外部样式单文档中。

样式规则是可应用于网页中元素,如文本段落或链接的格式化指令。样式规则由一个或多个样式属性及其值组成。内部样式单直接放在网页中,外部样式单保存在独立的文档中,网页通过一个特殊标签链接外部样式单。

名称CSS中的“层叠(cascading)”表示样式单规则应用于HTML文档元素的方式。具体地说,CSS样式单中的样式形成一个层次结构,更具体的样式覆盖通用样式。样式规则的优先级由CSS根据这个层次结构决定,从而实现级联效果。 [9]

语言基础

播报

编辑

属性和属性值

属性

属性的名字是一个合法的标识符,它们是CSS语法中的关键字。一种属性规定了格式修饰的一个方面。例如:color是文本的颜色属性,而text-indent则规定了段落的缩进。

要掌握一个属性的用法,有六个方面需要了解。具体叙述如下:

①该属性的合法属性值(legal value)。显然段落缩进属性text-indent只能赋给一个表示长度的值,而表示背景图案的background.image属性则应该取一个表示图片位置链接的值或者是关键字none表示不用背景图案。

②该属性的默认值(initial value)。当在样式表单中没有规定该属性,而且该属性不能从它的父级元素那儿继承的时候,则浏览器将认为该属性取它的默认值。

③该属性所适用的元素(Applies to)。有的属性只适用于某些个别的元素,比如white-space属性就只适用于块级元素。white-space属性可以取normal、pre和nowrap三个值。当取normal的时候,浏览器将忽略掉连续的空白字符,而只显示一个空白字符。当取pre的时候,则保留连续的空白字符。而取nowrap的时候,连续的空白字符被忽略,而且不自动换行。

④该属性的值是否被下一级继承(inherited)。

⑤如果该属性能取百分值(percentage),那么该百分值将如何解释。也就是百分值所相对的标准是什么。如margin属性可以取百分值,它是相对于margin所存元素的容器的宽度。

⑥该属性所属的媒介类型组(media groups)。

属性值

①整数和实数

这和普通意义上的整数和实数没有多大区别。在CSS中只能使用浮点小数,而不能像其他编程语言那样使用科学记数法表示实数,即1.2E3在CSS中将是不合法的。下面是几个正确的例子,整数:128、-313,实数:12.20、1415、-12.03。

②长度量

一个长度量由整数或实数加上相应的长度单位组成。长度量常用来对元素定位。而定位分为绝对定位和相对定位,因而长度单位也分为相对长度单位和绝对长度单位。

相对长度单位有:em——当前字体的高度,也就是font.size属性的值;ex——当前字体中小写字母x的高度;Dx——一个像素的长度,其实际的长度由显示器的设置决定。

另一一点值得注意的是,子级元素不继承父级元素的相对长度值,只继承它们的实际计算值。

③百分数量(percentages

百分数量就是数字加上百分号。显然,百分数量总是相对的,所以和相对长度量一样,百分数量不被子级元素继承。 [10]

选择器

类型选择器

CSS中的一种选择器是元素类型的名称。使用这种选择器(称为类型选择器),可以向这种元素类型的每个实例上应用声明。例如,以下简单规则的选择器是H1,因此规则作用于文档中所有的H1元素:

1H1{color:red,font-size:16px,margin:0px}

简单属性选择器

CLASS属性

CLASS属性允许向一组在CLASS属性上具有相同值的元素应用声明。BODY内的所有元素都有CLASS属性。从本质上讲,可以使用CLASS属性来分类元素,在样式表中创建规则来引用CLASS属性的值,然后浏览器自动将这些属性应用到该组元素。

类选择器以标志符(句点)开头,用于指示后面是哪种类型的选择器。对于类选择器,之所以选择句点是因为在很多编程语言中它与术语“类”相关联。翻译成英语,标志符表示“带有类名的元素”。

ID属性

ID属性的操作类似于CLASS属性,但有一点重要的不同之处:ID属性的值在整篇文档中必须是唯一的。这使得ID属性可用于设置单个元素的样式规则。包含ID属性的选择器称为ID选择器。

需要注意的是,ID选择器的标志符是散列符号(#)。标志符用来提醒浏览器接下来出现的是ID值。

STYLE属性

尽管在选择器中可以使用CLASS和ID属性值,STYLE属性实际上可以替代整个选择器机制。不是只具有一个能够在选择器中引用的值(这正是ID和CLASS具有的值),STYLE属性的值实际上是一个或多个CSS声明。

通常情况下,使用CSS,设计者将把所有的样式规则置于一个样式表中,该样式表位于文档顶部的STYLE元素内(或在外部进行链接)。但是,使用STYLE属性能够绕过样式表将声明直接放置到文档的开始标记中。

组合选择器类型

可以将类型选择器、ID选择器和类选择器组合成不同的选择器类型来构成更复杂的选择器。通过组合选择器,可以更加精确地处理希望赋予某种表示的元素。例如,要组合类型选择器和类选择器,一个元素必须满足两个要求:它必须是正确的类型和正确的类以便使样式规则可以作用于它。

外部信息:伪类和伪元素

在CSS1中,样式通常是基于在HTML源代码中出现的标记和属性。对于很多设计情景而言这种做法完全可行,但是它无法实现设计者希望获得的一些常见的设计效果。

设计伪类和伪元素可以实现其中的一些效果。这两种机制扩充了CSS的表现能力。在CSS1中,使用伪类可以根据一些情况改变文档中链接的样式,如根据链接是否被访问,何时被访问以及用户和文档的交互方式来应用改变。借助于伪元素,可以更改元素的第一个字母和第一行的样式,或者添加源文档中没有出现过的元素。

伪类和伪元素都不存在于HTML;也就是说,它们在HTML代码中是不可见的。这两种机制都得到了精心设计以便能够在CSS以后的版本中做进一步地扩充;也就是说实现更多的效果。 [11]

语言标准

播报

编辑

在CSS 2.1规范中,识别符(包括选择符中的元素名、类、ID)只能包含A~Z、a~z、0~9等字符,加上连字符“-”、下划线“_”。识别符不能以数字开头,以连字符和下划线开头也是不允许的。只有属性、属性值、单位、伪类、伪元素和“@”规则可以由连字符“-”开头。同时,其他元素名称、类和ID标识符也不允许用连字符开头。

CSS的识别符也需要用反斜杠“\”规避特殊字符,这些规避字符遵循IS010646规范。特殊字符的规避方法有两种:第一种方法是遇到特殊字符则在这些字符前直接添加反斜杠,例如,“AT&T”变为“AT&T”;另一种方法为用反斜杠和Unicode或IS010646等值的十六进制数值一起,规避特殊字符,例如,“AT&T”变为“AT\26T”。 [12]语言特点

播报

编辑

CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。

总体来说,CSS具有以下特点:

丰富的样式定义

CSS提供了丰富的文档样式外观,以及设置文本和背景属性的能力;允许为任何元素创建边框,以及元素边框与其他元素间的距离,以及元素边框与元素内容间的距离;允许随意改变文本的大小写方式、修饰方式以及其他页面效果。

易于使用和修改

CSS可以将样式定义在HTML元素的style属性中,也可以将其定义在HTML文档的header部分,也可以将样式声明在一个专门的CSS文件中,以供HTML页面引用。总之,CSS样式表可以将所有的样式声明统一存放,进行统一管理。另外,可以将相同样式的元素进行归类,使用同一个样式进行定义,也可以将某个样式应用到所有同名的HTML标签中,也可以将一个CSS样式指定到某个页面元素中。如果要修改样式,只需要在样式列表中找到相应的样式声明进行修改。

多页面应用CSS样式表可以单独存放在一个CSS文件中,这样就可以在多个页面中使用同一个CSS样式表。CSS样式表理论上不属于任何页面文件,在任何页面文件中都可以将其引用。这样就可以实现多个页面风格的统一。

层叠

简单的说,层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。例如对一个站点中的多个页面使用了同一套CSS样式表,而某些页面中的某些元素想使用其他样式,就可以针对这些样式单独定义一个样式表应用到页面中。这些后来定义的样式将对前面的样式设置进行重写,在浏览器中看到的将是最后面设置的样式效果。

页面压缩

在使用HTML定义页面效果的网站中,往往需要大量或重复的表格和font元素形成各种规格的文字样式,这样做的后果就是会产生大量的HTML标签,从而使页面文件的大小增加。而将样式的声明单独放到CSS样式表中,可以大大的减小页面的体积,这样在加载页面时使用的时间也会大大的减少。另外,CSS样式表的复用更大程度的缩减了页面的体积,减少下载的时间。 [8]

工作原理

播报

编辑

CSS是一种定义样式结构如字体、颜色、位置等的语言,被用于描述网页上的信息格式化和显示的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式,样式单包含将样式应用到指定类型的元素的规则。外部使用时,样式单规则被放置在一个带有文件扩展名_css的外部样式单文档中。

样式规则是可应用于网页中元素,如文本段落或链接的格式化指令。样式规则由一个或多个样式属性及其值组成。内部样式单直接放在网页中,外部样式单保存在独立的文档中,网页通过一个特殊标签链接外部样式单。

名称CSS中的“层叠(cascading)”表示样式单规则应用于HTML文档元素的方式。具体地说,CSS样式单中的样式形成一个层次结构,更具体的样式覆盖通用样式。样式规则的优先级由CSS根据这个层次结构决定,从而实现级联效果。 [9]

语言基础

播报

编辑

属性和属性值

属性

属性的名字是一个合法的标识符,它们是CSS语法中的关键字。一种属性规定了格式修饰的一个方面。例如:color是文本的颜色属性,而text-indent则规定了段落的缩进。

要掌握一个属性的用法,有六个方面需要了解。具体叙述如下:

①该属性的合法属性值(legal value)。显然段落缩进属性text-indent只能赋给一个表示长度的值,而表示背景图案的background.image属性则应该取一个表示图片位置链接的值或者是关键字none表示不用背景图案。

②该属性的默认值(initial value)。当在样式表单中没有规定该属性,而且该属性不能从它的父级元素那儿继承的时候,则浏览器将认为该属性取它的默认值。

③该属性所适用的元素(Applies to)。有的属性只适用于某些个别的元素,比如white-space属性就只适用于块级元素。white-space属性可以取normal、pre和nowrap三个值。当取normal的时候,浏览器将忽略掉连续的空白字符,而只显示一个空白字符。当取pre的时候,则保留连续的空白字符。而取nowrap的时候,连续的空白字符被忽略,而且不自动换行。

④该属性的值是否被下一级继承(inherited)。

⑤如果该属性能取百分值(percentage),那么该百分值将如何解释。也就是百分值所相对的标准是什么。如margin属性可以取百分值,它是相对于margin所存元素的容器的宽度。

⑥该属性所属的媒介类型组(media groups)。

属性值

①整数和实数

这和普通意义上的整数和实数没有多大区别。在CSS中只能使用浮点小数,而不能像其他编程语言那样使用科学记数法表示实数,即1.2E3在CSS中将是不合法的。下面是几个正确的例子,整数:128、-313,实数:12.20、1415、-12.03。

②长度量

一个长度量由整数或实数加上相应的长度单位组成。长度量常用来对元素定位。而定位分为绝对定位和相对定位,因而长度单位也分为相对长度单位和绝对长度单位。

相对长度单位有:em——当前字体的高度,也就是font.size属性的值;ex——当前字体中小写字母x的高度;Dx——一个像素的长度,其实际的长度由显示器的设置决定。

另一一点值得注意的是,子级元素不继承父级元素的相对长度值,只继承它们的实际计算值。

③百分数量(percentages

百分数量就是数字加上百分号。显然,百分数量总是相对的,所以和相对长度量一样,百分数量不被子级元素继承。 [10]

选择器

类型选择器

CSS中的一种选择器是元素类型的名称。使用这种选择器(称为类型选择器),可以向这种元素类型的每个实例上应用声明。例如,以下简单规则的选择器是H1,因此规则作用于文档中所有的H1元素:

1H1{color:red,font-size:16px,margin:0px}

简单属性选择器

CLASS属性

CLASS属性允许向一组在CLASS属性上具有相同值的元素应用声明。BODY内的所有元素都有CLASS属性。从本质上讲,可以使用CLASS属性来分类元素,在样式表中创建规则来引用CLASS属性的值,然后浏览器自动将这些属性应用到该组元素。

类选择器以标志符(句点)开头,用于指示后面是哪种类型的选择器。对于类选择器,之所以选择句点是因为在很多编程语言中它与术语“类”相关联。翻译成英语,标志符表示“带有类名的元素”。

ID属性

ID属性的操作类似于CLASS属性,但有一点重要的不同之处:ID属性的值在整篇文档中必须是唯一的。这使得ID属性可用于设置单个元素的样式规则。包含ID属性的选择器称为ID选择器。

需要注意的是,ID选择器的标志符是散列符号(#)。标志符用来提醒浏览器接下来出现的是ID值。

STYLE属性

尽管在选择器中可以使用CLASS和ID属性值,STYLE属性实际上可以替代整个选择器机制。不是只具有一个能够在选择器中引用的值(这正是ID和CLASS具有的值),STYLE属性的值实际上是一个或多个CSS声明。

通常情况下,使用CSS,设计者将把所有的样式规则置于一个样式表中,该样式表位于文档顶部的STYLE元素内(或在外部进行链接)。但是,使用STYLE属性能够绕过样式表将声明直接放置到文档的开始标记中。

组合选择器类型

可以将类型选择器、ID选择器和类选择器组合成不同的选择器类型来构成更复杂的选择器。通过组合选择器,可以更加精确地处理希望赋予某种表示的元素。例如,要组合类型选择器和类选择器,一个元素必须满足两个要求:它必须是正确的类型和正确的类以便使样式规则可以作用于它。

外部信息:伪类和伪元素

在CSS1中,样式通常是基于在HTML源代码中出现的标记和属性。对于很多设计情景而言这种做法完全可行,但是它无法实现设计者希望获得的一些常见的设计效果。

设计伪类和伪元素可以实现其中的一些效果。这两种机制扩充了CSS的表现能力。在CSS1中,使用伪类可以根据一些情况改变文档中链接的样式,如根据链接是否被访问,何时被访问以及用户和文档的交互方式来应用改变。借助于伪元素,可以更改元素的第一个字母和第一行的样式,或者添加源文档中没有出现过的元素。

伪类和伪元素都不存在于HTML;也就是说,它们在HTML代码中是不可见的。这两种机制都得到了精心设计以便能够在CSS以后的版本中做进一步地扩充;也就是说实现更多的效果。 [11]

语言标准

播报

编辑

在CSS 2.1规范中,识别符(包括选择符中的元素名、类、ID)只能包含A~Z、a~z、0~9等字符,加上连字符“-”、下划线“_”。识别符不能以数字开头,以连字符和下划线开头也是不允许的。只有属性、属性值、单位、伪类、伪元素和“@”规则可以由连字符“-”开头。同时,其他元素名称、类和ID标识符也不允许用连字符开头。

CSS的识别符也需要用反斜杠“\”规避特殊字符,这些规避字符遵循IS010646规范。特殊字符的规避方法有两种:第一种方法是遇到特殊字符则在这些字符前直接添加反斜杠,例如,“AT&T”变为“AT&T”;另一种方法为用反斜杠和Unicode或IS010646等值的十六进制数值一起,规避特殊字符,例如,“AT&T”变为“AT\26T”。 [12]

js

JavaScript 是一种高级的、解释执行的编程语言,主要用于构建网页和应用的交互界面。它允许开发者实现网页的动态效果和响应用户行为,同时也被用于服务器端编程、移动应用开发等多种平台。

基本原理

播报

JavaScript是一个多功能、灵活的编程语言,其功能服务和特点在多年的发展中不断扩展和优化。

主要功能和特点

  • 事件处理

JavaScript能够响应用户操作,如点击、滚动、键入等,使得网页可以交互式地响应用户输入。

  • 操作DOM

JavaScript可以操作HTML和CSS,改变网页内容、结构和样式,实现动态的页面效果。

  • 异步编程

通过回调函数、Promises、async/await等机制,JavaScript能够执行非阻塞的异步编程,特别适合处理网络请求和文件操作。

  • JSON处理

作为网络传输中使用的主要数据格式,JavaScript原生支持JSON格式的解析和输出。

  • 一等函数

JavaScript中的函数是“一等公民”,意味着它们可以像任何其他变量一样被传递和操作 [7]。

近年新增功能

此处以ECMAScript 2015及之后版本为例。

  • ES2015(ES6)

引入了许多重要的新特性,包括类(class)、模块(module)、箭头函数(arrow functions)、模板字符串(template strings)、解构赋值(destructuring)、let和const等。这些特性极大地改善了代码的组织和开发体验。

  • ES2016

增加了数组包含方法(Array.includes)和幂运算符()。

  • ES2017

引入了异步函数(async/await),使得异步代码的写法更加直观和易于理解。

  • ES2018

增强了正则表达式,添加了命名捕获组、正向断言、后向断言和dotAll模式。还引入了异步迭代器和Promise.finally()。

  • ES2019

引入了Array.prototype.flat()和Array.prototype.flatMap(),以及Object.fromEntries()等实用功能。

  • ES2020

新增了BigInt类型支持大整数运算,Promise.allSettled()、动态导入(import())、String.prototype.matchAll()等。

  • ES2021

引入了逻辑赋值运算符、String.prototype.replaceAll()、数字分隔符等功能,提升了代码的可读性和实用性。

功能特性

播报

技术特性

  • 动态类型

JavaScript是一种动态类型语言,变量的类型是在运行时确定的,而不是在编译时确定的。这使得JavaScript具有很高的灵活性,可以在不显式声明类型的情况下操作数据。

  • 弱类型

由于JavaScript是弱类型语言,它会在需要时自动进行类型转换。这种特性使得编写代码更加简洁,但也可能引发一些隐晦的错误。

  • 原型继承

JavaScript使用原型链机制来实现继承。每个对象都有一个原型对象,从该对象继承属性和方法。通过修改对象的原型,可以影响所有从该原型继承的对象。

  • 函数是第一公民

在JavaScript中,函数是一等公民,可以像其他变量一样被传递和操作。这意味着函数可以作为参数传递给其他函数,作为函数的返回值,甚至可以在函数内部定义函数。

  • 事件驱动

JavaScript最强大的功能之一是其事件驱动机制。特别是在浏览器环境中,JavaScript通过事件处理程序来响应用户的操作,如点击、输入和滚动等。

  • 非阻塞I/O和异步编程

JavaScript采用单线程模型,但通过事件循环机制和回调函数实现了非阻塞I/O操作。为了更好地处理异步操作,JavaScript引入了Promise对象和async/await语法,使异步编程更加直观和可管理。

  • 兼容性

JavaScript广泛支持所有现代浏览器,并且通过Node.js也可以在服务器端运行。ECMAScript规范的不断发展也为JavaScript引入了许多新特性和改进。

  • DOM操作

JavaScript可以直接操作网页的文档对象模型(DOM),使得开发者能够动态更新内容、样式和结构,创建交互式和动态网页。

  • 模块化

自ECMAScript 2015(ES6)引入模块化语法以来,JavaScript支持使用import和export关键字来实现模块化开发。这有助于代码的组织和重用,使得大型应用程序更加可维护。

  • 运行环境多样性

除了在浏览器中运行,JavaScript还可以在服务器端(使用Node.js)、移动设备(使用React Native)和桌面应用程序(使用Electron)中运行,这使得JavaScript成为全栈开发的理想选择。

  • 丰富的标准库和第三方库

JavaScript拥有丰富的标准库,并且有大量的第三方库和框架可供选择,如React、Vue.js、Angular、Express、Lodash等,极大地扩展了JavaScript的功能和应用场景。

  • 强大的社区支持

JavaScript拥有一个庞大而活跃的开发者社区,丰富的在线资源、教程、工具和库,使得学习和使用JavaScript变得更加容易和高效。

技术局限

  • 单线程模型

JavaScript运行在单线程环境中,尽管有事件循环和异步编程技术,但依然可能在处理大量并发任务时遇到瓶颈。例如,长时间运行的脚本可能会阻塞主线程,导致用户界面卡顿或无响应。

  • 类型系统不严格

由于JavaScript是动态类型和弱类型语言,自动的类型转换可能导致一些非常隐蔽的错误。例如,‘5’ + 5会返回字符串’55’而不是数字10。这种隐式转换在大型项目中可能引发意外的行为。

  • 安全性问题

JavaScript在客户端运行,容易受到跨站脚本攻击(XSS)等安全威胁。虽然有各种防护措施,但开发者需要特别注意编码实践和数据验证以防范这些问题。

  • 浏览器兼容性

尽管现代浏览器对JavaScript的支持越来越一致,但不同浏览器之间仍可能存在兼容性问题。特别是对于较旧的浏览器版本,某些新特性或标准可能不被支持,需要进行额外的兼容性处理。

  • 性能限制

JavaScript在性能上可能不如一些编译型语言,例如C++或Java。虽然通过JIT(Just-In-Time)编译技术和V8等高性能JavaScript引擎,JavaScript性能有了很大提升,但在处理高计算密集型任务时仍可能表现不佳。

  • 缺乏标准库

与一些其他语言相比,JavaScript的标准库较为简单和有限。尽管有大量的第三方库和框架,但标准库的缺乏可能导致开发者需要依赖外部库,增加了项目的复杂性和潜在的维护成本。

  • 内存管理

JavaScript的自动垃圾回收机制虽然简化了内存管理,但可能导致不可预见的内存泄漏和性能问题,特别是在处理大量对象或长时间运行的应用程序时。

  • 多线程支持有限

尽管Web Workers提供了一种在浏览器中实现多线程的方法,但其功能和使用方式相对有限。WebWorkers不能访问DOM,数据传输只能通过消息传递,增加了实现复杂多线程任务的难度。

  • 异步编程的复杂性

尽管Promise和async/await简化了异步编程,但处理复杂的异步逻辑和错误依然具有挑战性。嵌套的回调函数可能导致“回调地狱”,而错误处理则可能需要额外的精力和技巧。

  • 移动设备性能

在移动设备上,JavaScript的性能和电池消耗可能是一个问题。由于移动设备的计算能力和资源有限,复杂的JavaScript应用可能导致高CPU使用率和电池耗尽。

开发工具

在 JavaScript 开发过程中,使用合适的工具可以极大地提升开发效率、代码质量以及项目的整体可维护性。以下是一些常用的 JavaScript 开发工具,涵盖了压缩、格式化、浏览器扩展、开发工具条、代码转换、HTTP监控等方面:

JavaScript压缩工具

JavaScript 压缩工具用于减少代码体积,以加快网页加载速度。这类工具通过删除不必要的空格、注释以及将变量名最小化,减少 JavaScript 文件的大小。JavaScript 压缩工具用于减少代码体积,以加快网页加载速度。这类工具通过删除不必要的空格、注释以及将变量名最小化,减少 JavaScript 文件的大小。

  • UglifyJS:一个流行的 JavaScript 压缩工具,可以压缩和混淆代码。它通过删除多余的空格和注释、缩短变量名,来降低文件大小,同时还能优化代码逻辑。

  • Terser:Terser 是 UglifyJS 的演进版本,支持 ES6+ 代码压缩,并且具备优化现代 JavaScript 代码的能力。

php

PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。它最初由[Rasmus Lerdorf](https://baike.baidu.com/item/Rasmus Lerdorf/270508?fromModule=lemma_inlink)于1994年创建,旨在简化网页开发过程。PHP可以嵌入到HTML中,并与多种数据库集成,最常用的是MySQL。其灵活性、易学性和强大的社区支持使得PHP成为开发动态网页Web应用程序的首选语言之一。PHP代码在服务器上执行,生成的HTML发送到客户端,从而实现网页的动态交互。它广泛应用于各种Web开发项目,包括内容管理系统电子商务平台社交媒体网站。

功能服务

播报

功能特点

  • 服务器端脚本执行

PHP主要用于服务器端脚本执行,可以生成动态网页内容。服务器在处理请求时执行 PHP 代码,将结果发送到客户端浏览器。

  • 数据库集成

PHP 支持与多种数据库的集成,如 MySQL、PostgreSQL、SQLite 等,提供了丰富的数据库操作函数和 PDO(PHP Data Objects)接口,便于开发者进行数据库操作。

  • 跨平台兼容

PHP 是跨平台的,能够在多种操作系统上运行,如 Linux、Windows、macOS 和 Unix。这使得 PHP 程序具有高度的移植性。

  • 丰富的内置函数库

PHP 拥有大量内置函数库,涵盖字符串处理、数组处理、文件操作、网络通信、加密解密等常见功能,极大地方便了开发者的编程工作。

  • 面向对象编程(OOP)

PHP 从 PHP 5 开始支持面向对象编程,提供了类和对象的支持,具备继承、多态和封装等特性。OOP 的支持使得 PHP 适合开发大型和复杂的应用程序。

  • 支持多种协议

PHP 支持 HTTP、HTTPS、FTP、IMAP、POP3 和 SMTP 等多种网络协议,使得它可以处理多种网络通信任务。

  • 扩展性强

PHP 拥有丰富的扩展库,开发者可以通过 PECL(PHP Extension Community Library)安装和使用各种扩展功能。此外,开发者还可以使用 C 语言编写自定义扩展。

主要应用领域

PHP 广泛应用于各个 Web 开发领域,包括内容管理系统(CMS)、电子商务平台、社交网络和社区平台、Web 应用框架、API 开发、数据分析和报表生成、自动化任务等。通过这些功能和特点,PHP 成为了开发动态网站和 Web 应用的首选语言

系统版本

播报

PHP 的发展经历了多个重要版本,每个版本都带来了显著的功能改进和性能提升。以下是各主要版本的详细介绍及其更新内容:

  • PHP 3

版本介绍:

PHP 3 是 PHP 的第一个正式版本,由 Andi Gutmans 和 Zeev Suraski 在 Rasmus Lerdorf 的基础上重新编写,于 1998 年发布。这个版本标志着 PHP 作为一种独立编程语言的诞生。

主要更新:

引入了全新的解析器,使得 PHP 语法更加灵活和强大。

提供了对多个数据库的支持,包括 MySQL、PostgreSQL 等。

允许开发者编写自己的扩展和模块。

  • PHP 4

版本介绍:

PHP 4 于 2000 年发布,基于 Zend Engine 1.0,显著提升了性能和可扩展性。

主要更新:

引入了会话管理功能,支持用户会话的持久化。

增加了输出缓冲机制,提高了网页生成效率。

改进了错误处理机制,使得开发调试更加方便。

增强了对 HTTP 头处理的支持。

  • PHP 5

版本介绍:

PHP 5 于 2004 年发布,基于 Zend Engine 2.0,重点增强了面向对象编程(OOP)的支持。

主要更新:

引入了全面的 OOP 支持,包括类、继承、接口、抽象类和方法。

增加了异常处理机制,提高了错误处理的灵活性和安全性。

内置了 SQLite 数据库支持,方便使用轻量级数据库。

提供了 SimpleXML 扩展,使得 XML 解析更加简单。

支持 SOAP 和其他 Web 服务协议。

  • PHP 7

版本介绍:

PHP 7 于 2015 年发布,跳过了 PHP 6,直接带来了显著的性能提升,基于 Zend Engine 3.0。

主要更新:

大幅提升了脚本执行速度和内存使用效率。

引入了标量类型声明(int, float, string, bool),增强了类型安全。

支持返回类型声明,提高了代码的可读性和可靠性。

增加了太空船操作符(<=>),简化了比较操作。

引入了 null 合并运算符(??),方便处理 null 值。

移除了多余的旧版功能和不推荐使用的代码。

  • PHP 8

版本介绍:

PHP 8 于 2020 年发布,带来了众多新功能和性能改进,包括 JIT(即时编译)技术。

主要更新:

引入 JIT 编译器,进一步提升了性能,特别是在计算密集型任务中表现突出。

支持联合类型声明,使得参数和返回值可以接受多种类型。

允许在类中直接定义属性,简化了代码书写。

引入 match 表达式,作为 switch 的替代,支持返回值和更严格的比较。

支持命名参数传递,增强了函数调用的可读性和灵活性。

增加了 nullsafe 运算符(?->),简化了对可能为 null 的对象属性或方法的访问。

  • PHP 8.1

版本介绍:

PHP 8.1 于 2021 年发布,继续在 PHP 8 的基础上改进和优化。

主要更新:

增加了枚举类型,提供了定义一组常量的简便方法。

引入了纤程(Fibers),改进了异步编程的能力。

增加了只读属性,允许定义不可修改的类属性。

支持交集类型(Intersection Types),进一步增强了类型系统的灵活性。

单。

支持 SOAP 和其他 Web 服务协议。

  • PHP 7

版本介绍:

PHP 7 于 2015 年发布,跳过了 PHP 6,直接带来了显著的性能提升,基于 Zend Engine 3.0。

主要更新:

大幅提升了脚本执行速度和内存使用效率。

引入了标量类型声明(int, float, string, bool),增强了类型安全。

支持返回类型声明,提高了代码的可读性和可靠性。

增加了太空船操作符(<=>),简化了比较操作。

引入了 null 合并运算符(??),方便处理 null 值。

移除了多余的旧版功能和不推荐使用的代码。

  • PHP 8

版本介绍:

PHP 8 于 2020 年发布,带来了众多新功能和性能改进,包括 JIT(即时编译)技术。

主要更新:

引入 JIT 编译器,进一步提升了性能,特别是在计算密集型任务中表现突出。

支持联合类型声明,使得参数和返回值可以接受多种类型。

允许在类中直接定义属性,简化了代码书写。

引入 match 表达式,作为 switch 的替代,支持返回值和更严格的比较。

支持命名参数传递,增强了函数调用的可读性和灵活性。

增加了 nullsafe 运算符(?->),简化了对可能为 null 的对象属性或方法的访问。

  • PHP 8.1

版本介绍:

PHP 8.1 于 2021 年发布,继续在 PHP 8 的基础上改进和优化。

主要更新:

增加了枚举类型,提供了定义一组常量的简便方法。

引入了纤程(Fibers),改进了异步编程的能力。

增加了只读属性,允许定义不可修改的类属性。

支持交集类型(Intersection Types),进一步增强了类型系统的灵活性。

引入了 Array unpacking with string keys,增强了数组解包功能。