css选择器中,为什么nth?如何制作nth主题
本文目录
css选择器中,为什么nth
:first-child选择某个元素的第一个子元素;
:last-child选择某个元素的最后一个子元素;
:nth-child()选择某个元素的一个或多个特定的子元素;
:nth-last-child()选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
:nth-of-type()选择指定的元素;
:nth-last-of-type()选择指定的元素,从元素的最后一个开始计算;
:first-of-type选择一个上级元素下的第一个同类子元素;
:last-of-type选择一个上级元素的最后一个同类子元素;
:only-child选择的元素是它的父元素的唯一一个了元素;
:only-of-type选择一个元素是它的上级元素的唯一一个相同类型的子元素;
:empty选择的元素里面没有任何内容。
如何制作nth主题
主题制作算是一个比较麻烦的事情=。=需要花功夫的。3220从5.5版开始可以自定义主题了,一改小3的主题单调的问题,这在3220的版本上是一大突破。既然可以自定义主题了,那么如何自定义主题(包括自定义菜单背景,壁纸,屏保,各菜单图标等)呢?本文将详细讲解如何自己制作自定义的主题。关于主题的制作,诺基亚官方有发布一个主题制作软件:The Nokia Series 40 Theme Studio 1.2,下载地址为 4.把你这做好的主题传入手机并应用,看看自己的手机另类不?嘿嘿~~~~~~~
如何使用css属性nth
1.1、nth-child(n) 父元素下的第n个子元素,n必须大于0,索引都是从1开始。
《div》《p》多云转晴《/p》《p》多云转晴《/p》《p》多云转晴《/p》《p》多云转晴《/p》《p》多云转晴《/p》
《/div》
div p:nth-child(2){background: skyblue;}
1.2、nth-child(odd) 父元素下的奇数子元素 等同于 nth-child(2n-1)
div p:nth-child(odd){background: skyblue;}
1.3、nth-child(even) 父元素下的偶数子元素 同样区分子元素类型 等同于nth-child(2n)
div p:nth-child(even){background: skyblue;}
二、nth-of-type 匹配属于父元素的特定类型的第 N 个子元素的每个元素 忽略不是该类型的元素的存在
《div》《h3》天气《/h3》《p》多云转晴《/p》《p》多云转晴《/p》《p》多云转晴《/p》《p》多云转晴《/p》《p》多云转晴《/p》《/div》
div p:nth-of-type(1){background: skyblue;}
文章来源于网络,望采纳
nth-child 和 nth-type-of 的区别
:nth-child和:nth-of-type都是css3的结构伪类选择器,和他们相关的还有一堆其他的结构伪类选择器,如果搞懂了这两个选择器的话,相应的也能搞懂和他们相关的其他结构伪类选择器啦。
这两个选择器,可不像我们看起来的那么简单,他们的作用相近,却又不完全一样。
定义
我们先来看下这两个选择器的定义:
:nth-child(n) 选择器匹配父元素中的第 n 个子元素,元素类型没有限制。
:nth-of-type(n)选择器匹配同类型中的第n个同级兄弟元素。
n可以是一个数字,一个关键字,或者一个公式。
写个例子看下:
《!DOCTYPE html》
《html》
《head》
《meta charset=“UTF-8“》
《title》:nth-child()和:nth-of-type()的区别《/title》
《style》
.box p:nth-child(2){
color:#fff;
background: orange;
}
《/style》
《/head》
《body》
《div class=“box“》
《h2》我是h2标签《/h2》
《p》我是.box里的第二个子元素,我是第一个p标签《/p》
《p》我是.box里的第三个子元素,我是第二个p标签《/p》
《/div》
《/body》
《/html》
《!DOCTYPE html》
《html》
《head》
《meta charset=“UTF-8“》
《title》:nth-child()和:nth-of-type()的区别《/title》
《style》
.box p:nth-of-type(2){
color:#fff;
background: orange;
}
《/style》
《/head》
《body》
《div class=“box“》
《h2》我是h2标签《/h2》
《p》我是.box里的第二个子元素,我是第一个p标签《/p》
《p》我是.box里的第三个子元素,我是第二个p标签《/p》
《/div》
《/body》
《/html》
《div class=“box“》
《h2》我是h2标签《/h2》
《p》我是.box里的第二个子元素,我是第一个p标签《/p》
《p》我是.box里的第三个子元素,我是第二个p标签《/p》
《/div》
效果如下:
请点击输入图片描述
效果如下:
请点击输入图片描述
一个是.box p:nth-child(2),一个是.box p:nth-of-type(2),括号里面都2,但是效果却不同。那么到底这两个选择器是什么意思呢?
分析:
我们再来看下结构:
.box的子元素有三个,第一个是h2标签,第二个和第三个是p标签。
.box p:nth-child(2)
.box p:nth-child(2)的效果是选择出了第一个p标签,也就是.box里的第二个子元素。
请点击输入图片描述
翻译下:
1.确定了选择的是.box元素里面的p元素。
2.选择的是.box的子元素里面àp元素à的父元素里面的à第二个子元素。
3.我们来分析下第二点到底是什么意思:”.box的子元素里面àp元素”指的是这两个元素:
请点击输入图片描述
4.“ p元素à的父元素”指的就是.box这个元素:
请点击输入图片描述
5.“ 的父元素里面的à第二个子元素”的意思就是:.box这个元素里面的第二个子元素:
6.别忘记我们第1条里面的“确定了选择的是.box元素里面的p元素”,我们确定了这个第二个元素就是p元素,因此得出的效果是:
怎么样?现在明白.box p:nth-child(2)是什么意思了吧~那我们再来看下.box p:nth-of-type(2)吧~
.box p:nth-of-type(2)
.box p:nth-of-type(2)的效果是选择出了第二个p标签,也就是.box里的第三个子元素。
翻译下:
1.确定了选择的是.box元素里面的p元素。
2.选择的是.box的子元素里面àp元素à的父元素里面的à第二个p元素。
3.我们来分析下第二点到底是什么意思:”.box的子元素里面àp元素”指的是这两个元素:
4.“ p元素à的父元素”指的就是.box这个元素:
5.“ 的父元素里面的à第二个p元素”的意思就是:.box这个元素里面的p元素里的第二个,所以这里我们就不用管其他元素,只找p元素就可以了,因此选择出的结果是:
案例中的.box p:nth-child(2)和.box p:nth-of-type(2)区别就在于是第二个子元素还是第二个p元素
其实区别很简单::nth-of-type为什么要叫:nth-of-type?因为它是以“type“来区分的。所以我们只需要找这个类型的元素,其他元素都可以视而不见。
createthread和beginthread的区别
CreateThread、_beginthread和_beginthreadex都是用来启动线程的,但大家看到oldworm没有提供_beginthread的方式,考试,大提示beginthread是_beginthreadex的功能子集,虽然_beginthread内部是调用_beginthreadex但他屏蔽了象安全特性这样的功能,所以_beginthread与CreateThread不是同等级别,_beginthreadex和CreateThread在功能上完全可替代,我们就来比较一下_beginthreadex与CreateThread! CRT的函数库在线程出现之前就已经存在,所以原有的CRT不能真正支持线程,这导致我们在编程的时候有了CRT库的选择,在MSDN中查阅CRT的函数时都有: Libraries LIBC.LIB Single thread static library, retail version LIBCMT.LIB Multithread static library, retail version MSVCRT.LIB Import library for MSVCRT.DLL, retail version 这样的提示! 对于线程的支持是后来的事! 这也导致了许多CRT的函数在多线程的情况下必须有特殊的支持,不能简单的使用CreateThread就OK。 大多的CRT函数都可以在CreateThread线程中使用,看资料说只有signal()函数不可以,会导致进程终止!但可以用并不是说没有问题! 有些CRT的函数象malloc(), fopen(), _open(), strtok(), ctime(), 或localtime()等函数需要专门的线程局部存储的数据块,这个数据块通常需要在创建线程的时候就建立,如果使用CreateThread,这个数据块就没有建立,然后会怎样呢?在这样的线程中还是可以使用这些函数而且没有出错,实际上函数发现这个数据块的指针为空时,会自己建立一个,然后将其与线程联系在一起,这意味着如果你用CreateThread来创建线程,然后使用这样的函数,会有一块内存在不知不觉中创建,遗憾的是,这些函数并不将其删除,而CreateThread和ExitThread也无法知道这件事,于是就会有Memory Leak,在线程频繁启动的软件中(比如某些服务器软件),迟早会让系统的内存资源耗尽! _beginthreadex(内部也调用CreateThread)和_endthreadex就对这个内存块做了处理,所以没有问题!(不会有人故意用CreateThread创建然后用_endthreadex终止吧,而且线程的终止最好不要显式的调用终止函数,自然退出最好!) 谈到Handle的问题,_beginthread的对应函数_endthread自动的调用了CloseHandle,而_beginthreadex的对应函数_endthreadex则没有,所以CloseHandle无论如何都是要调用的不过_endthread可以帮你执行自己不必写,其他两种就需要自己写!(Jeffrey Richter强烈推荐尽量不用显式的终止函数,用自然退出的方式,自然退出当然就一定要自己写CloseHandle)。
更多文章:

exit setup是什么意思(电脑上出现:discard.changes.and.exit.setup.是什么意思)
2025年2月20日 13:00

freebsd为何败给linux(难道linux的开发者们不想linux普及吗)
2025年2月12日 12:50

continue语句的作用是使程序的执行流程跳出包含它的所有循环(C语言中 continue的作用)
2025年3月10日 03:10

拍摄夜景时,该如何设置相机?vscode需要怎么设置,才可以在编辑器内部调试java
2025年3月4日 21:50

adverse selection(Adverse selection为什么不翻译成有害选择或不利选择,而是译成)
2025年3月20日 04:10