:first-of-type能不能用:nth-child(n)代替?

:first-of-type能不能用:nth-child(n)代替?

/* main */

.main { position: relative; width: 1200px; height: 473px; margin: 34px auto 0; }

.main h1 { font-size: 30px; font-weight: lighter; margin-bottom: 23px; }

.main h1 > samp { font-size: 30px; color: #7c7c7c; }

.main > aside { float: left; width: 450px; }

.main > aside > dl { position: relative; display: block; height: 74px; margin-bottom: 17px; }

.main > aside > dl > dt { position: absolute; top: -1px; left: 92px; font-size: 16px; font-weight: bold; line-height: 16px; text-decoration: underline; }

.main > aside > dl > dd:first-of-type { position: absolute; left: 0; }

.main > aside > dl > dd:last-of-type { position: absolute; top: 20px; left: 90px; }

.main > article { float: right; width: 720px; overflow: hidden; }

.main > article > p,

.main > article > img { margin-bottom: 20px; }

<section class="main">

<aside>

<h1>Recent <samp>Course</samp></h1>

<dl>

<dt>Hyper Text Markup Language</dt>

<dd><img src="images/Course/05_05.png"></dd>

<dd>HTML is the standard markup language used to create web pages and its elements form the building blocks of all websites.</dd>

</dl>

<dl>

<dt>Cascading Style Sheets</dt>

<dd><img src="images/Course/06_04.png"></dd>

<dd>Cascading Style Sheets (CSS) is a simple mechanism for adding style (e.g., fonts, colors, spacing) to Web documents.</dd>

</dl>

<dl>

<dt>JavaScript</dt>

<dd><img src="images/Course/09_07.png"></dd>

<dd>JavaScript is a high-level, dynamic, untyped, and interpreted programming language.</dd>

</dl>

<dl>

<dt>AngularJS</dt>

<dd><img src="images/Course/02_09.png"></dd>

<dd>AngularJS is an open-source web application framework mainly maintained by Google and by a community of individuals and...</dd>

</dl>

</aside>

<article>

<h1>Welcome to <samp>Massive Open Online Course!</samp></h1>

<p>We provide the latest knowledge to help you cope with the changing world!</p>

<img src="images/article.jpg">

<p>We hope that all the students who love the Internet can be more convenient access to learning resources, using the Internet thinking to change our learning.</p>

<p>Focus on IT skills education MOOC, consistent with the development trend of the Internet down to earth's MOOC. We are free, we only teach useful, we concentrate on education.</p>

</article>

</section>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,可以使用nth-child代替,本代码中需要改为如下:

http://img1.sycdn.imooc.com//climg/5dc7a3ce09d1d22b03720069.jpg

另外,同学可能疑惑为啥这里括号中不是1而是2,这是因为nth-child和first-of-type是有区别的,这里给同学举一个小例子理解一下它们的区别:

http://img1.sycdn.imooc.com//climg/5dc7a4cc0920cdd601750103.jpg

:nth-child()在匹配下标的时候是不论元素类型的。例如,nth-child(1)在寻找计算下标的时候,会把p的其他类型的兄弟元素都算在内。h1下标为1 ,nth-child(1)匹配的就是h1 。

http://img1.sycdn.imooc.com//climg/5dc7a4ff09f8d77d01880061.jpg

而 :nth-child(1)前面规定了p , p:nth-child(1)选择下标为1的元素,并且这个元素为p 。没有符合的元素,所以没有选择任何元素。

http://img1.sycdn.imooc.com//climg/5dc7a53109d4245d00790206.jpg

 而p:first-of-type,在计算下标的时候,只会从第一个p元素开始,所以不管有没有h1 ,它都会选择第一个p元素。

http://img1.sycdn.imooc.com//climg/5dc7a58a0988912901030207.jpg

如果想要使用nth-child()代替p:first-of-type,则需要改为p:nth-child(2)哦

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师