级链接标签
目的页面的地区用 name属性定义(name的值可自己定义,一般为英文),链接页面的链接应写为<a href=”url#name”></a>
未被访问的链接带有下划线而且是蓝色的
已被访问的链接带有下划线而且是紫色的
活动链接带有下划线而且是红色的
关于锚的进一步说明:
<a> 标签可定义锚,锚 (anchor) 有两种用法:
通过使用 href 属性,创建指向另外一个文档的链接(或超链接)
通过使用 name 或 id 属性,创建一个文档内部的书签(也就是说,可以创建指向文档片段的链接)
图片标签 <img>
1、img标签是一个单标签,必须和src(source:指出图像的路径)属性连用,
网页上图像的路径有绝对路径和相对路径两种,但在实际运用中往往只用相对路径
绝对路径:图片在硬盘上的路径 (分割符号是/)
相对路径:图片相对于网页而言的路径
如果图片与网页在同一个文件夹下,那么可以直接用图片的名称表示其路径
如果图片在网页的下一层文件夹中,比如图片在网页文件下面的images文件夹中,则可用images/表示
我们也可以用./表示网页所在的文件夹
如果图片在网页的上一层文件夹中,则用../表示
事实上,不但图片文件是如此,网页中应用的文件都分为相对路径和绝对路径两种表达方式。
2、在网页上,支持的图片格式包括.gif .jpg .png .bmp,一般用前三者居多,因为前三者的图片压缩比较好。但是,gif格式只有256种颜色,所以,在需要丰富颜色的场合,往往多用jpg和png格式。不过,gif拥有动态功能,而后两者则不具备。
3、img标签可以与其它标签共处一行,如果有多个图形出现时,默认为同一行显示
4、img标签有4个常用标签,分别是
alt 图片说明,在图像无法显示时表现为图像的替代文本
width 宽 属性值可以是象素,也可以是%
height 高 属性值可以是象素,也可以是%
border 边框
5、图片链接仍然是用a标签来显示
例子:<a href=“http://www.rwxy.xnc.edu.cn”><img src="sample.jpg" ></a>
6、可以用图像映射实现图像不同区域的链接
图象映射
所谓图象映射是指一个图片上的不同位置被指定了不同的超级链接;点击图片的不同位置会打开不同的超级链接目标。这与前面的默认超级链把整个图片作为超级链接的元素是很不一样的。
图象映射由<map>定义。<map>有一个基本属性是name。name给图象映射命名,这个命名将会被<img>元素用usemap属性引用。所以,图象上的图象映射实际上是对<map>定义的映射的一个引用。
<map>在定义图象映射时,可以定义三种形状的映射: circle(圆形)、rect(矩形rectangle)、poly(多边形)
图象映射实例
<img src="bear.jpg" usemap="#map" >
<map name=“map">
<area shape="rect" coords="46,29,253,164" href="#" >
<area shape="circle" coords="76,510,59" href="#" >
<area shape="poly" coords="219,482,253,448,310,462,297,527,220,523" href="#" >
</map>
表格标签
表格由三个标签构成,分别是
<table>...</table> - 定义表格
<tr> - 定义表行
<th> - 定义表头
<td> - 定义表格单元(表格的具体数据)
在表格标签中,table、tr、td标签都具备不同的属性
table:border(边框尺寸设置);width(表格的宽);height(表格的高);align(横向对齐:left center right);bgcolor(背景色彩);background(背景图像);cellspacing(表格单元的间隙设置);cellpadding(表元内部空白设置);
tr:height(行高);align(横向对齐:left center right);valign(纵向对齐:top middle bottom);bgcolor(背景色彩);
td:width(表格的宽);height(表格的高);align(横向对齐:left center right);valign(纵向对齐:top middle bottom);bgcolor(背景色彩);background(背景图像);
注:当talble、tr、td有共同的属性而且属性值发生冲突之际,其优先性是td > tr > table
表格在html中最大的作用不是用来整理数据,而是用来排版,所以它是html中用处最广的标签之一。
表格内部可以继续放入表格,这被称之为表格嵌套,利用表格嵌套可以制作出非常复杂的排版。
表格的单元格可以跨行跨列显示
跨多列的单元格 <td colspan=#>
<table border=1>
<tr><td colspan=3> morning menu</td>
<tr><td>food</td> <td>drink</td> <td>sweet</td>
<tr><td>a</td><td>b</td><td>c</td>
</table>
morning menu
food
drink
sweet
a
b
c
跨多行的单元格 <td rowspan=#>
<table border=1>
<tr><td rowspan=3> morning menu</td>
<td>food</td> <td>a</td></tr>
<tr><td>drink</td> <td>b</td></tr>
<tr><td>sweet</td> <td>c</td></tr>
</table>
morning menu
food
a
drink
b
sweet
c
....................................................................
我的微信公众号:UI严选 —越努力,越幸运
最后这些关于html的内容有点查漏补缺的意思了,这一次是关于文本内链接的使用方法,简单来说就是我们的页面中有一个章节名称目录,如何点击目录中的名称,就能正好在页面中显示相应内容。
如图所示:
点击目录的"总体评价"跳转到相应内容,如图:
就是这样的一个效果。在很多网页中经常看到。
这个案例我们会分三部分来讲解。
今天主要学习如何使用<a>标签进行页面内链接,已及从其他网页链接该页面内的指定内容。
这里会有一个问题,就是点击链接后,文字内容会置顶显示,这个默认形式会给我们带来不便,解决方案较复杂,会在最后一次讲解中给出。
下一次我们来学习如何对图片添加映射超链接,映射超链接的意思是,假如我的图片中有两个人物或物象,考虑读者会感兴趣,想了解更多内容,如何框选出物象边缘来添加链接,这就是图像映射超链接。如图:使用一个平时不可见的边框来制作图片映射链接,确保感兴趣的读者能点击到画面中的目标物体。
最后一部分我们将回答今天结尾的问题,也就是如何解决置顶问题。这一部分也会作为HTML部分结束的综合练习,和css部分启蒙的预热练习。,
首先看一下今天的基础代码
<!DOCTYPE HTML>
<html>
<head>
<title>文内链接</title>
</head>
<body >
<a>试飞进程</a>
<a>研制情况</a>
<a>服役动态</a>
<a>总体评价</a>
<p>
<h2><a>试飞进程</a></h2>
歼-20隐形战斗机首架技术验证机于2011年1月11日中午12时50分左右进行首次升空飞行测试,13时08分成功着陆,历时18分钟。<br>整个首飞过程在歼-10S战斗教练机陪伴下完成 。2016年10月28日,首次发布"空军试飞员将驾歼-20飞机亮相中国航展"后,还陆续发布了"歼-20战机列装空军作战部队""空军歼-20战机首次开展海上方向实战化训练"等。
<h2><a>研制情况</a></h2>
在2016年11月1日,第十一届珠海航展,歼-20首次进行空中飞行展示。两架歼-20做了公开飞行,不仅在现场引起轰动,也立刻被西方媒体大量报道。歼-20是中国现代空中力量的代表作,也进入了世界最先进的第五代战斗机行列,它是中国国防能力高速发展的一个象征。<br>2018年11月11日,第十二届中国航展在珠海迎来"高光时刻":歼-20战机在公开飞行展示中挂弹开仓,震撼献礼人民空军成立69周年纪念日。 <br>2019年10月13日,庆祝人民空军成立70周年航空开放活动新闻发布上,空军新闻发言人申进科大校介绍歼-20战机列阵人民空军"王牌部队"
<h2><a>服役动态</a></h2>
2017年3月9日,中央电视台报道歼-20战斗机正式进入空军序列。<br>2017年3月13日,《中国日报》发布消息称,中国自主研制的歼-20近期将装配国产发动机。<br>2017年7月30日,歼-20三机编队参加在朱日和举行的庆祝中国人民解放军成立90周年阅兵。歼击机梯队飞来,3架歼-20隐形战斗机以楔形编队的形式在天空中飞过。<br>2017年9月28日,在中国国防部行记者会上,国防部新闻发言人吴谦大校介绍歼-20飞机已经列装部队。<br>2017年11月10日上午,中国空军发言人申进科大校表示,歼-20 列装部队后,已经开展编队训练。<br>2018年2月9日,中国空军新闻发言人申进科大校发布消息,歼-20开始列装空军作战部队。<br>2018年10月30日,中国空军4架歼-20隐形战斗机现身珠海金湾机场上空。<br>2019年10月1日,歼-20现身庆祝中华人民共和国成立70周年阅兵式;阅兵中,歼-20与歼-16、歼-10C三型飞机分别以5机楔队组成战斗队形接受检阅;该三款歼击机被誉为中国空军歼击机家族的"三剑客",是未来联合作战的骨干力量
<h2><a>总体评价</a></h2>
歼-20是眼下亚洲区域最先进的战机,这让中国空军在面对日本、韩国与印度等国家的空军时占有显著优势。外媒将歼-20与其他国家战机进行了对比。俄罗斯苏霍伊苏-57战斗机由于研制进度几度推迟,尚未正式交付入役;美国F-35战斗机也多次出现飞机供氧不足的问题,大面积停飞,出口受阻;韩国KF-X隐形战机先是被爆出因掌握不了关键技术而被迫降成四代半战机的情况,后又传出了合作方印尼打算撤资并已告知韩国的消息。因此,中国歼-20战机成为亚太区域领跑的优势战机。<br>中国空军正向全疆域作战的现代化战略性军种迈进,成为有效塑造态势、管控危机、遏制战争、打赢战争的重要力量。歼-20战机列装空军作战部队,将进一步提升空军综合作战能力,有助于空军更好的肩负起维护国家主权、安全和领土完整的神圣使命。<br>歼20是我国自主研制的第五代战斗机,它的研制实现了既定的四大目标——打造跨代新机、引领技术发展、创新研发体系、建设卓越团队。打造跨代新机,是按照性能、技术和进度要求,研制开发我国自己的新一代隐身战斗机。引领技术发展,指通过自主创新实现强军兴军的目标。歼20在态势感知、信息对抗、协同作战等多方面取得了突破,这是中国航空工业从跟跑到并跑,再到领跑的必由之路。创新研发体系,是指建设最先进的飞机研制条件和研制流程。通过一大批大国重器的研制,我们建立了具有我国特色的数字化研发体系。建设卓越团队,是指通过型号研制,锤炼一支爱党爱国的研制队伍,这些拥有报国情怀、创新精神的优秀青年是航空事业未来发展的生力军。未来,我们将在战斗机的机械化、信息化、智能化发展征程上不断前行。
</p>
</body>
</html>
看着复杂,实际上主要都是些内容文字,简化后的代码如下:
<!DOCTYPE HTML>
<html>
<head>
<title>文内链接</title>
</head>
<body >
<a>试飞进程</a>
<a>研制情况</a>
<a>服役动态</a>
<a>总体评价</a>
<p>
<h2><a>试飞进程</a></h2>
歼-20隐形........首次开展海上方向实战化训练"等。
<h2><a>研制情况</a></h2>
在2016年......"王牌部队"
<h2><a>服役动态</a></h2>
2骨干力量
<h2><a>总体评价</a></h2>
歼-20是眼下亚洲区域最先进的战机......不断前行。
</p>
</body>
</html>
就是在<body></body>中添加四个<a></a>标签来写入标题,并列写入一个<p></p>标签,并在<p></p>标签中添加文字内容和<h2></h2>标签。这时需要注意的是,<h2></h2>中还要用<a></a>标签夹住标题。
页面效果如下:
下面我们来添加文章内部链接
添加文章内部链接需要一前一后两个<a></a>标签。一个是目录中的<a></a>,如图:
一个是正文中的标题上的<a></a>,如图:
添加内部链接的办法非常简单,首先我们把目录中的标题<a></a>标签称为"召唤者"。把正文中的标题中的<a></a>标签称为"被召唤者"。如果您学过《》这篇教程就会知道,一个标签召唤或调用另一个标签需要能叫出被调用标签的名字!
所以先要给"被召唤者"起名字,起名字的方法有两种,一种是name="",还有一种是id="",建议大家都写上,因为有的浏览器不支持name属性。具体写法如下:
<h2><a name="chapter1" id="chapter1">试飞进程</a></h2>
在"召唤者"<a>标签中使用href属性来叫出"被召唤者"的名字!示例代码如下:需要在引号中添加#后再写名字。
<!DOCTYPE HTML>
<html>
<head>
<title>文内链接</title>
</head>
<body >
<a href="#chapter1">试飞进程</a><!--看这里-->
<a>研制情况</a>
<a>服役动态</a>
<a>总体评价</a>
</body>
</html>
<a>标签有点懒,只叫名字的话它会假装听不见,所以还要具体描述它的特征,让它不好意思偷懒,也就是前后两个<a></a>标签中间夹的文字内容要一致,比如上文中的两个<a>中间的内容都是"试飞进程"。如果字不一样,休想叫得动"被召唤者"。
效果如下:
点击后,试飞进程标签跳到了视窗的最顶端,如图:这种顶在视窗顶端的显示的方式我们称之为"置顶"。
下面我们使用这个方法,为剩下的标题添加页面内链接。
打开外部页面中指定信息位置的方法
首先,我们复制一下这个页面文件命名为"打开外部页面文件指定位置.html",然后删掉<p></p>和其中内容。示例代码如下:
<!DOCTYPE HTML>
<html>
<head>
<title>打开外部页面文件指定位置</title>
</head>
<body >
<a href="#chapter1">试飞进程</a>
<a href="#chapter2">研制情况</a>
<a href="#chapter3">服役动态</a>
<a href="#chapter4">总体评价</a>
</body>
</html>
方法非常简单,在href中添加外部页面路径即可!示例代码如下:
<a href="文内链接ceshi.html#chapter1">试飞进程</a>
依次添加后,页面效果如下:
点击其中一个标题"研制情况",页面跳转,如图:
这里,置顶的问题就出现了,如果我们的文章目录一直在视图的顶部,每次点击页面内链接时,顶部的目录就会和标题重叠,非常不美观,解决这个问题就要涉及到<div>布局的应用,我们以后再说。
OK!今天我们的内容结束了,下一次学习图片映射链接功能。
喜欢的朋友请关注我,点赞也会让我动力满满。
HTML序章(学习目的、对象、基本概念)——零基础自学网页制作
HTML是什么?——零基础自学网页制作
第一个HTML页面如何写?——零基础自学网页制作
HTML页面中head标签有啥用?——零基础自学网页制作
初识meta标签与SEO——零基础自学网页制作
HTML中的元素使用方法1——零基础自学网页制作
HTML中的元素使用方法2——零基础自学网页制作
HTML元素中的属性1——零基础自学网页制作
HTML元素中的属性2(路径详解)——零基础自学网页制作
使用HTML添加表格1(基本元素)——零基础自学网页制作
使用HTML添加表格2(表格头部与脚部)——零基础自学网页制作
使用HTML添加表格3(间距与颜色)——零基础自学网页制作
使用HTML添加表格4(行颜色与表格嵌套)——零基础自学网页制作
16进制颜色表示与RGB色彩模型——零基础自学网页制作
HTML中的块级元素与内联元素——零基础自学网页制作
初识HTML中的<div>块元素——零基础自学网页制作
在HTML页面中嵌入其他页面的方法——零基础自学网页制作
封闭在家学网页制作!为页面嵌入PDF文件——零基础自学网页制作
HTML表单元素初识1——零基础自学网页制作
HTML表单元素初识2——零基础自学网页制作
HTML表单3(下拉列表、多行文字输入)——零基础自学网页制作
HTML表单4(form的action、method属性)——零基础自学网页制作
HTML列表制作讲解——零基础自学网页制作
为HTML页面添加视频、音频的方法——零基础自学网页制作
音视频格式转换神器与html视频元素加字幕——零基础自学网页制作
HTML中使用<a>标签实现文本内链接——零基础自学网页制作
家好,我是Echa。
好消息, 2023年4月1号 愚人节这天 JavaScript import maps (导入映射)现在支持跨浏览器了,下面小编详细介绍:
当 ES Module 最开始作为一种新的 JavaScript 模块化方案在 ES6 中被引入的候,其实是通过在 import 语句中强制指定相对路径或绝对路径来实现的。
import dayjs from "https://cdn.skypack.dev/dayjs@1.10.7"; // ES modules
console.log(dayjs("2023-04-1").format("YYYY-MM-DD"));
这和其他常见的模块化系统(例如 CommonJS)的工作方式略有不同,并且在使用像 webpack 这样的模块打包工具的时候会使用更简单的语法:
const dayjs = require('dayjs') // CommonJS
import dayjs from 'dayjs'; // webpack
在这些系统里,模块导入语句通过 Node.js 运行时或相关构建工具映射到特定(版本)的文件。用户只需要在 import 语句中直接编写模块说明符(通常是包名),模块就可以自动处理。
由于开发人员已经熟悉了这种从 npm 导入包的方式,因此必须要先经过一个的构建步骤才能确保以这种方式编写的代码可以在浏览器中运行。
Import maps 就可以解决这个问题,它可以将模块说明符(包名)自动映射到它的相对或绝对路径。从而让我们不使用构建工具也能使用简洁的模块导入语法。
如何使用 Import maps
我们可以通过 HTML 中的 <script type="importmap"> 标签来指定一个 Import maps。
<script type="importmap">
{
"imports": {
"dayjs": "https://cdn.skypack.dev/dayjs@1.10.7",
}
}
</script>
为了成功的在模块解析之前对其进行解析。这个 script 标签必须放在文档中第一个 <script type="module"> 标签之前(最好放在 <head>中),另外,目前每个 HTML 只允许编写一个 Import maps 。
<script type="module">
import dayjs from 'dayjs';
console.log(dayjs("2023-04-01").format("YYYY-MM-DD"));
</script>
在 script 标签内,我们可以通过一个 JSON 对象来为文档中的脚本所需导入的模块指定所有必要的映射。一个典型的 importmap 结构如下所示:
<script type="importmap">
{
"imports": {
"react": "https://cdn.jsdelivr.net/npm/react/umd/react.production.min.js",
"react-dom": "https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.production.min.js"
"square": "./modules/square.js",
"lodash": "/node_modules/lodash-es/lodash.js"
}
}
</script>
在上面的 import 对象中,每个属性对应一个映射。映射的左侧是导入说明符的名称(一般是包名),而右侧是说明符需要映射到的相对或绝对路径。在映射中指定相对路径时,必须要确保它们始终以 /、../或 ./ 开头。
另外,importmap 中声明的包并不一定意味着它一定会被浏览器加载。页面上的脚本没有使用到的任何模块都不会被浏览器加载,即便你在 importmap 中声明了它。
编写好 importmap 之后,你就可以在后面的脚本中直接使用 ES Module 语法了。
<script type="module">
import { cloneDeep } from 'lodash';
const objects = [{ a: 1 }, { b: 2 }];
const deep = cloneDeep(objects);
console.log(deep[0] === objects[0]);
</script>
外部映射
你还可以在外部文件中指定你的映射,然后使用 script 的 src 属性链接到这个文件(Content-Type Header 必须要设置为 application/importmap+json 才能正常加载)。
<script type="importmap" src="importmap.json"></script>
不过尽量不要使用这种方式,因为它的性能比直接内联编写要差。
映射整个包
除了将一个说明符映射到模块之外,你还可以将一个说明符映射到包含多个模块的包:
<script type="importmap">
{
"imports": {
"lodash/": "/node_modules/lodash-es/"
}
}
</script>
这种编写方式可以让你直接导入指定路径中的任何模块,相应的,浏览器也会把所有组件模块下载下来。
<script type="module">
import toUpper from 'lodash/toUpper.js';
import toLower from 'lodash/toLower.js';
console.log(toUpper('ConardLi'));
console.log(toLower('ConardLi'));
</script>
动态映射
你也可以基于一些条件在 script 中添加一个动态映射,比如,在下面的示例中我们通过判断是否存在 IntersectionObserver API 来导入不同文件:
<script>
const importMap = {
imports: {
lazyload: 'IntersectionObserver' in window
? './lazyload.js'
: './lazyload-fallback.js',
},
};
const im = document.createElement('script');
im.type = 'importmap';
im.textContent = JSON.stringify(importMap);
document.currentScript.after(im);
</script>
使用同一模块的不同版本
使用 importmap 我们可以将不同的版本的模块映射到不同的包名中:
<script type="importmap">
{
"imports": {
"lodash@3/": "https://unpkg.com/lodash-es@3.10.1/",
"lodash@4/": "https://unpkg.com/lodash-es@4.17.21/"
}
}
</script>
另外你还可以通过 scopes 来实现同一个包不同模块的更细粒度的版本控制:
<script type="importmap">
{
"imports": {
"lodash/": "https://unpkg.com/lodash-es@4.17.21/"
},
"scopes": {
"/static/js": {
"lodash/": "https://unpkg.com/lodash-es@3.10.1/"
}
}
}
</script>
/static/js 下的模块会使用 3.10.1 版本,而其他模块会使用 4.17.21 版本。
兼容性
这项技术目前在 Chrome 和 Edge 浏览器 89 及更高版本提供了全面支持,但 Firefox、Safari 和一些移动浏览器还没有支持。我们可以通过下面的代码来判断浏览器的支持情况:
if (HTMLScriptElement.supports && HTMLScriptElement.supports('importmap')) {
// import maps is supported
}
对于没有提供支持的浏览器,我们可以使用下面
这个 polyfill:https://github.com/guybedford/es-module-shims
另外官方也推荐了一些其他 importmap 相关的 polyfill 和工具:
随着 Safari 16.4 的发布,WebKit 引擎也支持了 Import Mpas。
ES模块是在web应用程序中包含和重用JavaScript代码的一种现代方式。它们受到现代浏览器的支持,并提供了一些优于旧的非模块化JavaScript开发方法的优势。
使用ES模块的一种现代方式是使用<script type=“importmap”>标记。此标记允许您定义外部模块名称到其相应URL的映射,这使得在代码中包含和使用外部模块变得更容易。
要使用<script type=“importmap”>方法,首先需要将其添加到HTML文档的<head>部分。在标记中,您可以定义一个JSON对象,该对象将模块名称映射到相应的URL。例如:
<script type="importmap">
{
"imports": {
"browser-fs-access": "https://unpkg.com/browser-fs-access@0.33.0/dist/index.modern.js"
}
}
</script>
此代码定义了一个名为“browser fs access”的外部模块,并将其映射到unpkg CDN上托管的浏览器fs访问库的URL。有了这个映射,现在可以使用import关键字在代码中包含浏览器fs访问库。请注意,import关键字仅在具有type=“module”属性的脚本标记中可用。
<button>Select a text file</button>
<script type="module">
import {fileOpen} from 'browser-fs-access';
const button = document.querySelector('button');
button.addEventListener('click', async () => {
const file = await fileOpen({
mimeTypes: ['text/plain'],
});
console.log(await file.text());
});
</script>
与较旧的非模块化JavaScript开发方法相比,使用<script type=“importmap”>标记和import关键字提供了一些好处。它允许您清晰明确地指定代码所依赖的外部模块,这使得代码更容易理解和维护。总的来说,使用带有<script type=“importmap”>标签的ES模块是在web应用程序中包含和重用JavaScript代码的一种现代而强大的方式。您可以按如下方式提供功能检测支持:
if (HTMLScriptElement.supports('importmap')) {
// The importmap feature is supported.
}
一台电脑,一个键盘,尽情挥洒智慧的人生;几行数字,几个字母,认真编写生活的美好;
一 个灵感,一段程序,推动科技进步,促进社会发展。
创作不易,喜欢的老铁们加个关注,点个赞,打个赏,后面会不定期更新干货和技术相关的资讯,速速收藏,谢谢!你们的一个小小举动就是对小编的认可,更是创作的动力。
*请认真填写需求信息,我们会在24小时内与您取得联系。