网页设计中,a标签是用来创建超链接的标签。通过a标签,我们可以方便地实现页面之间的跳转。当用户点击a标签时,浏览器会根据标签中的href属性的值来加载相应的页面。a标签的使用非常广泛,可以用于跳转到其他页面、下载文件、发送邮件等。
在使用a标签时,我们需要注意以下几点:
1. href属性:href属性用于指定链接的目标地址。可以是一个绝对路径(如http://www.example.com)或相对路径(如./about.html)。如果要在当前页面打开链接,可以使用空值或者#作为href属性的值。
2. target属性:target属性用于指定链接在何处打开。常用的取值有_blank(在新窗口打开)、_self(在当前窗口打开)、_parent(在父窗口打开)、_top(在顶层窗口打开)。如果不指定target属性,则默认在当前窗口打开。
3. title属性:title属性用于为链接添加提示信息。当用户将鼠标悬停在链接上时,会显示title属性中的内容。
4. rel属性:rel属性用于指定链接与当前页面的关系。常用的取值有nofollow(告诉搜索引擎不要跟踪链接)、noopener(防止通过链接打开的新窗口访问原始页面)、noreferrer(防止通过链接打开的新窗口访问原始页面并且不传递referrer信息)。
5. download属性:download属性用于指定链接下载文件时的文件名。当用户点击链接时,浏览器会自动下载指定的文件,并使用download属性指定的文件名保存。
除了以上几点,还可以通过CSS样式来美化a标签,如改变链接的颜色、添加下划线等。
a标签是实现页面跳转的重要标签,合理的使用a标签可以提升用户体验,增加网站的功能。
们今天来分析解释一下这个表达式string hrefPattern = @"href\s*=\s*(?:""'[""']|(?<1>[^>\s]+))";,并用实例演示用法。这个正则表达式用于从文本中提取href属性的值,这些值可以是被单引号或双引号包围的,或者是不包含大于符号和空白字符的文本。我们分解这个正则表达式来详细解释它的各个部分:
1. href\s*=\s*: 这部分匹配 href 关键字,后面可以跟着零个或多个空白字符,然后是一个等号,再然后又是零个或多个空白字符。其中href: 直接匹配文本中的"href",这是HTML中表示链接地址的属性名称。\s*=\s*: 匹配等号(=),等号前后可以有0个或多个空白字符(包括空格、制表符、换行符等)。
2. (?:...): 这是一个非捕获组,意味着它会匹配括号内的内容,但不会为其创建一个捕获组。这意味着我们不能直接从匹配结果中提取这部分内容。
3. [""'](?<1>[^""']*)[""']: 这部分匹配被单引号或双引号包围的任何内容。具体来说:
1. [""']: 匹配一个单引号或双引号。
2. (?<1>[^\"']*): 创建了一个命名捕获组,名为1,用来捕获在引号之间的任何非引号字符序列,这就是href属性的值。(?<1>...): 这是一个命名捕获组,但这里它被放在了一个非捕获组内,这意味着它不会捕获匹配的内容。
3. [^""']*: 匹配任何不是单引号或双引号的字符零次或多次。
4. [""']: 再次匹配一个单引号或双引号。
4. |: 或者操作符,表示前面的模式和后面的模式中的任何一个可以匹配。又叫管道符号,代表逻辑“或”操作,也就是表示前面的模式与后面的模式任一满足即可。
5. (?<1>[^>\s]+): 这部分匹配任何不是大于符号或空白字符的字符一次或多次。这也是一个命名捕获组,但同样,它被放在了一个非捕获组内。当href值没有被引号包围时使用。也就是这部分匹配不是大于符号(>)和空白字符的任何字符1次或多次,但不包括引号。
综上所述,此正则表达式能够处理以下两种格式的href属性及其值:
1. 被引号包围的情况:<a href="http://example.com">...</a> 或 <a href='http://example.com'>...</a>
2. 未被引号包围的情况:<a href=http://example.com>...</a>
实例演示用法:
using System.Text.RegularExpressions;
namespace ConsoleAppC
{
internal class Program
{
static void Main(string[] args)
{
string inputString = @"<a href=""http://example.com"">Link</a>
<a href='http://another.example.com'>Another Link</a>
<a href=http://noquotes.example.com>No Quotes Link</a>";
string hrefPattern = @"href\s*=\s*(?:[""'](?<1>[^""']*)[""']|(?<1>[^>\s]+))";
MatchCollection matches = Regex.Matches(inputString, hrefPattern);
foreach (Match match in matches)
{
Console.WriteLine(match.Value); // 输出匹配到的href属性值
Console.WriteLine($"Found href value: {match.Groups[1].Value} at index: {match.Groups[1].Index}");
}
}
}
}
运行这段代码后,将输出如下结果:
href="http://example.com"
Found href value: http://example.com at index: 9
href='http://another.example.com'
Found href value: http://another.example.com at index: 72
href=http://noquotes.example.com
Found href value: http://noquotes.example.com at index: 150
为了给大家演示如何使用这个正则表达式,我们再看以下例子:
假设我们有以下的HTML片段:
<a href="https://www.example.com">Click here</a>
<a href='https://www.example.org'>Go there</a>
<a href="https://www.example.net" target="_blank">Open external link</a>
使用上述的正则表达式,我们可以提取所有的href属性值:
string input = @"<a href=\""https://www.example.com\"">Click here</a>
<a href='https://www.example.org'>Go there</a>
<a href=\""https://www.example.net\"" target=\""_blank\"">Open external link</a>";
代码为:
string hrefPattern = @"href\s*=\s*(?:[""'](?<1>[^""']*)[""']|(?<1>[^>\s]+))";
Regex regex = new Regex(hrefPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
MatchCollection matches = regex.Matches(input);
foreach (Match match in matches)
{
Console.WriteLine($"Found href: {match.Groups["1"].Value}");
}
string input = @"<a href=\""https://www.example.com\"">Click here</a>
输出将是:
Found href: \"https://www.example.com\"
Found href: https://www.example.org
Found href: \"https://www.example.net\"
注意,这个正则表达式并不完美,它可能无法处理所有可能的HTML格式,但对于简单的用途来说可能已经足够了。
TML常用标签有:a标签、table标签、img标签、form标签和input标签。
作用
属性
(一)href
href是hyper reference的缩写,超链接的意思。
用于指定链接目标的ur地址,(必须属性)当为标签应用href属性时,它就具有了超链接的功能;
href=“#”表示这是一个空链接;
如果href里面地址是—个文件或者压缩包,会下载这个文件。
<a href="https://google.com">超链接到google网站的主页</a>
<a href="https://google.com">超链接到google的主页</a>
<a href="//google.com">超链接到google的主页</a>
展现形式:
点击此链接,即可到达google的主页
a标签href的取值:
1、上述代码中的网址的取值(推荐使用第三行的代码)
<a href="//google.com">超链接到google的主页</a>
由于此方式能够自动补齐相关的网络地址,前面两种写错就会报错,所以推荐使用。
2、路径
当前路径下的a里面的b,b里面的c
在当前目录下寻找index.html文件
3、伪协议
<a href="javascript:;">点击后无任何点击或刷新等动作的反应</a>
<a href="#要跳转的元素的id"></a>
点击链接的时候,会跳转到指定元素所在的位置。
<a href="mailto:abcdefg@163.com ">发邮件给我</a>
<a href="tel:12345678901">打电话给我</a>
(二)targe
用于指定链接页面的打开方式
a的target取值
1、内置名字
_blank 在空白页打开
_self 在当前页面打开
_parent 在父级窗口打开
_top 在最顶级的窗口打开
<a href="//google.com" target="_blank">超链接到google网站的主页在空白页打开</a>
2、程序员的命名
window:name(在xxx页面打开)
iframe的name(iframe现在已经很少使用了,是指内嵌窗口)
(三)download
下载页面,但目前很少用,有的浏览器不支持,尤其是手机浏览器可能不支持。
1、table标签的语法:
thead:表头
tbody:表的内容,用于定义
tfoot:表的脚部
tr:table row,表格里的行
th:表格的表头部分,其中的文本内容字体加粗居中显示
td:table data,表格数据,用于定义表格中的单元格
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body>
<table>
<thead>
<tr>
<th></th>
<th>小红</th>
<th>小黄</th>
<th>小蓝</th>
</tr>
</thead>
<tbody>
<tr>
<th>数学</th>
<td>90</td>
<td>60</td>
<td>80</td>
</tr>
<tr>
<th>语文</th>
<td>88</td>
<td>95</td>
<td>97</td>
</tr>
<tr>
<th>英语</th>
<td>88</td>
<td>95</td>
<td>97</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>总分</th>
<td>266</td>
<td>250</td>
<td>274</td>
</tr>
</tfoot>
</table>
</body>
</html>
第一行的th标签为空
2、table的样式
table-layout:auto;自动计算每一行的宽高
table-layout:fixed;通过列表的宽度来决定平均宽度
border-collapse:collapse; 合并边框(默认边框与边框之间不合并)
border-spacing:0;边框为0.(边框与边框之间的距离)。
作用:发出get请求,展示一张图片。
<img src="1.JPG" alt="头像" width="400" />
当前路径下的1.jpg,确定宽度为400,只写宽度高度会自适应
属性
alt:alternate的缩写,替换的意思。替换文本,图像不能显示的文字。
路径错误显示alt内容
title:提示文本。鼠标放到图像上,显示的文字。
响应
max-width:100% 所有的图片在手机上都自适应宽度,宽度最大为100%。
事件
onload/onerror 监听图片是否加载成功,加载成功时用onload,不成功是用onerror事件。确保在onerror事件能够补救。
<body>
<img id="xxx" src="dog.jpg" alt="一只小狗">
<script>
xxx.onload = function () {
console.log("图片加载成功");
};
xxx.onerror = function () {
console.log("图片加载失败");
xxx.src = "/404.jpg";
};
</script>
</body>
监听成功时,打印出成功
监听失败时,先打印出监听失败并且开始执行加载失败是的挽救图片。404.jpg文件执行
本文为作者本人的原创文章,著作权归作者本人和饥人谷所有,转载务必注明来源。
*请认真填写需求信息,我们会在24小时内与您取得联系。