91 lines
4.2 KiB
Markdown
91 lines
4.2 KiB
Markdown
---
|
||
id: bad87fee1348bd9aede08817
|
||
title: Nest an Anchor Element within a Paragraph
|
||
challengeType: 0
|
||
videoUrl: 'https://scrimba.com/p/pVMPUv/cb6k8Cb'
|
||
forumTopicId: 18244
|
||
localeTitle: 将 a 嵌套在段落中
|
||
---
|
||
|
||
## Description
|
||
<section id='description'>
|
||
|
||
你可以在其他文本元素内嵌套链接。
|
||
|
||
```html
|
||
<p>
|
||
Here's a <a target="_blank" href="http://freecodecamp.org"> link to freecodecamp.org</a> for you to follow.
|
||
</p>
|
||
```
|
||
|
||
让我们来分解这个例子:
|
||
通常,文本是被包裹在<code>p</code>段落内:<br><code><p> Here's a ... for you to follow. </p></code>
|
||
接下来是<code>anchor</code> <code>a</code> <code><a></code>(需要结束标记 <code></a></code>):<br> <code><a> ... </a></code>
|
||
<code>target</code>是 <code>a</code> 的一个属性,用来指定链接的打开方式。属性值 <code>"_blank"</code> 的意思是链接会在新标签页打开。
|
||
<code>href</code>是 <code>a</code> 的另一个属性:用来指定链接的 URL:<br>`<a href="https://freecodecamp.org"> ... </a>`
|
||
<code>a</code> 元素内的文本:<strong>"link to freecodecamp.org"</strong>,会显示为一个可以点击的链接:<br> <code><a href=" ... ">link to freecodecamp.org</a></code>
|
||
例子的最后输出将会是这样:<br><p>Here's a <a target="_blank" href="http://freecodecamp.one"> link to freecodecamp.org</a> for you to follow.</p>
|
||
</section>
|
||
|
||
## Instructions
|
||
<section id='instructions'>
|
||
|
||
用一个段落(<code>p</code>)标签来包裹<code>main</code>元素里的<code>a</code>节点。新段落的文本为:“View more cat photos”,其中 "cat photos" 是一个链接,其余是纯文本。
|
||
</section>
|
||
|
||
## Tests
|
||
<section id='tests'>
|
||
|
||
```yml
|
||
tests:
|
||
- text: '你需要一个指向 "https://freecatphotoapp.com" 的 <code>a</code> 。'
|
||
testString: assert(($("a[href=\"https://freecatphotoapp.com\"]").length > 0 || $("a[href=\"http://www.freecatphotoapp.com\"]").length > 0));
|
||
- text: '<code>a</code> 的文本应为:cat photos。'
|
||
testString: assert($("a").text().match(/cat\sphotos/gi));
|
||
- text: '在 <code>a</code> 的外部创建一个新段落,这样页面就有 3 个段落了。'
|
||
testString: assert($("p") && $("p").length > 2);
|
||
- text: '<code>a</code> 应嵌套在新段落内。'
|
||
testString: assert(($("a[href=\"https://freecatphotoapp.com\"]").parent().is("p") || $("a[href=\"http://www.freecatphotoapp.com\"]").parent().is("p")));
|
||
- text: '段落应该包含文本 View more(记得 more 后面有一个空格)。'
|
||
testString: assert(($("a[href=\"https://freecatphotoapp.com\"]").parent().text().match(/View\smore\s/gi) || $("a[href=\"http://www.freecatphotoapp.com\"]").parent().text().match(/View\smore\s/gi)));
|
||
- text: '<code>a</code> 不应该包含文本 View more。'
|
||
testString: assert(!$("a").text().match(/View\smore/gi));
|
||
- text: '确保每个段落有结束标记。'
|
||
testString: assert(code.match(/<\/p>/g) && code.match(/<p/g) && code.match(/<\/p>/g).length === code.match(/<p/g).length);
|
||
- text: '确保每个段落有结束标记。'
|
||
testString: assert(code.match(/<\/a>/g) && code.match(/<a/g) && code.match(/<\/a>/g).length === code.match(/<a/g).length);
|
||
|
||
```
|
||
|
||
</section>
|
||
|
||
## Challenge Seed
|
||
<section id='challengeSeed'>
|
||
|
||
<div id='html-seed'>
|
||
|
||
```html
|
||
<h2>CatPhotoApp</h2>
|
||
<main>
|
||
|
||
<a href="https://freecatphotoapp.com" target="_blank">cat photos</a>
|
||
|
||
<img src="https://bit.ly/fcc-relaxing-cat" alt="一只仰卧着的萌猫">
|
||
|
||
<p>在大家心目中,猫是慵懒和可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。</p>
|
||
<p>养猫有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,猫咪会到处掉毛,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,猫咪慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。</p>
|
||
</main>
|
||
```
|
||
|
||
</div>
|
||
|
||
|
||
|
||
</section>
|
||
|
||
## Solution
|
||
<section id='solution'>
|
||
|
||
</section>
|
||
|