HTML系列

 

目录

HTML

后缀名

什么是HTML

网页三要素

剖析解释

1.定义

2.作用:

html

head

title

style

meta

script

noscript

base

body

script

跨界创建方式

方式一

方式二

方式三

方式四

乱数假文

标签

标签嵌套

标签分类

元素的包含关系

标签

内联元素

标题标签

水平线

注释

换行

文本格式化

超链接

图像标签

表格

列表

表单

框架


HTML

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

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>title</title>
        <style type="text/css">
 
        </style>
    </head>
    <body>
        <div>
            
        </div>
    </body>
    <script type="text/javascript">
 
    </script>
</html>

后缀名

  • .html
  • .htm

以上两种后缀名没有区别,都可以使用。

什么是HTML

HTML 是用来描述网页的一种语言。

  • HTML 指的是超文本标记语言: HyperText Markup Language
  • HTML 不是一种编程语言,而是一种标记语言
  • 标记语言是一套标记标签 (markup tag)
  • HTML 使用标记标签来描述网页
  • HTML 文档包含了HTML 标签及文本内容
  • HTML文档也叫做 web 页面

网页三要素

1.HTML标签:负责展示文字,图片,视频,音频,是动静态网页的基础构成部分.

2.CSS层叠样式表:负责网页的布局.例如:字体,颜色,间距.

3.JavaScript脚本:负责网页与用户交互.

剖析解释

1.定义

DOCTYPE标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档。

声明必须是 HTML 文档的第一行,位于标签之前。

2.作用:

声明文档的解析类型(document.compatMode),避免浏览器的怪异模式。

document.compatMode:

BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。

CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。 

    这个属性会被浏览器识别并使用,但是如果你的页面没有DOCTYPE的声明,那么compatMode默认就是BackCompat,浏览器按照自己的方式解析渲染页面,那么,在不同的浏览器就会显示不同的样式。

    如果你的页面添加了那么,那么就等同于开启了标准模式

    那么浏览器就得老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。这就是的作用。

html

html标签 是网页中最大的标签快。所有跟网页相关的信息,都需要放在此标签中。

head标签 负责网页的设置信息。例如网页的标题等。

元素包含了所有的头部标签元素。在元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息。

可以添加在头部区域的元素标签为:

title
  • 定义了浏览器工具栏的标题
  • 当网页添加到收藏夹时,显示在收藏夹中的标题
  • 显示在搜索引擎结果页面的标题
style

标签定义了HTML文档的样式文件引用地址

在元素中你也可以直接添加样式来渲染 HTML 文档:

<head>
    <style type="text/css">
        body {
            background-color:yellow;
        }
        p {
            color:blue
        }
    </style>
</head>
meta

meta标签描述了一些基本的元数据。

标签提供了元数据.元数据也不显示在页面上,但会被浏览器解析。

META 元素通常用于指定网页的描述,关键词,文件的最后修改时间,作者,和其他元数据。

元数据可以使用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他Web服务。

<meta charset="utf-8">
meta标签  utf-8万国码  保证中文不会乱码!! charset  字符集设置(char  字符)
1.对于中文网页需要使用 <meta charset="utf-8"> 声明编码,否则会出现乱码。
2.有些浏览器(如 360 浏览器)会设置 GBK 为默认编码,则你需要设置为 <meta charset="gbk">。

meta标签的name属性值

解释:meta标签的 name 属性是用来定义一个 HTML 文档的描述、关键词,规定了元数据的名称,规定了content属性的信息/值的名称
属性值: 1. application-name  //规定页面所代表的Web应用程序的名称
        2. author ---作者关键词    //规定页面文档的作者的名字
            实例: <meta name="author" content="作者名称">

        3. description    //规定页面的描述。   搜索引擎会把这个描述显示在搜索结果中
            实例: <meta name="description" content="页面描述">

        4. gennerator    //规定用于生成文档的一个软件包(不用于手写页面)。
            实例: <meta name="generator" content="FrontPage 4.0">

        5. keywords ---搜索引擎关键词   //规定一个逗号分隔的关键词列表 - 相关的网页(告诉搜索引擎页面是与什么相关的)。
            实例: <meta name="keywords" content="HTML, meta tag, tag reference"
            提示:总是规定关键词(对于搜索引擎进行页面分类是必要的)。
        6.每30秒钟刷新当前页面
        <meta http-equiv="refresh" content="30">
        7.viewport 
        //电脑屏幕与手机的视口
        实例:<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">    
        width=device-width :页面宽度为设备屏幕的宽度
        initial-scale=1.0:初始的缩放比
        minimum-scale=0.5:最小缩放比
        maximum-scale=2.0:最大缩放比
        user-scalable=yes:是否允许用户进行缩放,值为"no"或"yes", no 代表不允许,yes代表允许

标签定义了文档与外部资源之间的关系。标签通常用于链接到样式表:

<link rel="stylesheet" type="text/css" href="mystyle.css">

favicon 图标

使用方法一:把 ico 图标文件命名为 favicon.ico ,放在网站根目录下,网页会自动获取 ico 图标。

使用方法二:在网页中使用 link 标签自行引入 ico 文件。

<link rel="shortcut icon" type="images/x-icon" href="favicon.ico">

favicon 图标的制作

script

标签用于加载脚本文件,如: JavaScript

noscript

noscript 标签提供无法使用脚本时的替代内容,比方在浏览器禁用脚本时,或浏览器不支持客户端脚本时。

元素可包含普通 HTML 页面的 body 元素中能够找到的所有元素。

只有在浏览器不支持脚本或者禁用脚本时,才会显示元素中的内容

<script>
    document.write("Hello World!")
</script>
<noscript>抱歉,你的浏览器不支持 JavaScript!</noscript>
base

标签描述了基本的链接地址/链接目标,该标签作为HTML文档中所有链接标签的默认链接:

<head>
    <base href="http://www.runoob.com/images/" target="_blank">
</head>
页面中使用
<a href="">连接</a>   =====使用的是全局的地址

body

页面的书写区间~~~~不做详细描述了(标签的天堂)

script

js代码的书写区间~~~~不做详细描述了(语法的天堂)

跨界创建方式

emmet插件,专门用来生成各种各样的代码的

  1. * 生成相同标签的数量
  2. { } 标签内自带文本
  3. $ 自增符号,可用于文本与标签,属性
  4. [ ] 用于添加属性 id/class/style.....等
  5. + 兄弟关系
  6. > 父级关系

tab 自动生成

方式一

h1*6

    <h1></h1>
    <h1></h1>
    <h1></h1>
    <h1></h1>
    <h1></h1>
    <h1></h1>

方式二

h1*6>{一级标题}
{文本内容}
    <h1>一级标题</h1>
    <h1>一级标题</h1>
    <h1>一级标题</h1>
    <h1>一级标题</h1>
    <h1>一级标题</h1>
    <h1>一级标题</h1>

方式三

h$*6>{$级标题}
$是自增
    <h1>1级标题</h1>
    <h2>2级标题</h2>
    <h3>3级标题</h3>
    <h4>4级标题</h4>
    <h5>5级标题</h5>
    <h6>6级标题</h6>

方式四

((h2[id='echarts$']>{章节$})+p>{lorem100})*6

或者
((h2[id='echarts$' class='box$' style='width:10px']>{章节$})+p>{lorem100})*6

    <h2 id="echarts1">章节1</h2>
    <p>lorem100</p>
    <h2 id="echarts2">章节2</h2>
    <p>lorem100</p>
    <h2 id="echarts3">章节3</h2>
    <p>lorem100</p>
    <h2 id="echarts4">章节4</h2>
    <p>lorem100</p>
    <h2 id="echarts5">章节5</h2>
    <p>lorem100</p>
    <h2 id="echarts6">章节6</h2>
    <p>lorem100</p>
    
    或
    <h2 id="echarts1" class="box1" style="width:10px">章节1</h2>
    <p>lorem100</p>
    <h2 id="echarts2" class="box2" style="width:10px">章节2</h2>
    <p>lorem100</p>
    <h2 id="echarts3" class="box3" style="width:10px">章节3</h2>
    <p>lorem100</p>
    <h2 id="echarts4" class="box4" style="width:10px">章节4</h2>
    <p>lorem100</p>
    <h2 id="echarts5" class="box5" style="width:10px">章节5</h2>
    <p>lorem100</p>
    <h2 id="echarts6" class="box6" style="width:10px">章节6</h2>
    <p>lorem100</p>

乱数假文

lorem  ~~无用的文字

标签

标签嵌套

p标签中不可以嵌套其他块元素!!!如果嵌套,失去父子级,变成兄弟级关系

ul li也可以嵌套其他块元素和行元素.

a标签,可以嵌套其他块元素,借用小手掌样式.

标签分类

1.从结构上分:

分为 单标签 和 双标签

2.从功能上分:

分为 行元素 和 块元素

以前

行元素:

  • 多个元素相邻共占一行
  • 行元素宽高由内容决定,自己设置无效

块元素:

  • 独占一行,
  • 设置宽高有效(宽度默认为父级宽度,高度默认为内容高度)
  • 可以嵌套行元素.

现在

HTML5已经弃用这种说法了,根据w3c官方标准的描述,元素代表的含义与显示无关

元素的包含关系

以前

块级元素可以包含行级元素,行级元素不可以包含块级元素,a元素除外

现在

元素的包含关系有元素的内容类别决定

总结:

  • 容器元素可以包含任何元素
  • a元素几乎可以包含任何元素
  • 某些元素有固定的子元素(ul>li ol>li dl>dd/dt)
  • 标题元素和段落元素不能相互嵌套,并且不能包含容器元素

标签

太多了,此处只列举常用的

容器

<div></div>

内联元素

<span></span>

标题标签

<h1>这是一个标题。</h1>        32px
<h2>这是一个标题。</h2>        24px
<h3>这是一个标题。</h3>
<h4>这是一个标题。</h4>        16px
<h5>这是一个标题。</h5>
<h6>这是一个标题。</h6>        12px

水平线

<hr>

注释

<!-- 这是一个注释 -->
Ctrl + /  快捷键

换行

<br/>

文本格式化

<b>这个文本是加粗的</b>
<strong>这个文本是加粗的</strong>
<big>这个文本字体放大</big>
<small>这个文本是缩小的</small>
<em>这个文本是斜体的</em>
<i>这个文本是斜体的</i>
这个文本包含<sub>下标</sub>
这个文本包含<sup>上标</sup>
<p>该段落文字从左到右显示。</p>  
<p><bdo dir="rtl">该段落文字从右到左显示。</bdo></p>  


<-- 删除字/插入字 -->
<del>blue</del> 
<ins>red</ins>
<p>My favorite color is <del>blue</del> <ins>red</ins>!</p>




<code>计算机输出</code>
<kbd>键盘输入</kbd>
<tt>打字机文本</tt>
<samp>计算机代码样本</samp>
<var>计算机变量</var>


<-- 控制空格标签 -->
<pre>
此例演示如何使用 pre 标签
对空行和    空格
进行控制
</pre>


<--缩写  abbr / acronym-->
<abbr title="etcetera">etc.</abbr>
<acronym title="World Wide Web">WWW</acronym>

超链接

<a href="url">链接文本</a>
href 属性描述了链接的目标。
为空,表示回到顶部且刷新; 
为#,表示回顶部,不刷新;
为### 表示无效果.

href

1.普通链接

普通地址,例如百度

2.锚链接

id属性:全局属性,表示元素在文档中的唯一编号

3.功能链接

点击之后,出发某个功能:

  • 执行js代码——javascript:

<a href='javascript:alert('你好!')'> 弹出:你好! </a>

  • 发送邮件——mailto:

<a href='mailto:邮箱地址'> 发送邮件 </a> 需要用户计算机上安装邮件发送软件

  • 拨打电话——tel:

<a href='tel:电话号码'> 拨打电话 </a> 移动端触发 或用户计算机上安装有拨号软件

target

  • _self:默认,当前页面跳转。
  • _blank:新窗口打开。
  • _parent:在父窗口中打开链接。
  • _top:在当前窗体打开链接,并替换当前的整个窗体(框架页)

属性

属性

描述

charset

char_encoding

HTML5 不支持。

规定目标 URL 的字符编码。

coords

coordinates

HTML5 不支持。

规定链接的坐标。

downloadNew

filename

指定下载链接

href

URL

规定链接的目标 URL。

hreflang

language_code

规定目标 URL 的基准语言。仅在 href 属性存在时使用。

mediaNew

media_query

规定目标 URL 的媒介类型。默认值:all。仅在 href 属性存在时使用。

name

section_name

HTML5 不支持。

规定锚的名称。

rel

alternate

author

bookmark

help

license

next

nofollow

noreferrer

prefetch

prev

search

tag

规定当前文档与目标 URL 之间的关系。仅在 href 属性存在时使用。

rev

text

HTML5 不支持。

规定目标 URL 与当前文档之间的关系。

shape

default

rect

circle

poly

HTML5 不支持。

规定链接的形状。

target

_blank

_parent

_self

_top

framename

规定在何处打开目标 URL。仅在 href 属性存在时使用。

  • _blank:新窗口打开。
  • _parent:在父窗口中打开链接。
  • _self:默认,当前页面跳转。
  • _top:在当前窗体打开链接,并替换当前的整个窗体(框架页)。

type

New

MIME_type

规定目标 URL 的 MIME 类型。仅在 href 属性存在时使用。

注:MIME = Multipurpose Internet Mail Extensions。

设置 target 属性时, top 与 parent 的打开方式十分类似,需仔细区分。

比如网 A 中镶嵌了 iframe 网页 B,网页 B 又镶嵌了 iframe 网页C。

 如果网页 C 中连接设置 target=_parent,则跳转将网页 B 去掉直接在 A 中嵌入网页 C 中链接页面。

 如果网页 C 中 target=_top ,则直接跳出所有 iframe 框架,直接转向 C 中链接页面。

图像标签

<img decoding="async" src="smiley-2.gif" alt="Smiley face" width="42" height="42">

标签有两个必需的属性:src 和 alt。

注释:从技术上讲,图像并不会插入 HTML 页面中,而是链接到 HTML 页面上。

属性

描述

align

top

bottom

middle

left

right

HTML5 不支持。HTML 4.01 已废弃。

规定如何根据周围的文本来排列图像。

loading

eager:立即加载

lazy:延迟加载

指定浏览器是应立即加载图像还是延迟加载图像。

alt

text

规定图像的替代文本。

border

pixels

HTML5 不支持。HTML 4.01 已废弃。

规定图像周围的边框。

crossorigin

New

anonymous

use-credentials

设置图像的跨域属性

height

pixels

规定图像的高度。

hspace

pixels

HTML5 不支持。HTML 4.01 已废弃。

规定图像左侧和右侧的空白。

ismap

ismap

将图像规定为服务器端图像映射。

longdesc

URL

HTML5 不支持。HTML 4.01 已废弃。

指向包含长的图像描述文档的 URL。

src

URL

规定显示图像的 URL。

usemap

#mapname

将图像定义为客户器端图像映射。

vspace

pixels

HTML5 不支持。HTML 4.01 已废弃。

规定图像顶部和底部的空白。

width

pixels

规定图像的宽度。

图像映射

<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap">

<map name="planetmap">
  <area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun">
  <area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury">
  <area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus">
</map>

表格

<table border="1">
    <tr>
        <th>Header 1</th>
        <th>Header 2</th>
    </tr>
    <tr>
        <td>row 1, cell 1</td>
        <td>row 1, cell 2</td>
    </tr>
    <tr>
        <td>row 2, cell 1</td>
        <td>row 2, cell 2</td>
    </tr>
</table>

列表

有序

无序

定义列表

表单

input type 类型

button checkbox color date datetime datetime-local email file hidden image month number password radio range reset search submit tel text time url week

框架

<iframe loading="lazy" src="demo_iframe.htm" width="200" height="200"  frameborder="0"></iframe>

练习:切换 iframe内容

<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<p>
    <a href="https://www.runoob.com" target="iframe_a" rel="noopener">RUNOOB.COM</a>
</p>
注意 iframe 的 name    a标签的 target

iframe 创建包含另外一个文档的内联框架(即行内框架),简而言之,iframe标签是框架的一种形式,一般用来包含别的页面。

一、使用iframe的优缺点

优点: 

1.iframe能够把嵌入的网页原样展现出来;

2.模块分离,便于更改,如果有多个网页引用iframe,只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷;

3.网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,增加代码的可重用;

4.如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决;

5.重载页面时不需要重载整个页面,只需要重载页面中的一个框架页;

6.方便制作导航栏。

缺点: 

1.样式和脚本需要额外链入,调用外部页面,需要额外调用css,增加页面额外的请求次数,增加服务器的http请求;

2.代码复杂,在网页中使用框架结构最大的弊病是搜索引擎的“蜘蛛”程序无法解读这种页面,会影响搜索引擎优化,不利于网站排名;

3.框架结构有时会让人感到迷惑,滚动条除了会挤占有限的页面空间外会使iframe布局混乱,还会分散访问者的注意力,影响用户体验;

4.链接导航疑问。运用框架结构时,必须保证正确配置所有的导航链接,否则,会给访问者带来很大的麻烦。比如被链接的页面出现在导航框架内,这种情况下访问者便被陷住了,因为此时他没有其他地点可去; 

5.产生多个页面,不易管理;

6.多数小型的移动设备(PDA 手机)无法完全显示框架,设备兼容性差。

二、为什么尽量少用iframe

iframes提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。iframe的创建比其它包括scripts和css的 DOM 元素的创建慢了1-2个数量级。

使用iframe的页面一般不会包含太多iframe,所以创建DOM节点所花费的时间不会占很大的比重。但带来一些其它的问题:onload事件以及连接池(connection pool),即iframe会阻塞主页面的Onload事件及iframe和主页面共享连接池,会影响页面的并行加载。

1.iframes阻塞页面加载,影响网页加载速度

及时触发 window 的 onload 事件是非常重要的。onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload事件加载延迟后,它给用户的感觉就是这个网页非常慢。

window的onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发,就会影响网页加载速度。通过 JavaScript 动态设置 iframe的SRC可以避免这种阻塞情况。

2.唯一的连接池

对每个 web 服务器来说,浏览器只打开极少的几个连接数。老的浏览器,包括 IE 6/7 和 Firefox 2,每个主机只有2个连接。在新的浏览器中,连接数增加鸟。Safari 3+和Opera 9+增至4个,Chrome 1+、IE 8及Firefox 3增至6个。

在大多数浏览器中,连接被主页面和它的 iframe所共享,这意味着有可能iframe中的资源占用了可用连接而阻塞了主页面的资源加载。如果iframe中的内容同等重要,或比主页面更重要,这很好。然而在通常情况下iframe中的内容对页面来说不太重要,iframe 占用连接数是不可取的。一个解决方案是在优先级更高的资源下载完成后再动态的给iframe的src赋值。

总之,iframe会给你的页面性能带来冲击,尽可能不使用iframe,当确实需要时,谨慎地使用他们。目前框架的优点可以使用Ajax实现,这在某种角度也是一种替代方案。

三、iframe的一些应用场景

iframe的页面和父页面(parent)是分开的,所以它意味着,这是一个独立的区域,不受 parent的CSS或者全局的JavaScript的影响。

1.典型的,比如所见即所得的网页编辑器;

2.跨域通信。JavaScript跨域总结与解决办法 ,类似的还有浏览器多页面通信,比如音乐播放器,用户如果打开了多个tab页,应该只有一个在播放;

3.历史记录管理,解决ajax化网站响应浏览器前进后退按钮的方案,在html5的history api不可用时作为一种替代;

4.纯前端的utf8和gbk编码互转。比如在utf8页面需要生成一个gbk的encodeURIComponent字符串,可以通过页面加载一个gbk的iframe,然后主页面与子页面通信的方式实现转换;

5.用iframe实现无刷新文件上传,在FormData不可用时作为替代方案;

6.创建一个全新的独立的宿主环境。iframe还可以用于创建新的宿主环境,用于隔离或者访问原始接口及对象,比如有些前端安全的防范会覆盖一些原生的方法防止恶意调用,通过创建一个iframe,然后从iframe中取回原始对象和方法来破解这种防范;

7.用来加载广告,例如联盟广告;

8.一般邮箱使用iframe,如QQ邮箱;

9.一些简单的后台页面。

关于iframe在跨域的使用,这里稍微强调一下

首先,我们要了解什么是跨域。简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。网络上已经有非常多可行的方案,我们只限定在iframe中去讲解几种跨域方案。

1、document.domain+iframe的设置

document.domain,这是浏览器暴露出来的一个准只读属性(之所以说它是准只读属性,是因为它可以设置为当前域名的超级域),利用这个特性,可以实现主域名相同子域名不同的网页实现通信。

2.使用HTML5 postMessage

HTML5提供的API,可以安全的启用跨域通信。

语法:targetWindow.postMessage(data, targetOrigin),data参数是指要传递的数据。

如何在目标窗口接收到数据呢?编写如下代码即可:

window.addEventListener('message', function(evt) {

    console.log(evt.data);

}, false);

evt.data即是postMessage中传递过来的数据。

特别注意两点

1.如果是协议和端口造成的跨域问题“前台”是无能为力的。

2.在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值