Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
網(wǎng)頁(yè)設(shè)計(jì)中,a標(biāo)簽是用來(lái)創(chuàng)建超鏈接的標(biāo)簽。通過(guò)a標(biāo)簽,我們可以方便地實(shí)現(xiàn)頁(yè)面之間的跳轉(zhuǎn)。當(dāng)用戶點(diǎn)擊a標(biāo)簽時(shí),瀏覽器會(huì)根據(jù)標(biāo)簽中的href屬性的值來(lái)加載相應(yīng)的頁(yè)面。a標(biāo)簽的使用非常廣泛,可以用于跳轉(zhuǎn)到其他頁(yè)面、下載文件、發(fā)送郵件等。
在使用a標(biāo)簽時(shí),我們需要注意以下幾點(diǎn):
1. href屬性:href屬性用于指定鏈接的目標(biāo)地址??梢允且粋€(gè)絕對(duì)路徑(如http://www.example.com)或相對(duì)路徑(如./about.html)。如果要在當(dāng)前頁(yè)面打開鏈接,可以使用空值或者#作為href屬性的值。
2. target屬性:target屬性用于指定鏈接在何處打開。常用的取值有_blank(在新窗口打開)、_self(在當(dāng)前窗口打開)、_parent(在父窗口打開)、_top(在頂層窗口打開)。如果不指定target屬性,則默認(rèn)在當(dāng)前窗口打開。
3. title屬性:title屬性用于為鏈接添加提示信息。當(dāng)用戶將鼠標(biāo)懸停在鏈接上時(shí),會(huì)顯示title屬性中的內(nèi)容。
4. rel屬性:rel屬性用于指定鏈接與當(dāng)前頁(yè)面的關(guān)系。常用的取值有nofollow(告訴搜索引擎不要跟蹤鏈接)、noopener(防止通過(guò)鏈接打開的新窗口訪問(wèn)原始頁(yè)面)、noreferrer(防止通過(guò)鏈接打開的新窗口訪問(wèn)原始頁(yè)面并且不傳遞referrer信息)。
5. download屬性:download屬性用于指定鏈接下載文件時(shí)的文件名。當(dāng)用戶點(diǎn)擊鏈接時(shí),瀏覽器會(huì)自動(dòng)下載指定的文件,并使用download屬性指定的文件名保存。
除了以上幾點(diǎn),還可以通過(guò)CSS樣式來(lái)美化a標(biāo)簽,如改變鏈接的顏色、添加下劃線等。
a標(biāo)簽是實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的重要標(biāo)簽,合理的使用a標(biāo)簽可以提升用戶體驗(yàn),增加網(wǎng)站的功能。
們今天來(lái)分析解釋一下這個(gè)表達(dá)式string hrefPattern = @"href\s*=\s*(?:""'[""']|(?<1>[^>\s]+))";,并用實(shí)例演示用法。這個(gè)正則表達(dá)式用于從文本中提取href屬性的值,這些值可以是被單引號(hào)或雙引號(hào)包圍的,或者是不包含大于符號(hào)和空白字符的文本。我們分解這個(gè)正則表達(dá)式來(lái)詳細(xì)解釋它的各個(gè)部分:
1. href\s*=\s*: 這部分匹配 href 關(guān)鍵字,后面可以跟著零個(gè)或多個(gè)空白字符,然后是一個(gè)等號(hào),再然后又是零個(gè)或多個(gè)空白字符。其中href: 直接匹配文本中的"href",這是HTML中表示鏈接地址的屬性名稱。\s*=\s*: 匹配等號(hào)(=),等號(hào)前后可以有0個(gè)或多個(gè)空白字符(包括空格、制表符、換行符等)。
2. (?:...): 這是一個(gè)非捕獲組,意味著它會(huì)匹配括號(hào)內(nèi)的內(nèi)容,但不會(huì)為其創(chuàng)建一個(gè)捕獲組。這意味著我們不能直接從匹配結(jié)果中提取這部分內(nèi)容。
3. [""'](?<1>[^""']*)[""']: 這部分匹配被單引號(hào)或雙引號(hào)包圍的任何內(nèi)容。具體來(lái)說(shuō):
1. [""']: 匹配一個(gè)單引號(hào)或雙引號(hào)。
2. (?<1>[^\"']*): 創(chuàng)建了一個(gè)命名捕獲組,名為1,用來(lái)捕獲在引號(hào)之間的任何非引號(hào)字符序列,這就是href屬性的值。(?<1>...): 這是一個(gè)命名捕獲組,但這里它被放在了一個(gè)非捕獲組內(nèi),這意味著它不會(huì)捕獲匹配的內(nèi)容。
3. [^""']*: 匹配任何不是單引號(hào)或雙引號(hào)的字符零次或多次。
4. [""']: 再次匹配一個(gè)單引號(hào)或雙引號(hào)。
4. |: 或者操作符,表示前面的模式和后面的模式中的任何一個(gè)可以匹配。又叫管道符號(hào),代表邏輯“或”操作,也就是表示前面的模式與后面的模式任一滿足即可。
5. (?<1>[^>\s]+): 這部分匹配任何不是大于符號(hào)或空白字符的字符一次或多次。這也是一個(gè)命名捕獲組,但同樣,它被放在了一個(gè)非捕獲組內(nèi)。當(dāng)href值沒有被引號(hào)包圍時(shí)使用。也就是這部分匹配不是大于符號(hào)(>)和空白字符的任何字符1次或多次,但不包括引號(hào)。
綜上所述,此正則表達(dá)式能夠處理以下兩種格式的href屬性及其值:
1. 被引號(hào)包圍的情況:<a href="http://example.com">...</a> 或 <a href='http://example.com'>...</a>
2. 未被引號(hào)包圍的情況:<a href=http://example.com>...</a>
實(shí)例演示用法:
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}");
}
}
}
}
運(yùn)行這段代碼后,將輸出如下結(jié)果:
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
為了給大家演示如何使用這個(gè)正則表達(dá)式,我們?cè)倏匆韵吕樱?/p>
假設(shè)我們有以下的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>
使用上述的正則表達(dá)式,我們可以提取所有的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\"
注意,這個(gè)正則表達(dá)式并不完美,它可能無(wú)法處理所有可能的HTML格式,但對(duì)于簡(jiǎn)單的用途來(lái)說(shuō)可能已經(jīng)足夠了。
TML常用標(biāo)簽有:a標(biāo)簽、table標(biāo)簽、img標(biāo)簽、form標(biāo)簽和input標(biāo)簽。
作用
屬性
(一)href
href是hyper reference的縮寫,超鏈接的意思。
用于指定鏈接目標(biāo)的ur地址,(必須屬性)當(dāng)為標(biāo)簽應(yīng)用href屬性時(shí),它就具有了超鏈接的功能;
href=“#”表示這是一個(gè)空鏈接;
如果href里面地址是—個(gè)文件或者壓縮包,會(huì)下載這個(gè)文件。
<a href="https://google.com">超鏈接到google網(wǎng)站的主頁(yè)</a>
<a href="https://google.com">超鏈接到google的主頁(yè)</a>
<a href="//google.com">超鏈接到google的主頁(yè)</a>
展現(xiàn)形式:
點(diǎn)擊此鏈接,即可到達(dá)google的主頁(yè)
a標(biāo)簽href的取值:
1、上述代碼中的網(wǎng)址的取值(推薦使用第三行的代碼)
<a href="//google.com">超鏈接到google的主頁(yè)</a>
由于此方式能夠自動(dòng)補(bǔ)齊相關(guān)的網(wǎng)絡(luò)地址,前面兩種寫錯(cuò)就會(huì)報(bào)錯(cuò),所以推薦使用。
2、路徑
當(dāng)前路徑下的a里面的b,b里面的c
在當(dāng)前目錄下尋找index.html文件
3、偽協(xié)議
<a href="javascript:;">點(diǎn)擊后無(wú)任何點(diǎn)擊或刷新等動(dòng)作的反應(yīng)</a>
<a href="#要跳轉(zhuǎn)的元素的id"></a>
點(diǎn)擊鏈接的時(shí)候,會(huì)跳轉(zhuǎn)到指定元素所在的位置。
<a href="mailto:abcdefg@163.com ">發(fā)郵件給我</a>
<a href="tel:12345678901">打電話給我</a>
(二)targe
用于指定鏈接頁(yè)面的打開方式
a的target取值
1、內(nèi)置名字
_blank 在空白頁(yè)打開
_self 在當(dāng)前頁(yè)面打開
_parent 在父級(jí)窗口打開
_top 在最頂級(jí)的窗口打開
<a href="//google.com" target="_blank">超鏈接到google網(wǎng)站的主頁(yè)在空白頁(yè)打開</a>
2、程序員的命名
window:name(在xxx頁(yè)面打開)
iframe的name(iframe現(xiàn)在已經(jīng)很少使用了,是指內(nèi)嵌窗口)
(三)download
下載頁(yè)面,但目前很少用,有的瀏覽器不支持,尤其是手機(jī)瀏覽器可能不支持。
1、table標(biāo)簽的語(yǔ)法:
thead:表頭
tbody:表的內(nèi)容,用于定義
tfoot:表的腳部
tr:table row,表格里的行
th:表格的表頭部分,其中的文本內(nèi)容字體加粗居中顯示
td:table data,表格數(shù)據(jù),用于定義表格中的單元格
<!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>小藍(lán)</th>
</tr>
</thead>
<tbody>
<tr>
<th>數(shù)學(xué)</th>
<td>90</td>
<td>60</td>
<td>80</td>
</tr>
<tr>
<th>語(yǔ)文</th>
<td>88</td>
<td>95</td>
<td>97</td>
</tr>
<tr>
<th>英語(yǔ)</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標(biāo)簽為空
2、table的樣式
table-layout:auto;自動(dòng)計(jì)算每一行的寬高
table-layout:fixed;通過(guò)列表的寬度來(lái)決定平均寬度
border-collapse:collapse; 合并邊框(默認(rèn)邊框與邊框之間不合并)
border-spacing:0;邊框?yàn)?.(邊框與邊框之間的距離)。
作用:發(fā)出get請(qǐng)求,展示一張圖片。
<img src="1.JPG" alt="頭像" width="400" />
當(dāng)前路徑下的1.jpg,確定寬度為400,只寫寬度高度會(huì)自適應(yīng)
屬性
alt:alternate的縮寫,替換的意思。替換文本,圖像不能顯示的文字。
路徑錯(cuò)誤顯示alt內(nèi)容
title:提示文本。鼠標(biāo)放到圖像上,顯示的文字。
響應(yīng)
max-width:100% 所有的圖片在手機(jī)上都自適應(yīng)寬度,寬度最大為100%。
事件
onload/onerror 監(jiān)聽圖片是否加載成功,加載成功時(shí)用onload,不成功是用onerror事件。確保在onerror事件能夠補(bǔ)救。
<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>
監(jiān)聽成功時(shí),打印出成功
監(jiān)聽失敗時(shí),先打印出監(jiān)聽失敗并且開始執(zhí)行加載失敗是的挽救圖片。404.jpg文件執(zhí)行
本文為作者本人的原創(chuàng)文章,著作權(quán)歸作者本人和饑人谷所有,轉(zhuǎn)載務(wù)必注明來(lái)源。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。