[TOC]
0x00 前言简述 本章主要介绍超链接、以及框架等相关元素的介绍实践。
超链接相关元素:
<a>
: 定义锚。
<link>
: 定义文档与外部资源的关系 HTML新标签,在【2.HTML根部头部主体标签元素介绍】中有介绍,此处不做多余介绍。
<nav>
: 定义导航链接。在【4.HTML样式布局区块标签元素介绍】中有介绍,此处不做多余介绍。
框架相关元素:
<iframe>
:定义内联框架。
<frame>
: 定义框架集的窗口或框架。HTML5 中不支持。
<frameset>
: 定义框架集。HTML5 中不支持。
<noframes>
: 定义针对不支持框架的用户的替代内容。HTML5 中不支持。
其他相关元素
0x01 超链接标签元素 a 标签 描述: 该标签定义超链接,用于从一张页面链接到另一张页面,其最重要的属性是 href 属性,它指示链接的目标。
属性:
href: 指向的页面的 URL。
target: 规定在何处打开链接文档(_blank/_parent/_self/_top/framename
)。
type: 规定被链接文档的的 MIME 类型, 例如 text/html
、images/png
hreflang: 指定被链接文档的语言, 例如 zh。
media: 规定被链接文档是为何种媒介/设备优化的,与CSS中media 运算符、设备、值相同,例如 “screen and (min-width:500px)”。
download: 属性规定该超链接目标可被下载。
ping: 规定以空格分隔的 URL 列表,当点击链接时,浏览器将发送带有正文 ping 的 post 请求(在后台)
rel: 该属性改变锚内容的外观、或者自动构建文档浏览菜单,其他工具也可以使用这些属性来构建特殊的链接集合、目录和索引,但是只有极少数浏览器才会利用这些属性来改变链接的外观,其值可以为(stylesheet、start、next、prev、contents、nofollow)
等。
referrerpolicy: 规定当用户单击超链接时要发送哪些引荐来源信息
no-referrer: 不发送引荐来源信息 no-referrer-when-downgrade: 如果协议安全级别保持不变或更高(HTTP 到 HTTP、HTTPS 到 HTTPS、HTTP 到 HTTPS 可以),则发送源、路径和查询字符串,不发送任何安全级别较低的内容(HTTPS 到 HTTP 不行)。 origin: 发送文档的来源(协议、主机和端口)。 origin-when-cross-origin: 为跨域请求发送文档的来源。为同源请求发送来源、路径和查询字符串。 same-origin: 为同源请求发送引用者。不为跨域请求发送引用者。 strict-origin-when-cross-origin: 如果协议安全级别保持不变或更高(HTTP 到 HTTP、HTTPS 到 HTTPS 和 HTTP 到 HTTPS 都可以),则发送来源。 unsafe-url: 发送来源、路径和查询字符串(不考虑安全性)。
温馨提示: 在所有浏览器中,链接的默认外观是未被访问的链接带有下划线而且是蓝色的
,已被访问的链接带有下划线而且是紫色的
,活动链接带有下划线而且是红色的
。
示例1
[TOC]
0x00 前言简述 本章主要介绍超链接、以及框架等相关元素的介绍实践。
超链接相关元素:
<a>
: 定义锚。
<link>
: 定义文档与外部资源的关系 HTML新标签,在【2.HTML根部头部主体标签元素介绍】中有介绍,此处不做多余介绍。
<nav>
: 定义导航链接。在【4.HTML样式布局区块标签元素介绍】中有介绍,此处不做多余介绍。
框架相关元素:
<iframe>
:定义内联框架。
<frame>
: 定义框架集的窗口或框架。HTML5 中不支持。
<frameset>
: 定义框架集。HTML5 中不支持。
<noframes>
: 定义针对不支持框架的用户的替代内容。HTML5 中不支持。
其他相关元素
0x01 超链接标签元素 a 标签 描述: 该标签定义超链接,用于从一张页面链接到另一张页面,其最重要的属性是 href 属性,它指示链接的目标。
属性:
href: 指向的页面的 URL。
target: 规定在何处打开链接文档(_blank/_parent/_self/_top/framename
)。
type: 规定被链接文档的的 MIME 类型, 例如 text/html
、images/png
hreflang: 指定被链接文档的语言, 例如 zh。
media: 规定被链接文档是为何种媒介/设备优化的,与CSS中media 运算符、设备、值相同,例如 “screen and (min-width:500px)”。
download: 属性规定该超链接目标可被下载。
ping: 规定以空格分隔的 URL 列表,当点击链接时,浏览器将发送带有正文 ping 的 post 请求(在后台)
rel: 该属性改变锚内容的外观、或者自动构建文档浏览菜单,其他工具也可以使用这些属性来构建特殊的链接集合、目录和索引,但是只有极少数浏览器才会利用这些属性来改变链接的外观,其值可以为(stylesheet、start、next、prev、contents、nofollow)
等。
referrerpolicy: 规定当用户单击超链接时要发送哪些引荐来源信息
no-referrer: 不发送引荐来源信息 no-referrer-when-downgrade: 如果协议安全级别保持不变或更高(HTTP 到 HTTP、HTTPS 到 HTTPS、HTTP 到 HTTPS 可以),则发送源、路径和查询字符串,不发送任何安全级别较低的内容(HTTPS 到 HTTP 不行)。 origin: 发送文档的来源(协议、主机和端口)。 origin-when-cross-origin: 为跨域请求发送文档的来源。为同源请求发送来源、路径和查询字符串。 same-origin: 为同源请求发送引用者。不为跨域请求发送引用者。 strict-origin-when-cross-origin: 如果协议安全级别保持不变或更高(HTTP 到 HTTP、HTTPS 到 HTTPS 和 HTTP 到 HTTPS 都可以),则发送来源。 unsafe-url: 发送来源、路径和查询字符串(不考虑安全性)。
温馨提示: 在所有浏览器中,链接的默认外观是未被访问的链接带有下划线而且是蓝色的
,已被访问的链接带有下划线而且是紫色的
,活动链接带有下划线而且是红色的
。
示例1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 <a href ="https://blog.weiyigeek.top" > This is a link jump WeiyiGeek.top</a > <a href ="/example/weiyigeek.html" > <img border ="0" src ="/i/weiyigeek.gif" /> </a > <p > <a href ="#show" > 查看 Chapter 4</a > </p > <p > 锚(显示在页面上的文本)</p > <h2 > <a name ="show" > Chapter 4</a > </h2 > <p > 欢迎访问唯一极客个人学习博客</p > 备注: 后续也可通过 https://blog.weiyigeek.top/index.html#show 进行调转访问。 <p > target 属性设置为 "_blank",该链接会在新窗口中打开</p > <p > target 属性设置为 "_self",默认。在相同的框架中打开被链接文档</p > <p > target 属性设置为 "_parent",在父框架集中打开被链接文档</p > <p > target 属性设置为 "_top",在整个窗口中打开被链接文档</p > <a href ="https://blog.weiyigeek.top/index.html#show" target ="_blank" > Visit blog.weiyigeek.top!</a > <a href ="mailto:master@weiyigeek.top?subject=Hello%20WeiyiGeek!" > 发送邮件</a > </p > <a href ="mailto:master@weiyigeek.top?cc=one@weiyigeek.top&bcc=two@weiyigeek.top&subject=Summer%20Party&body=You%20are%20invited%20to%20a%20big%20summer%20party!" > 发送邮件!有抄送,有标题,有内容</a > </p > <p > 注意:应该使用 %20 来替换单词之间的空格,这样浏览器就可以正确地显示文本了, 首个邮箱后是?拼接</p > <a herf ="https://blog.weiyigeek.top" rel ="noreferrer nofollow" > 因为通过Referer可能会泄露一些铭感信息,已搜索引擎不跟踪 </a > <a href ="/images/weiyigeek.jpg" download ="logo" > <a href ="https://weiyigeek.top/html" ping ="https://weiyigeek.top/trackpings" > 唯一极客个人主页</a >
示例2. 打开新窗口,被指向的超链接使得创建高效的浏览工具变得很容易。 例如,target="view_window"
一个简单的内容文档的列表,可以将文档重定向到一个单独的窗口,通过单击窗口中的一个连接,可使另一个窗口的内容发生变化。–>1 2 3 4 5 6 7 <h3 > View_window Demo</h3 > <ul > <li > <a href ="pref.html" target ="view_window" > Preface</a > </li > <li > <a href ="chap1.html" target ="view_window" > Chapter 1</a > </li > <li > <a href ="chap2.html" target ="view_window" > Chapter 2</a > </li > <li > <a href ="chap3.html" target ="view_window" > Chapter 3</a > </li > </ul >
weiyigeek.top-target属性为view_window效果图
实现效果: 当用户第一次选择内容列表中的某个链接时,浏览器将打开一个新的窗口,将它标记为 “view_window”,然后在其中显示希望显示的文档内容。如果用户从这个内容列表中选择另一个链接,且这个 “view_window” 仍处于打开状态,浏览器就会再次将选定的文档载入那个窗口
,取代刚才的那些文档。
示例3. 在框架中打开窗口,此时不用打开一个完整的浏览器窗口,使用 target 更通常的方法是在一个 <frameset>
显示中将超链接内容定向到一个或者多个框架中。 可以将这个内容列表放入一个带有两个框架的文档的其中一个框架中,并用这个相邻的框架来显示选定的文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <frameset cols ="100,*" > <iframe src ="toc.html" > <iframe src ="pref.html" name ="view_iframe" > </frameset > 当浏览器最初显示这两个框架的时候,左边这个框架包含目录,右边这个框架包含前言,这是 "toc.html" 的源代码。 <h3 > View_frame Demo</h3 > <ul > <li > <a href ="pref.html" target ="view_iframe" > Preface</a > </li > <li > <a href ="chap1.html" target ="view_iframe" > Chapter 1</a > </li > <li > <a href ="chap2.html" target ="view_iframe" > Chapter 2</a > </li > <li > <a href ="chap3.html" target ="view_iframe" > Chapter 3</a > </li > </ul >
0x02 框架标签元素 iframe 标签 描述: HTML 内联框架元素 (<iframe>
) 表示嵌套的browsing context。它能够将另一个 HTML 页面嵌入到当前页面中。每个嵌入的浏览上下文(embedded browsing context)都有自己的会话历史记录 (session history)和DOM 树
。 包含嵌入内容的浏览上下文称为父级浏览上下文, 顶级浏览上下文(没有父级)通常是由 Window 对象表示的浏览器窗口。 简单的说: 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。
属性:
示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <iframe src ="https://weiyigeek.top" title ="WeiyiGeek 个人主页" width ="400" height ="300" > </iframe > <ul > <li > <a href ="https://weiyigeek.top" target ="iframe_a" > 点击访问首页</a > </li > <li > <a href ="https://blog.weiyigeek.top" target ="iframe_a" > 点击访问博客</a > </li > </ul > <iframe name ="iframe_a" src ="#" width ="500" height ="300" frameborder ="0" > <p > 您的浏览器不支持 iframe 标签</p > </iframe > <h6 > 使用iframe来显示目标链接页面</h6 > <span data-wiz-span ="data-wiz-span" style ="color: rgb(0, 0, 0);" > <iframe src ="demo_iframe.htm" name ="iframe_a" > </iframe > <p > <a href ="http://www.weiyigeek.top" target ="iframe_a" > weiyigeek.top</a > </p > </span >
扩展: 描述: 如果指定了空字符串(sandbox=””),该属性对呈现在iframe框架中的内容启用一些额外的限制条件
。 该属性的值既可以是一个空字符串(将会启用所有的限制),也可以是用空格分隔的一系列指定的字符串,通过sandbox属性提升iFrame的安全性,sandbox属性可以防止不信任的Web页面执行某些操作。
HTML 5规范的编辑Ian Hickson谈到了sandbox的好处,它可以防止如下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <iframe src ="demo_iframe_sandbox_form.html" sandbox ="allow-forms" > <p > 您的浏览器不支持 iframes.</p > </iframe > <iframe src ="demo_iframe_sandbox.html" sandbox ="allow-scripts allow-forms" > <p > 您的浏览器不支持 iframes.</p > </iframe > <iframe srcdoc ="<b>Hello world!</b>" src ="demo-iframe_srcdoc.htm" > <p > 您的浏览器不支持 iframe 标签。</p > </iframe >
weiyigeek.top-iframe标签执行结果图
frameset 标签 - 已弃用 描述: frameset 元素可定义一个框架集,它被用来组织多个窗口(框架),每个框架存有独立的文档。在其最简单的应用中,frameset 元素仅仅会规定在框架集中存在多少列或多少行,注意该标签一般不能和body标签一起使用。温馨提示: 您必须使用 cols 或 rows 属性。
示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 <frameset cols ="25%,50%,25%" > <frame src ="/example/html/frame_a.html" > <frame src ="/example/html/frame_b.html" > <frame src ="/example/html/frame_c.html" > </frameset > <frameset rows ="25%,50%,25%" > <frame src ="/example/html/frame_a.html" > <frame src ="/example/html/frame_b.html" > <frame src ="/example/html/frame_c.html" > </frameset >
weiyigeek.top-frameset执行结果图
frame 标签 - 已弃用 描述: 该标签定义 frameset 中的一个特定的窗口(框架),frameset 中的每个框架都可以设置不同的属性,比如 border、scrolling、noresize
等等。
温馨提示: 如果您希望验证包含框架的页面,请确保 doctype 被设置为 “Frameset DTD”,阅读更多有关 DOCTYPE 的内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 <frameset cols ="25%,75%" > <frame src ="frame_a.htm" > <frame src ="frame_b.htm" > </frameset > <frameset cols ="25%,50%" > <frame src ="/example/html/frame_a.html" > <frame src ="/example/html/frame_b.html" > <noframes > <body > 您的浏览器无法处理框架!</body > </noframes > </frameset > <frameset rows ="50%,50%" > <frame src ="/example/html/frame_a.html" > <frameset cols ="25%,75%" > <frame src ="/example/html/frame_b.html" > <frame src ="/example/html/frame_c.html" > </frameset > </frameset > <frameset cols ="50%,*,25%" > <frame src ="/example/html/frame_a.html" noresize ="noresize" /> //不可移动A、B之间的边框 <frame src ="/example/html/frame_b.html" /> <frame src ="/example/html/frame_c.html" /> </frameset > <frameset cols ="120,*" > <frame src ="/example/html/html_contents.html" > <frame src ="/example/html/frame_a.html" name ="showframe" > </frameset > <frameset cols ="180,*" > <frame src ="/example/html/content.html" > <frame src ="/example/html/link.html" name ="showframe" > </frameset > <a href ="/example/html/link.html" target ="showframe" > 没有锚的链接</a > <br /> <a href ="/example/html/link.html#C10" target ="showframe" > 带有锚的链接</a >
weiyigeek.top-frame标签执行结果图
综合示例: 代码示例: https://github.com/WeiyiGeek/DevelopLearnig/blob/main/fore-end/HTML/example/study/11.iframe.html
0x03 框架移动标签元素 marquee 标签 - 已弃用 描述: HTML marquee 元素(<marquee>
) 用来插入一段滚动的文字, 你可以使用它的属性控制当文本到达容器边缘发生的事情。属性:
behavior : 设置文本在 marquee 元素内如何滚动。可选值有 scroll,slide 和 alternate。如果未指定值,默认值为 scroll。
bgcolor : 通过颜色名称或十六进制值设置背景颜色。
direction : 设置 marquee 内文本滚动的方向。可选值有 left, right, up and down。如果未指定值,默认值为 left。
height : 以像素或百分比值设置高度。
hspace : 设置水平边距。
loop : 设置 marquee 滚动的次数。如果未指定值,默认值为 −1,表示 marquee 将连续滚动。
scrollamount : 设置每次滚动时移动的长度(以像素为单位)。默认值为 6。
scrolldelay : 设置每次滚动时的时间间隔(以毫秒为单位)。默认值为 85。请注意,除非指定 truespeed 值,否则将忽略任何小于 60 的值,并改为使用 60。
truespeed : 默认情况下,会忽略小于 60 的 scrolldelay 值。如果存在 truespeed,那些值不会被忽略。
vspace : 以像素或百分比值设置垂直边距。
width: 以像素或百分比值设置宽度。
事件
onbounce : 当 marquee 滚动到结尾时触发。它只能在 behavior 属性设置为 alternate 时触发。 onfinish : 当 marquee 完成 loop 属性设置的值时触发。它只能在 loop 属性设置为大于 0 的某个数字时触发。 onstart : 当 marquee 开始滚动时触发。
示例 1 2 3 4 5 6 7 8 9 10 11 12 <marquee > 此文本将从右向左滚动</marquee > <marquee direction ="up" > 此文本将从下至上滚动</marquee > <marquee direction ="down" width ="250" height ="200" behavior ="alternate" style ="border:solid" > <marquee behavior ="alternate" > 此文本在边框内滚动 </marquee > </marquee >