在学习CSS样式的时候,我们肯定会遇到ID选择器。用法一类的这里就不说了,说一说对ID选择器可能存在的一个误区。

误区:id选择器具有唯一性?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">#id {background-color: #00ff00;}</style>
</head>
<body>
<div style="width:200px"><p id="id">哦豁</p><p id="id">哦豁</p>
</div>
</body>
</html>

上面违反了一般教程中说到的唯一性,估计大部分初学者会认为,其中有一个标签的样式肯定不能生效,但实际上如下图

纳尼?两个都生效,这不是和类选择器一样了吗,都是通用的。OK,实际上这是对唯一性的理解错了,ID选择器设置的样式其实也能够文档中多次出现并使用。

但是!但是!但是!重要的转折说三边,在JS进行dom操作是就存在问题了,如下面的例子。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">#id {background-color: #00ff00;}</style>
</head>
<body>
<div style="width:200px"><p id="id">哦豁</p><p id="id">哦豁</p>
</div>
<script type="text/javascript">document.getElementById("id").style.backgroundColor="#ff0000";
</script>
</body>
</html>

按照之前的想法,JS应该针对两个p标签都做了样式修改,但实际上只有第一个修改了。如下图

于是在这里就引申出了所谓的“唯一性”,它是针对JS而言的,当文档存在多个相同ID时,通过getElementById方法获取到的是在文档中第一个出现该ID的标签(DOM节点对象),故都推荐ID在文档中最好只出现一次,即“唯一性”。

在实际开发中,也是遵循这样的原则,class用于CSS布局,id用于JS操作DOM节点对象。

前端学习系列——(九)理解什么是ID选择器的“唯一性”相关推荐

  1. 【Web前端学习系列01】—HTML

    [Web前端学习系列01]-HTML HTML 基本标签-head head title标签 meta标签 link标签 style标签 script标签 base标签 文本 标题标签 h 段落标签 ...

  2. Android音视频学习系列(九) — Android端实现rtmp推流

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  3. 重学前端学习笔记(二十二)--选择器的机制

    笔记说明 重学前端是程劭非(winter)[前手机淘宝前端负责人]在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专 ...

  4. web前端学习day_02:CSS:三种使用方式/选择器/颜色/背景图片/查看样式/文本/元素显示方式/盒子模型/定位方式/行内对齐/显示层级/防溢出

    CSS : Cascading Style Sheet 层叠样式表. 作用: 美化页面 CSS 如何在html页面中添加css样式代码?总共有三种方式: 1.选择器 2.选择器练习: 3.颜色赋值 4 ...

  5. coderwhy前端学习笔记九

    外边距 - margin margin的其他值 <!DOCTYPE html> <html lang="en"> <head><meta ...

  6. 【Python学习系列九】Python机器学习库scikit-learn实现SVM案例

    学习网址:http://scikit-learn.org/stable/modules/svm.html SVM案例代码: # -*- coding: utf-8 -*- __author__ = ' ...

  7. Android-音视频学习系列-(九)Android-端实现-rtmp-推流,零基础如何成为高级Android开发

    camera.setDisplayOrientation(result); } 4.4 设置预览帧率 通过 Camera.Parameters 中 getSupportedPreviewFpsRang ...

  8. 吕鑫MFC学习系列九

    CWinApp类的基类:CObject->CCmdTarget->CWinThread->CWinApp 一.CWinApp类成员变量: 1.WinMain的四个参数: // Sta ...

  9. 前端学习(九)页面导航栏页面最基本实现

    我们常见的网站,页面的最上方都有个导航栏,例如CSDN的最上方的: 那我们也做一个这样的,首先element有这个控件"el-menu",那我们就按照示例做一个样子出来,类似于这样 ...

最新文章

  1. 百度定位sdk使用说明
  2. 自己动手调试Android源码(超简单)
  3. 数据结构 - 字符串 - 最长公共子序列 + 最长公共子字符串 - 动态规划
  4. OpenShift 4 - 向OpenShift内部Image Registry推送Image
  5. loginrequired注解_简单实现一个登录验证的注解来保护私有资源
  6. SAP License:SD条件类型对应科目配置
  7. ReactNative 自定义封装Radio单选组件
  8. 【数据结构】深度优先和广度优先比较
  9. 有关Kill Session问题的讨论(旧文初发)
  10. atitit.新增编辑功能 跟orm的实现 attilax p31
  11. 图像匹配之序贯相似性检测法匹配
  12. 计算机telnet命令大全,telnet 命令使用方法详解,telnet命令怎么用
  13. Windows:Win10 Dell笔记本禁用触摸板
  14. 区块链赋能金融科技!2018 PPP全球数字资产投资峰会在京召开
  15. 抗体链接InP/ZnS量子点|量子点InP/ZnS表面修饰抗体偶联服务-齐岳生物
  16. unity Debug.DrawLine画线
  17. RegSVR32 找不到指定模块问题解决
  18. RCNN算法思想简单讲解概述————(究极简单的讲述和理解)
  19. android之手机截屏小程序
  20. Altium Designer 制造输出 各文件后缀的含义

热门文章

  1. 与其道听途说,不如少走点弯路,轻松跟我来全面剖析 darknet 官网!
  2. PS中内容感知移动工具的使用
  3. 金大侠眼光果然犀利:《笑傲江湖》只值一块钱
  4. Vmware安装迷你版的 Centos6 并配置 Nat 模式可访问外网
  5. Unity3D——加入剑痕效果(PocketRPG Trail插件)
  6. import java.util.* cannot be resolved或import java.io.*cannot be resolved解决方案
  7. 罗永浩将举办“老人与海”黑科技发布会;京东正式宣告:全面向技术转型;英特尔因CPU短缺向PC厂商道歉 | EA周报...
  8. 解决httpClient 调用返回“ ip:port fail to respond ” 问题
  9. 微信公众号可以改名称了,只限个人订阅号!
  10. 分布式存储开发:Curve中的内存管理