`
web001
  • 浏览: 96248 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

前端网站开发CSS选择器

    博客分类:
  • Web
 
阅读更多

一直觉得自己CSS很搓很搓很搓~~~, 入职后决心要加强,以前学CSS都是看比较实践的书籍,如《精通CSS》这些,大多是技巧,靠记忆~~ 发现这样学来实在是根基不牢,永远都要跟着别人后头走。 个人觉得要在某个领域中强大,基础原理是必不可少的,于是有了本人第一篇CSS学习的文章,文章主要是根据《CSS权威指南》来对自己的一些不牢靠的知识进行记录巩固,发现对这本书真是相见恨晚,以前学CSS太浮躁了,地基没打好唉~~废话不多说了,进入正题吧~ 

在选择器上,主要是一些特殊性和层叠顺序规则需要熟悉。

 

选择器的特殊性:

选择器的特殊性由选择器本身的组件确定。特殊性值表述为4个部分,如:0,0,0,0。一个选择器的具体特殊性如下确定:

  • ID属性值,加 0, 1, 0, 0。
  • 类属性值、属性选择或伪类,加 0, 0, 1, 0。
  • 元素和伪元素, 加 0, 0, 0, 1。

结合符和通配符对特殊性没有任何贡献(即便无贡献,但和继承值还有浏览器默认样式相比,优先级还是结合符或通配符高)一般第一个0是为内联样式保留的。

 

层叠规则:

按以下步骤顺序确定层叠规则:

  • 找出匹配元素的规则
  • 按显示权重对匹配元素所有声明排序,!important规则权重高于没有!important的规则;
  • 按来源对声明排序,包括3种来源:创作人员、读者和用户代理。创作人员样式胜过读者样式。有!important标识的读者样式要强于所有其他样式,这包括有!important标识的创作人员样式。创作人员样式和读者样式都比用户代理的默认样式要强。
  • 按特殊性对声明排序,较高特殊性胜出。
  • 按顺序对声明排序,排在后的生出。

 

一个坑

好吧,先来个例子: .test p span{color:red}; 特殊行为: 0, 1, 2, 0。  

这次终于好不容易发挥了我一次研究生的钻研精神,我就想了,这底层估摸是按位来实现的吧?这样就只需1个数字就可以表示了。

有了猜测就要去论证,如何论证? 发挥我无耻的结论导向证明的精神,假设浏览器用1个数字按位表示特殊性,那么每一类别的特殊性肯定都是有上限的,正常情况下应该不会太大,于是有了下面的代码来证明:

 

基本思路:

给一个id为test的div元素添加样式规则,同时给这个元素添加一定数量的class,再将这些class结合给出另一个规则,如果到达一定数量的class规则覆盖了id规则,那么就证实了我的猜想。

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Selector Demo</title>
<meta  name =" copyright "  content =" http://www.hualai.net.cn " />
<style>
#test {
color: red;
}
</style>
</head>
<body>
<div id="test">
这是一个div,id为test
</div>
类添加次数:
<input type="text" id="count" />
<input type="button" id="add" value="添加" />
<script>
document.getElementById('add').onclick = function() {
var t = document.getElementById('test');
var count = Number(document.getElementById('count').value);
var cls = '';
var css = '';
//加它个count个类,同时拼接CSS字符串
for (var i = 0; i < count; ++i) {
cls += 't' + i + ' ';
css += '.t' + i;
}
css += '{color: blue;}'
t.className = cls;
//插入规则
loadStyleString(css);
};

//插入一条css新规则
var loadStyleString = function(css) {
var style = document.createElement('style');
style.type = "text/css";
try {
style.appendChild(document.createTextNode(css));
} catch(e) {//IE
style.styleSheet.cssText = css;
}
document.getElementsByTagName('head')[0].appendChild(style);
}

</script>
</body>
</html>

在输入框中输入要添加的类次数,JS代码会按照次数给div元素添加对应次数的类,同时会插入一条对应的规则,在代码中,id规则为#test{color:red},而类规则为{color:blue},所以如果结论正确,那么div的字体颜色会变为蓝色。

通过本屌丝推测性的不懈努力的测试,发现255是个分水岭,超过255次时,也就是2的8次方,二进制11111111,在chrome下div的文字颜色变成了蓝色,也就是添加的类为256次时,特殊性变成了1,0,0,0,与ID属性特殊性持平,由于规则在后,故而胜出。

为了保持完整性,以下在各大浏览器进行了测试:

FF13, chrome22, IE9(包括在其环境下的IE7/8模式),safira5 下,256个类带来的特殊性都等于1个id的特殊性,然而在opera12,IE9下的怪异模式以及IETester下的IE6/7中,均不会超过id的特殊性,推测为分别用数字保存,而不是用一个数字按位存储。

1
4
分享到:
评论

相关推荐

    头歌教学实践平台 Web前端开发基础 CSS-基础选择器

    头歌教学实践平台 Web前端开发基础 CSS——基础选择器。源代码txt格式。

    2023前端HTML+CSS最全面试题和答案汇总

    4、css 选择器有哪些,权重是什么样的 5、CSS3动画知道吗,实现过哪些css3动画 6、html页面渲染方式和流程 阅读建议:此资源覆盖了前端技术栈中Html+css全部知识点,知识点较多,所以在背题的过程要结合这些内容一...

    超经典的Web前端与移动开发基础视频 Web前端基础开发视频教程 移动开发基础视频教程

    57前端开发基础视频-复合选择器之标签指定式选择器.avi 58前端开发基础视频-复合选择器之后代选择器.avi 59前端开发基础视频-复合选择器之并集选择器.avi 60前端开发基础视频-复合选择器之子元素选择器.avi 61...

    Web前端学习之CSS课件

    CSS相关技术文档-例如CSS基础:类选择器。就是建立一个类,并为这个类定义一些样式,在需要应用的标签内以class=“类名”的形式套用,例如: .student{color:#00f;} “student”&gt;张三 类名的前边一定要加上一个...

    Web前端与移动开发之复合选择器 css元素显示模式 背景属性.txt

    1.复合选择器 (1)后代选择器(包含选择器 重要) 语法: 元素1 元素2 {样式声明} 选择器1 选择器2{ 属性:属性值 } 元素1和元素2用空格隔开 元素1父亲 元素2后代 最终改变的是后代(元素2)的样式 ...

    前端picker.js 选择器 轮选择器

    &lt;!... &lt;title&gt;Picker by ustbhuangyi , initial-scale=1,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"&gt; ... &lt;h1 class="project-name"&gt;Picker ... &lt;h2 class="project-tagline"&gt;h5 picker inspired by ...

    Web前端开发基础:CSS控制图文混排.ppt

    --*-- 1 单元目标 2 教学内容 3 动手实践 4 课堂小结 单元目标 能使用CSS控制图文混排 能力目标 CSS选择器类型 知识目标 《CSS网页样式设计与制作》 参考资料 2 教学内容 1 单元目标 3 动手实践 4 课堂小结 标签选择...

    Web前端与移动开发之基础选择器.txt

    选择器的作用 选择标签 ①标签选择器 标签名 { 属性1: 值; 属性2: 值; } 将当前页面中所有的这个标签名都选择出来 修改样式 不能修改某一个的样式 ②类选择器 单独选择一个或某几个标签 .类名...

    前端css+html+布局笔记

    语法:选择器1,选择器2,选择器N{} 例子: div,p,#box,.hello{} 交集选择器 可以选中满足多个条件的元素 语法:选择器1选择器2选择器N{} 例子:p.hello{} 后代元素选择器 选中指定元素的...

    2020年全新CSS3视频教程.txt

    2020年全新【CSS3视频教程】,是由锐锋堂推出的wordpress网站开发视频教程的一个系列,主要针对web前端页面开发的CSS代码的详细讲解:CSS选择器的使用、2D和3D变形属性的使用、弹性布局的使用等等。课程几乎囊括了...

    Web前端与移动开发之css字体属性.txt

    选择器 { font-family: 字体1,字体2,字体3; } 各个字体之间必须用英文状态下的逗号隔开 尽量使用默认字体 以保证不同浏览器能正确显示 一般整个页面使用同一字体 写在body后面 如果字体中间有空格,用引号...

    CSS高效开发实战——CSS 3、LESS、SASS、Bootstrap、Foundation

    《CSS高效开发实战——CSS 3、LESS、SASS、Bootstrap、Foundation》内容精练、重点突出、实例丰富、讲解通俗,是广大CSS设计人员和前端开发人员必备的参考书,同时也非常适合大中专院校师生学习阅读,也可作为高等...

    前端开发三件套HTML&CSS&JavaScript

    5CSS导入方式 6CSS选择器 7CSS常见属性 8CSS盒子模型 9CSS浮动 10CSS定位 3.JavaScript 11JS导入方式 12JS基本语法 13JS函数 14JS事件 15JSDOM 4.综合练习 16表格的增删改查 17移动端适配 18Flex弹性布局

    python 零基础学习篇web前端开发基础css基础4 标签 类 层级选择器 .mp4

    python 零基础学习篇

    python 零基础学习篇web前端开发基础css基础5 id 组 伪类选择器 .mp4

    python 零基础学习篇

    HTML5+CSS3 快速入门 前端 源代码.rar

    36.CSS3新增的属性选择器22:17 37.结构性伪类选择器上28:52 38.结构性伪类选择器下21:00 39.使用选择器在页面中插入内容34:26 40.文字阴影与自动换行20:24 41.服务器端字体和@font-face属性21:50 42.盒布局上18:03 ...

    前端开发入门教程.docx

    2. CSS样式:学习CSS选择器、盒模型、布局方式等,掌握基本的样式设计技巧。 3. JavaScript编程:了解JavaScript的基本语法、数据类型、函数、事件等,能够进行简单的交互效果开发。 4. 响应式设计:学习如何使用...

    html web前端css基础(7)

    CSS选择器 作用:规范了页面有哪些元素能够使用声明好的样式。 目的:为了匹配页面的元素。 选择器详情: 元素选择器 特点: 由标记名称作为选择器。主要匹配页面中指定的标记所对应的所有元素。 语法: 标记{ 属性:值...

    阿里前端开发规范.pdf

    1.3.6 避免使用 ID 选择器及全局标签选择器防止污染全局样式 (四) LESS 规范 1.4.1 代码组织 1.4.2 避免嵌套层级过多 (五) Javascript 规范 1.5.1 命名 1.5.2 代码格式 1.5.3 字符串 1.5.4 对象声明 1.5.5 使用 ES6+...

    前端开发开发入门技巧点以及教程知识点总结.docx

    学习选择器的使用,如元素选择器、类选择器、ID选择器等,以及组合选择器、伪类选择器。 学习布局技术,包括但不限于浮动布局、定位布局以及现代布局方法如Flexbox和Grid布局。 JavaScript 学习JavaScript基本语法...

Global site tag (gtag.js) - Google Analytics