id选择器和class选择器

news2025/2/27 14:11:00

id选择器

id选择器用来选取带有给定id属性的元素。语法:#id例如:

html
<div id="container">...</div>
css
#container {
  color: blue;
}

id选择器的一些特征:

1. id选择器以#号开头,后跟元素的id属性值。

2. id选择器只能选取带有给定id属性的元素。

3. id的值在整个文档中必须是唯一的。

4. id选择器的优先级高于标签选择器和类选择器,为100。

5. id选择器可用于任何元素,不仅仅是CSS,也常用于Javascript获取元素。

6. id选择器创建了强关联,不建议给相同元素的不同实例使用相同的id值。注意:由于id在文档中必须唯一,所以id选择器实际上选取的永远只有一个元素。所以id选择器的命名需要非常准确和语义化,反映选取元素的准确性质和用途。id选择器的优先级很高,一般不建议和标签选择器或类选择器 一起使用,如:

css
div#container {...}  /* 不推荐 */
.redContainer#container {...} /* 不推荐 */

这会使规则变得难以理解和维护。
除非必要,否则推荐尽量使用类选择器代替id选择器。id选择器在CSS中的主要用途是创建强关联,为元素指定唯一的id,在其它语言(如JS)中选取该元素。在仅用CSS的情况下,更推荐使用类选择器来达到选取元素的目的。

总之,理解id选择器的特性,合理使用可以带来许多便利,但也需要注意一些使用注意点。在可能的情况下,更推荐使用类选择器。希望这能帮助你更好地理解和使用id选择器!如果有任何疑问,欢迎提出。 

id选择器和class选择器区别比较

id选择器和class选择器都是CSS中常用的选择器,但它们有以下几点不同:1. 语法
id选择器:#id
class选择器:.class2. 个数
id选择器在页面中只能使用一次,class选择器可以使用多次。

3. 优先级
id选择器的优先级高于class选择器,为100。class选择器为10。

4. 作用
id选择器更适合作为JS中的hook来选取元素,而class选择器更适合分类样式。举个例子:

html
<div id="container" class="main">...</div>

css
#container {
  /* 选取id为container的元素 */
}

.main {
  /* 选取所有class为main的元素 */ 
}

可以看到,id选择器选取了唯一的container元素,而class选择器可以选取所有带有main类的元素。

根据以上区别,id选择器和class选择器在不同场景下有不同的使用建议:

1. 作为JS hook选取元素,使用id选择器。由于id在页面中唯一,方便选取对应的元素,所以作为JS的选择器,id是更好的选择。

2. 分类样式,使用class选择器。
class选择器可以在页面中多次使用,所以更适合对具有相同样式的元素进行分类和选择。

3. 实现强关联,使用id选择器。
如果想为一个元素在CSS和JS中都创建强关联,应该优先考虑使用id选择器。

4. 优先级要求高,使用id选择器。如果元素样式的优先级要求很高,使用id选择器可以实现。但这通常意味着CSS规则会变得难以理解和维护,所以不推荐过度使用。

5. 在不影响上述场景的前提下,优先使用class选择器。
除非有明确的理由使用id选择器,否则应该优先考虑使用class选择器。这可以让CSS规则更加清晰和易维护。所以总结来说,理解id选择器和class选择器的区别和使用场景,能够让你的代码更加语义化和规范。

在实际使用中,也要考虑到可维护性,尽量避免滥用id选择器。

使用场景

 

在实际开发中,我想实现上面的效果,那么我的边框该如何设计?

你会如何设计边框?单纯重复增加多个列表消息当然好设计,那么不同类型的列表呢?

比如下面,你会怎么设计呢?

 

我的设计是每一个消息view视图,我只设置下面的边框;然后用id选择器对首尾分别设置上下边框;就和小学每隔3米种一棵树的问题类似

 当然这样的设计仍然是欠缺的,比如这是死的数据,当数据来自后端的时候,你这border还要这样写吗,当然不,仍然随着实际开发和需求冲突而不断改变

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Windows 上安装 kubectl

一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起学习在 Windows 上安装 kubectl。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、 kubectl是什么 kubectl是Kubernetes集群的命令行工具&#xff0c;通过kubectl能够对集群本身进行管理&#xf…

一篇文章学会高级IO

文章目录 理解IO的本质认识五种IO模型阻塞式IO非阻塞式IO信号驱动式IO多路转接式IO异步式IO 高级IO的理解以及意义多路转接式IO的深入学习select模型select函数详解封装网络套接字&#xff1a;Sock.hppselectServer.cc(服务器文件)运行结果小结 poll模型poll函数详解Sock.hpppo…

Reed-Muller序列

Reed-Muller函数的由来 我们知道对于连续信号&#xff0c;时间和频率是对偶域(duality)&#xff0c;其中正弦函数是时移的特征函数&#xff08;where sinusoids are eigenfunctions of time shifts&#xff09;。而在汉明空间(Hamming space)中&#xff0c;there are discrete…

牛客网面试必刷:BM19 寻找峰值

牛客网面试必刷&#xff1a;BM19 寻找峰值 前言一、解法1&#xff1a;暴力依次搜索二、解法2&#xff1a;二分搜索 前言 给定一个长度为n的数组nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可…

数据库基础篇 -- 1

目录 数据库基础 1.1&#xff1a;什么是数据库 1.2&#xff1a;常见数据库 1.3&#xff1a;数据库的基本使用 1.4&#xff1a;mysql的架构 1.5&#xff1a;sql分类 1.6&#xff1a;存储引擎 数据库基础 1.1&#xff1a;什么是数据库 数据库是指存储和管理结构化数据的…

解决频繁操作svn导致提交文件失败svn: E155015,亲测成功

我是因为频繁在本地删除创建重复的包和.java文件&#xff0c;以至于在提交至svn的时候会出现我之前删除的包和.java文件&#xff0c;所以我致力于将其删除干净&#xff0c;频繁的在本地删除、去svn删除…以至于再后来本地项目中和svn中都没有但是还是svn: E155015&#xff0c;查…

Cesium入门之五:认识Cesium中的Viewer

Viewer是Cesium中用于显示3D场景的组件。它提供了创建和控制3D场景所需的所有基本功能&#xff0c;包括加载3D模型、添加图像覆盖物、设置相机位置和方向、处理用户输入等。 在创建Viewer时&#xff0c;可以指定要使用的HTML元素&#xff08;例如canvas&#xff09;&#xff0…

06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题)

目录 0-0 前言 : 1. 搭建redis集群成功后 项目测试 ip变成内网 2. 设置 redis.conf的配置 3. 这时候如果运行后面操作, 会出以下问题 问题一: 不开放节点端口号 ​编辑问题二: 不开放通讯端口号 4. 最最核心的正确操作: 5. 删除全部容器 删除全部目录挂载 6. 重新运…

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)-架子搭建

目录 SSM(Vue3ElementPlusAxiosSSM前后端分离)--架子搭建 技术栈 项目搭建 配置pom.xml 项目全局配置web.xml SpringMVC 配置 创建springDispatcherServlet-servlet.xml 创建项目相关的包 完成测试TestController.java 整合hi.html 启动Tomcat , 浏览器输入http://local…

mybatis是如何集成到spring的

前言 集成前的使用方式 mybatis单独使用时&#xff0c;一般的写法如下所示&#xff1a; // mybatis初始化 String resource "mybatis-config.xml"; InputStream inputStream Resources.getResourceAsStream(resource); // 读取配置文件&#xff0c;创建SqlS…

这五个问题一下就看出阿里通义千问和ChatGPT的差距了

前言 阿里通义千问申请过了&#xff0c;为了看看达到了什么水平&#xff0c;于是我问题了5个ChatGPT回答过的问题1&#xff0c;这五个问题网上都是没有的&#xff0c;是我自己想出来的。 问题一:小明说今天他吃了一只公鸡蛋&#xff0c;请问小明诚实吗&#xff1f; ChatGPT 这…

黑马Redis笔记高级篇 | 多级缓存

黑马Redis笔记高级篇 | 多级缓存&#xff08;黑马教程云服务器踩坑记录&#xff09; 1、JVM进程缓存&#xff08;tomcat服务内部&#xff09;1.1 导入商品案例1.2 初识Caffeine1.3 实现进程缓存 2、Lua语法入门2.1 初识Lua2.2 变量和循环2.3 条件控制、函数 3、多级缓存3.1 安装…

快速了解LVQ神经网络是什么

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一. 快速了解LVQ神经网络 1.1 LVQ神经网络是什么 1.2 LVQ神经网络的表示 二. 关于LVQ神经网络的判别计算过程 2.1 LVQ神经网络模型与它的判别方法 2.2 LVQ模型的…

【论文阅读】MINOTAUR: Multi-task Video Grounding From Multimodal Queries

背景动机 细粒度的视频理解已经成为增强现实(AR)和机器人应用开发的关键能力。为了达到这种级别的视频理解&#xff0c;智能体(例如虚拟助手)必须具备识别和推理视频中捕获的事件和对象的能力&#xff0c;处理一系列视觉任务&#xff0c;如活动检测、对象检索和(空间)时间基础…

教你设置dsn,brd文件关联到cadence

用过cadence的人应该都知道&#xff0c;很多人存在dsn,brd文件无法关联到cadence&#xff0c;从而导致无法直接双击对应的文件打开软件编辑&#xff0c;不得不先打开软件&#xff0c;再通过文件夹浏览来打开对应的文件&#xff0c;这其实是浪费了一些时间的。 下面通过简单的介…

Linux应用开发:socket

目录 1、TCP 1.1 TCP建立连接的流程图 1.2 TCP函数 1.2.1 socket 1.2.2 bind 1.2.3 listen 1.2.4 accept 1.2.5 recv 1.2.6 send 1.2.7 connnect 1.2.8 setsockopt、getsockopt 1.3 应用程序&#xff1a;服务器 1.4 应用程序&#xff1a;客户端 2、UDP 2.1 UDP建…

Github上传大于25M文件最简单方法!!!

Github上传大于25M文件最简单方法 方法&#xff1a;使用 GitHub 桌面应用程序1.下载 [Github](https://desktop.github.com/)应用程序到您的 Windows 或 Mac PC 上。2.单击“从互联网克隆存储库...”选项。3. 使用您的 Git 帐户登录。4. GitHub 应用程序将提示您使用电脑浏览器…

Docker安装Kong konga

一、安装Kong 1. 创建一个docker网络 docker network create kong-net2.拉取镜像 docker pull postgres:9.6 docker pull kong:2.6.03. 搭建pgsql数据库环境 docker run -d --name kong-database \--networkkong-net \-p 5432:5432 \-e "POSTGRES_USERkong" \-e …

Cisco Nexus 9000v Switch, NX-OS Release 10.3(3)F - 虚拟化的数据中心交换机

Cisco Nexus 9000v Switch, NX-OS Release 10.3(3)F - 虚拟化的数据中心交换机 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-nexus-9000v/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org NX-OS System SoftwareR…

Java接口介绍

Java接口介绍 接口&#xff08;Interface&#xff09;&#xff0c;在Java编程语言中是一个抽象类型&#xff0c;是抽象方法的集合&#xff0c;接口通常以interface关键字来声明。Java接口是用于描述类所具有的方法集合&#xff0c;但并不提供实现这些方法的代码。它们被用来定义…