10-CSS基础-CSS选择器

10-CSS基础-CSS选择器

 


CSS选择器

https://i-blog.csdnimg.cn/blog_migrate/6cadd221ded419781a9dc0f10092ed83.webp?x-image-process=image/format,png

标签选择器

  • 什么是标签选择器?
  • 作用: 根据指定的标签名称, 在当前界面中找到所有该名称的标签, 然后设置属性
  • 格式:

标签名称{

    属性:;

}

  • 注意点:
  • 标签选择器选中的是当前界面中所有的标签, 而不能单独选中某一个标签
  • 标签选择器无论标签藏得多深都能选中

 

id选择器

  • 什么是id选择器?
  • 作用: 根据指定的id名称找到对应的标签, 然后设置属性

每个标签都可以设置idid是唯一的,例如给p标签设置id<p id=”identify1”></p>

  • 格式:

#id名称{

    属性:;

}

  • 注意点:
  • 每个HTML标签都有一个属性叫做id, 也就是说每个标签都可以设置id
  • 在同一个界面中id的名称是不可以重复的
  • 在编写id选择器时一定要在id名称前面加上#
  • id的名称是有一定的规范的:
  • id的名称只能由字母/数字/下划线(a-z 0-9 _)
  • id名称不能以数字开头
  • id名称不能是HTML标签的名称()不能是a h1 img input ...)
  • 在企业开发中一般情况下如果仅仅是为了设置样式, 我们不会使用id ,因为在前端开发中id一般留给js使用的

 

 

 

类选择器

  • 什么是类选择器?
  • 作用: 根据指定的类名称找到对应的标签, 然后设置属性
  • 格式:

.类名{

    属性:;

}

  • 注意点:
  • 每个HTML标签都有一个属性叫做class, 也就是说每个标签都可以设置类名
  • 在同一个界面中class的名称是可以重复的
  • 在编写class选择器时一定要在class名称前面加上点
  • 类名的命名规范和id名称的命名规范一样
  • 类名就是专门用来给CSS设置样式的
  • HTML中每个标签可以同时绑定多个类名

格式:

<标签名称 class="类名1 类名2 ...">

<p class="para1 para2">

 

错误的写法:

<p class="para1" class="para2">

 

 

 

id选择器和类选择器

  • idclass的区别?
  • 1.1
    id
    相当于人的身份证不可以重复
    class相当于人的名称可以重复
  • 1.2
    一个HTML标签只能绑定一个id名称
    一个HTML标签可以绑定多个class名称
  • id选择器和class选择器区别?
  • id选择器是以#开头
  • class选择器是以.开头
  • 在企业开发中到底用id选择器还是用class选择器?
  • id一般情况下是给js使用的, 所以除非特殊情况, 否则不要使用id去设置样式
  • 在企业开发中一个开发人员对类的使用可以看出这个开发人员的技术水平
    一般情况下在企业开发中要注重冗余代码的抽取, 可以将一些公共的代码抽取到一个类选择器中, 然后让标签和这个类选择器绑定即可

 

后代选择器

  • 什么是后代选择器?
  • 作用: 找到指定标签的所有特定的后代标签, 设置属性
  • 格式:

标签名称1 标签名称2{

    属性:;

}

  • 先找到所有名称叫做"标签名称1"的标签, 然后再在这个标签下面去查找所有名称叫做"标签名称2"的标签, 然后在设置属性
  • 注意点:
  • 后代选择器必须用空格隔开
  • 后代不仅仅是儿子, 也包括孙子/重孙子, 只要最终是放到指定标签中的都是后代
  • 后代选择器不仅仅可以使用标签名称, 还可以使用其它选择器
  • 后代选择器可以通过空格一直延续下去

子元素选择器

  • 什么是子元素选择器?
  • 作用: 找到指定标签中所有特定的直接子元素, 然后设置属性
  • 格式:

标签名称1>标签名称2{

    属性:;

}

  • 先找到所有名称叫做"标签名称1"的标签, 然后在这个标签中查找所有直接子元素名称叫做"标签名称2"的元素
  • 注意点:
  • 子元素选择器只会查找儿子, 不会查找其他被嵌套的标签
  • 子元素选择器之间需要用>符号连接, 并且不能有空格
  • 子元素选择器不仅仅可以使用标签名称, 还可以使用其它选择器
  • 子元素选择器可以通过>符号一直延续下去

 

后代选择器和子元素选择器

  • 后代选择器和子元素选择器之间的区别?
  • 1.1
    后代选择器使用空格作为连接符号
    子元素选择器使用>作为连接符号
  • 1.2
    后代选择器会选中指定标签中, 所有的特定后代标签, 也就是会选中儿子/孙子..., 只要是被放到指定标签中的特定标签都会被选中
    子元素选择器只会选中指定标签中, 所有的特定的直接标签, 也就是只会选中特定的儿子标签
  • 后代选择器和子元素选择器之间的共同点
  • 2.1
    后代选择器和子元素选择器都可以使用标签名称/id名称/class名称来作为选择器
  • 2.2
    后代选择器和子元素选择器都可以通过各自的连接符号一直延续下去
    选择器1>选择器2>选择器3>选择器4{}
  • 在企业开发中如何选择
  • 如果想选中指定标签中的所有特定的标签, 那么就使用后代选择器
  • 如果只想选中指定标签中的所有特定儿子标签, 那么就使用子元素选择器

 

交集选择器

  • 什么是交集选择器?
  • 作用: 给所有选择器选中的标签中, 相交的那部分标签设置属性
  • 格式:

选择器1选择器2{

    属性: ;

}

  • 注意点:
  • 选择器和选择器之间没有任何的连接符号
  • 选择器可以使用标签名称/id名称/class名称
  • 交集选择器仅仅作为了解, 企业开发中用的并不多

 

并集选择器

  • 什么是并集选择器?
  • 作用: 给所有选择器选中的标签设置属性
  • 格式:

选择器1,选择器2{

    属性:;

}

  • 注意点:
  • 并集选择器必须使用,来连接
  • 选择器可以使用标签名称/id名称/class名称

 

兄弟选择器

相邻兄弟选择器

  • 什么是相邻兄弟选择器 CSS2
  • 作用: 给指定标签后面紧跟的那个标签设置属性
  • 格式:

选择器1+选择器2{

    属性:;

}

  • 注意点:
  • 相邻兄弟选择器必须通过+连接
  • 相邻兄弟选择器只能选中紧跟其后的那个标签, 不能选中被隔开的标签

 

通用兄弟

  • 什么是通用兄弟选择器 CSS3
  • 作用: 给指定选择器后面的所有选择器选中的所有标签设置属性
  • 格式:

选择器1~选择器2{

    属性:;

}

  • 注意点:
  • 通用兄弟选择器必须用~连接
  • 通用兄弟选择器选中的是指定选择器后面某个选择器选中的所有标签, 无论有没有被隔开都可以选中

 

序选择器

  • 序选择器是CSS3中新增的选择器最具代表性的就是序选择器
  • 什么是序选择器?
  • 作用: 选中指定的任意标签然后设置属性
  • 格式:
  • 1.同级别的第几个
  • :first-child 选中同级别中的第一个标签
  • :last-child 选中同级别中的最后一个标签
  • :nth-child(n) 选中同级别中的第n个标签
  • :nth-last-child(n) 选中同级别中的倒数第n个标签
  • :only-child 选中父元素中唯一的标签
  • 注意点: 不区分类型
  • 2.同级同类型的第几个
  • :first-of-type 选中同级别中同类型的第一个标签
  • :last-of-type 选中同级别中同类型的最后一个标签
  • :nth-of-type(n) 选中同级别中同类型的第n个标签
  • :nth-last-of-type(n) 选中同级别中同类型的倒数第n个标签
  • :only-of-type 选中父元素中唯一类型的某个标签
  • 3.其它用法
  • :nth-child(odd) 选中同级别中的所有奇数
  • :nth-child(even) 选中同级别中的所有偶数
  • :nth-child(xn+y)
  • xy是用户自定义的, n是一个计数器, 0开始递增.
  • :nth-of-type(odd) 选中同级别中同类型的所有奇数
  • :nth-of-type(even) 选中同级别中同类型的所有偶数
  • :nth-of-type(xn+y)
  • xy是用户自定义的, n是一个计数器, 0开始递增

 

属性选择器

  • 什么是属性选择器?
  • 作用: 根据指定的属性名称找到对应的标签, 然后设置属性
  • 格式:
  • [attribute]
    -
    作用:根据指定的属性名称找到对应的标签, 然后设置属性
  • [attribute=value]
    -
    作用: 找到有指定属性, 并且属性的取值等于value的标签, 然后设置属性
    -最常见的应用场景, 就是用于区分input属性
  • input[type=password]{}
  • <input type="text" name="" id="">
  • <input type="password" name="" id="">
  •  
  • 属性的取值是以什么开头的
  • [attribute|=value] CSS2
  • [attribute^=value] CSS3
  • 两者之间的区别:
  • CSS2中的只能找到value开头,并且value是被-和其它内容隔开的
  • CSS3中的只要是以value开头的都可以找到, 无论有没有被-隔开
  • 属性的取值是以什么结尾的
  • [attribute$=value] CSS3
  • 属性的取值是否包含某个特定的值的
  • [attribute~=value] CSS2
  • [attribute*=value] CSS3
  • 两者之间的区别:
  • CSS2中的只能找到独立的单词, 也就是包含value,并且value是被空格隔开的
  • CSS3中的只要包含value就可以找到, 无论有没有被隔开

通配符选择器

  • 什么是通配符选择器?
  • 作用: 给当前界面上所有的标签设置属性
  • 格式:

*{

    属性:;

}

  • 注意点:
  • 由于通配符选择器是设置界面上所有的标签的属性, 所以在设置之前会遍历所有的标签, 如果当前界面上的标签比较多, 那么性能就会比较差, 所以在企业开发中一般不会使用通配符选择器

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值