前端学习笔记(7)css选择器(一)

简介: 选择器分类简单选择器:针对某一特征判断是否选中元素。复合选择器:连续的简单选择器,根据元素特征判断是否选中单个元素。复杂选择器:由“(空格)“ “ >” “ ~” “ +” “ ||” 等符号连接的复合选择器,根据父元素或者前序元素检查单个元素。

选择器分类

  • 简单选择器:针对某一特征判断是否选中元素。
  • 复合选择器:连续的简单选择器,根据元素特征判断是否选中单个元素。
  • 复杂选择器:由“(空格)“ “ >” “ ~” “ +” “ ||” 等符号连接的复合选择器,根据父元素或者前序元素检查单个元素。
  • 选择器类别:用逗号分隔的复杂选择器,表示“或”。

简单选择器

简单选择器分类:

  • 类型选择器
  • 全体选择器
  • id选择器
  • class选择器
  • 属性选择器
  • 伪类选择器
  • 伪元素选择器

类型选择器

根据标签名来选中元素。

div{
}

全体选择器

“*”可以选中任意元素。

*{
}

id选择器

“#”后面跟id名。

#myid{
}

class选择器

“.”后面跟class名 c 一个元素可以拥有多个类。下例中“.a” “.b” “ .c”都可以选中div标签。

 <div class="a b c"></div>
.a{
}

属性选择器

  • 第一种,[att]: 选中带有att属性的元素
<input type="text"/>
[type]{
}
  • 第二种,[att=val]: 选中att属性值为val的元素
<input type="text"/>
[type=text]{
}
  • 第三种,[att~=val]: 选中属性att的值中包含指定词汇的元素
<img src="" title="img1 img2" />
[type~=img1]{
}
  • 第四种,[att|=val]: 选中属性att值以val开头的元素,val必须为整个单词
<p lang="en-us">Hello World!</p>
[type|=en]{
}
  • 第五种,[att^=val]: 选中属性att值以val开头的元素
<input type="text"/>
[type^=te]{
}
  • 第六种,[att$=val]: 选中属性att值以val结束的元素
<input type="text"/>
[type^=xt]{
}
  • 第七种,[att*=val]: 选中属性att值包含val的元素
<input type="text"/>
[type*=ex]{
}

属性选择器中val可能包含特殊字符,所以可以使用单双引号包裹起来规避特殊字符,也可以使用反斜杠转义。

伪类选择器

伪类选择器是一系列由 CSS 规定好的选择器,它们以冒号开头。伪类选择器有普通型和函数型两种。

树结构关系伪类选择器

  • :root表示树的根元素,html文档中根元素为html标签。
  • :empty表示没有子节点的元素,拥有空白文本也不能被选中。
  • :nth-child和:nth-last-child,nth-child规则如下。nth-last-child为从后向前。
  • :first-child和:last-child分别表示第一个和最后一个元素。
  • :only-child表示唯一子元素
  • S:nth-of-type和S:nth-last-of-type表示只从S只选中。(of-type系列同理)
<div>
  <p>1</p>
  <a>2</a>
  <p>3</p>
  <p>4</p>
</div>
div p:nth-child(1){
//选中 1
}
div p:nth-child(2){
// 没有选中
}
div p:nth-of-type(2){
// 选中3
}
  • :first-of-type和:last-of-type
<div>
  <p>1</p>
  <a>2</a>
  <p>3</p>
  <p>4</p>
</div>
div p:first-child{
//选中1
}
div a:first-child{
//没有选中
}
div a:first-of-type{
//选中2
}
  • :only-of-type
<div>
  <p>1</p>
  <a>2</a>
</div>
div p:only-child{
//没有选中
}
div p:only-of-type{
//选中p
}

链接与行为伪类选择器

  • :any-link 表示任意的链接,包括 a、area 和 link 标签都可能匹配到这个伪类。
  • :link 表示未访问过的链接, :visited 表示已经访问过的链接。
  • :hover 表示鼠标悬停在上的元素。
  • :active 表示用户正在激活这个元素,如用户按下按钮,鼠标还未抬起时,这个按钮就处于激活状态。
  • :focus 表示焦点落在这个元素之上。
  • :target 用于选中浏览器 URL 的 hash 部分所指示的元素。

逻辑伪类选择器

:not目前只支持简单选择器

<div>
  <p class="p1">1</p>
  <p>2</p>
</div>
div p:not(.p1){
//选中2
}

伪元素选择器

伪元素选择器选中的是不存在的元素。常用的伪元素选择器有以下几种。

  • first-line 选用元素的第一行
  • first-letter 选中元素的第一个字母
  • before
  • after

first-line 必须出现在最内层的块级元素之内。所以下例代码中第一行为蓝色。

<div>
  <p id=a>First paragraph</p>
  <p>Second paragraph</p>
</div>

div>p#a {
    color:green;
}

div::first-line { 
    color:blue; 
}

span标签为行级元素,所以伪元素在span之外,第一行为绿色。

<div>
  <span id=a>First paragraph</span>
  <span>Second paragraph</span>
</div>

div>span#a {
    color:green;
}

div::first-line { 
    color:blue; 
}

::first-letter 的行为又有所不同,它的位置在所有标签之内。我们把前面的代码换成::first-letter,首字母为蓝色。

<div>
  <span id=a>First paragraph</span>
  <span>Second paragraph</span>
</div>

div>span#a {
    color:green;
}

div::first-letter { 
    color:blue; 
}

::before 表示在元素内容之前插入一个虚拟的元素,::after 则表示在元素内容之后插入。这两个伪元素所在的 CSS 规则必须指定 content 属性才会生效,我们看下例子:

<p class="hi">hellow world!</p>
p.hi::before {
    display: block;
    content: "hi! ";
}
目录
相关文章
|
1月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
133 2
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
40 0
|
14天前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
25 4
|
1月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
1月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
163 1
|
1月前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
|
1月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
1月前
|
前端开发 UED 容器
前端技术分享:利用 CSS Grid 实现响应式布局
【10月更文挑战第1天】前端技术分享:利用 CSS Grid 实现响应式布局
54 2