CSS初学感觉很简单,但随着学习的深入才感觉CSS的水由多深,平常总会遇到各种坑,先总结一些经常遇到的坑
大小写不敏感
虽然我们平时在写CSS的时候都是用小写,但其实CSS并不是大小写敏感的

CSS Code复制内容到剪贴板
  1. .test{    
  2. background-COLOR:#a00;    
  3. width:100px;    
  4. height100px;    
  5. }   

虽然把background-color写为了background-COLOR,但仍然会生效,之所以写成小写是因为xhtml标准的关系,但是即使不是xhtml还是写成小写比较好,美观、易读而且可以应对可能的转换需求
选择器优先级
当两个规则都作用到了同一个html元素上时,如果定义的属性有冲突,那么应该用谁的值的,CSS有一套优先级的定义。
不同级别
1.在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。
2.作为style属性写在元素内的样式
3.id选择器
4.类选择器
5.标签选择器
6.通配符选择器
7.浏览器自定义或继承
同一级别
同一级别中后写的会覆盖先写的样式
上面的级别还是很容易看懂的,但是有时候有些规则是多个级别的组合,像这样

CSS Code复制内容到剪贴板

  1. <!doctype html>    
  2. <html lang="en">    
  3. <head>    
  4. <meta charset="UTF-8">    
  5. <title>Document</title>    
  6. <style type="text/css">    
  7. div.test{    
  8. background-COLOR:#a00;    
  9. width:100px;    
  10. height100px;    
  11. }    
  12. .test.test2{    
  13. background-COLOR:#0e0;    
  14. width:100px;    
  15. height100px;    
  16. }    
  17. </style>    
  18. </head>    
  19. <body>    
  20. <div class="test test2"></div>    
  21. </body>    
  22. </html>   

到底div是应用那条规则呢,有个简单的计算方法(经园友提示,权值实际并不是按十进制,用数字表示只是说明思想,一万个class也不如一个id权值高)
•内联样式表的权值为 1000
•ID 选择器的权值为 100
•Class 类选择器的权值为 10
•HTML 标签选择器的权值为 1
我们可以把选择器中规则对应做加法,比较权值,如果权值相同那就后面的覆盖前面的了,div.class的权值是1 10=11,而.test1 .test2的权值是10 10=20,所以div会应用.test1 .test2

变成绿色

行内(inline)元素的一些属性
并不是所有的属性对行内元素都能够生效
1.行内元素不会应用width属性,其长度是由内容撑开的
2.行内元素不会应用height属性,其高度也是由内容撑开的,但是高度可以通过line-height调节
3.行内元素的padding属性只用padding-left和padding-right生效,padding-top和padding-bottom会改变元素范围,但不会对其它元素造成影响
4.行内元素的margin属性只有margin-left和margin-right有效,margin-top和margin-bottom无效
5.行内元素的overflow属性无效,这个不用多说了
6.行内元素的vertical-align属性无效(height属性无效)

CSS Code复制内容到剪贴板
  1. <div style="">    
  2. <span style="padding:4px; margin:8px; height: 500px; width:1000px; ">123456789123456789</span>    
  3. </div>    
  4. <div style="">    
  5. <span style="padding:4px; margin:8px; height: 500px; width:1000px; ">123456789</span>    
  6. </div>   

 


通过例子可以看出,我们对span设置的width和height属性并没有生效,margin-top和margin-bottom无效,padding-top和padding-bottom会改变元素范围(背景区域变大了),但并没有影响下面元素位置
一些互斥的元素
1.对于absolute和fixed定位的(固定大小,设置了width和height属性)元素,如果设置了top和left属性,那么设置bottom和right值就没有作用了,应该是top和left优先级高,否则同时写了浏览器怎么知道按照谁定位
2.对于absolute和fixed定位的元素,如果设置了top、left、bottom、right的值后margin属性也就不起作用了
3.对于absolute和fixed定位的元素,如果设置了top、left、bottom、right的值后float属性同样会失效
4.块元素如果设置了float属性或者是absolute、fixed定位,那么vertical-align属性不再起作用
font-size单位
我们在写字体的尺寸的时候常用的单位有
•px
•pt
•em
•rem
这些字体分别有什么含义?
1.px是pixel缩写,是基于像素的单位.在浏览网页过程中,屏幕上的文字、图片等会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在800×600分辨率下,要占屏幕宽度的1/8,但在1024×768下,则只占约1/10。所以如果在定义字体大小时,使用px作为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(自然长度单位),甚至会看不清,影响浏览。
2.pt是point(磅)缩写,是一种固定长度的度量单位,大小为1/72英寸。如果在web上使用pt做单位的文字,字体的大小在不同屏幕(同样分辨率)下一样,这样可能会对排版有影响,但在Word中使用pt相当方便。因为使用Word主要目的都不是为了屏幕浏览,而是输出打印。当打印到实体时,pt作为一个自然长度单位就方便实用了:比如Word中普通的文档都用“宋体 9pt”,标题用“黑体 16pt”等等,无论电脑怎么设置,打印出来永远就是这么大。
3.em:是相对单位,是一个相对长度单位,最初是指字母M的宽度,所以叫em,现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等。通常1em=16px(浏览器默认字体大小16px),em是指父元素的字体大小。在一个页面上给定了一个父元素的字体大小,这样就可以通过调整一个元素来成比例的改变所有元素大小.它可以自由缩放,比如用来制作可伸缩的样式表。类似还有ex的概念,ex 相对于字符“x”的高度,此高度通常为字体尺寸的一半。
4.rem:rem是CSS新增的,em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在多次使用时,就会带来无法预知的错误风险。而rem是相对于根元素<html>(r:root),使用rem我们只需要在根元素确定一个参考值,然后就可以控制整个html页面所有字体了。
:checked 选择器范围
我们知道:checked会选择被选中的checkbox和radio,看个例子

CSS Code复制内容到剪贴板
  1. <!doctype html>    
  2. <html lang="en">    
  3. <head>    
  4. <meta charset="UTF-8">    
  5. <title>Document</title>    
  6. <style type="text/css">    
  7. :checked{    
  8. margin10px;    
  9. }    
  10. </style>    
  11. </head>    
  12. <body>    
  13. <input id="t1" type="checkbox" checked/>    
  14. <input id="t3" type="radio" checked/>    
  15. <select>    
  16. <option id="t2">test</option>    
  17. <option id="t4">test2</option>    
  18. </select>    
  19. </body>    
  20. </html>   
  21. 对于前两个margin变成10px我们不奇怪,但是当我们看select的option的时候会发现被选中的option的margin业变成了10px,没有被选中的option则没有变化!


是的:checked也会选择被选中的option
并不是所有图片都会被加载
我们知道写在页面上的img标签,无论显示与否,图片都会被加载(所以试图通过对图片display:none来达到节省网络流量的做法就省省吧。。。),我们也经常使用backgroung-image等css属性为页面添加图片,这些图片是不是一定会被加载呢,看个例子
CSS Code复制内容到剪贴板
  1. <!doctype html>    
  2. <html lang="en">    
  3. <head>    
  4. <meta charset="UTF-8">    
  5. <title>Document</title>    
  6. <style type="text/css">    
  7. .useless{    
  8. background-imageurl(images/0.jpg);    
  9. }    
  10. .hidden{    
  11. background-imageurl(images/1.jpg);    
  12. }    
  13. .none{    
  14. background-imageurl(images/2.jpg);    
  15. }    
  16. .parentHidden{    
  17. background-imageurl(images/3.jpg);    
  18. }    
  19. .parentNone{    
  20. background-imageurl(images/4.jpg);    
  21. }    
  22. </style>    
  23. </head>    
  24. <body>    
  25. <div class="hidden"></div>    
  26. <div class="none"></div>    
  27. <div style="visibility:hidden;">    
  28. <div class="parentHidden"></div>    
  29. </div>    
  30. <div style="display:none;">    
  31. <div class="parentNone"></div>    
  32. </div>    
  33. <div style="display:none">    
  34. <img src="images/5.jpg"></div>    
  35. </body>    
  36. </html>   
    看一下网络监视情况(怎么柳岩的照片变小后感觉怪怪的。。。)


我们可以发现图片0和4没有被下载,0是没有用到的CSS,4是父容器的display被设为none的情况,这两种情况下的CSS引用的图片是不会被加载的,而父容器设置visibility属性为hidden仍然会加载图片,不要搞混了

容易忽略的CSS特性的更多相关文章

  1. HTML5自定义视频播放器源码

    这篇文章主要介绍了HTML5自定义视频播放器源码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. HTML5自定义mp3播放器源码

    这篇文章主要介绍了HTML5自定义mp3播放器源码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  3. html5自定义video标签的海报与播放按钮功能

    这篇文章主要介绍了html5自定义video标签的海报与播放按钮功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  4. css绝对定位如何在不同分辨率下的电脑正常显示定位位置?(一定要看!)

    这篇文章主要介绍了css绝对定位如何在不同分辨率下的电脑正常显示定位位置,本文首先解释了常见的电脑分辨率,为了页面在不同的分辨率下正常显示,要给页面一个安全宽度,再去使用绝对定位,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。

  5. 详解HTML5中CSS外观属性

    这篇文章主要介绍了HTML5中CSS外观属性的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,,需要的朋友可以参考下

  6. CSS中实现动画效果-附案例

    这篇文章主要介绍了 CSS中实现动画效果并附上案例代码及实现效果,就是CSS动画样式处理,动画声明需要使用@keyframes name,后面的name是人为定义的动画名称,下面我们来看看文章的具体实现内容吧,需要的小伙伴可以参考一下

  7. h5页面背景图很长要有滚动条滑动效果的实现

    这篇文章主要介绍了h5页面背景图很长要有滚动条滑动效果的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. 基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能

    这篇文章主要介绍了基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能,需要的朋友可以参考下

  10. html5借用repeating-linear-gradient实现一把刻度尺(ruler)

    这篇文章主要介绍了html5借用repeating-linear-gradient实现一把刻度尺,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. css绝对定位如何在不同分辨率下的电脑正常显示定位位置?(一定要看!)

    这篇文章主要介绍了css绝对定位如何在不同分辨率下的电脑正常显示定位位置,本文首先解释了常见的电脑分辨率,为了页面在不同的分辨率下正常显示,要给页面一个安全宽度,再去使用绝对定位,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。

  2. CSS中实现动画效果-附案例

    这篇文章主要介绍了 CSS中实现动画效果并附上案例代码及实现效果,就是CSS动画样式处理,动画声明需要使用@keyframes name,后面的name是人为定义的动画名称,下面我们来看看文章的具体实现内容吧,需要的小伙伴可以参考一下

  3. CSS多级数字序号的目录列表(2.2.1. 2.2.2 列表序号)

    这篇文章主要介绍了CSS多级数字序号的目录列表(2.2.1. 2.2.2 列表序号),通过css代码定义将数字多级列表展示出来,,需要的朋友可以参考下

  4. CSS position属性和实例应用演示

    这篇文章主要介绍了CSS position属性和实例应用演示,absolute(绝对定位),relative(相对定位),relative与absolute的结合使用以及fixed(固定定位),需要的朋友可以参考下

  5. css中使用rgba和opacity设置透明度的区别(附图)

    这篇文章主要介绍了css中使用rgba和opacity设置透明度的两种方法,通过实例演示解释了两者之间的差别,需要的朋友可以参考下

  6. html+css 清除浮动的相关技巧心得

    下面小编就为大家带来一篇html+css 清除浮动的相关技巧心得。小编觉得挺不错的,现在分享给大家,给大家一个参考

  7. 简单介绍CSS设置打印页面的方法及css里media的使用

    这篇文章主要介绍了基于CSS设置打印页面简单介绍及css里media的使用 的相关资料,需要的朋友可以参考下

  8. CSS三大特性继承性、层叠性和优先级详解

    本文详细讲解了CSS三大特性继承性、层叠性和优先级,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  9. CSS清除浮动方法小结

    本文主要介绍了CSS解决浮动,清除浮动的几种方法:1、设置父元素高度;2、overflow;3、增加子元素(块级),并且设置其clear属性值为both来解决(隔墙法、内墙法);4、使用after或before伪对象清除浮动。下面跟着小编一起来看下吧

  10. 我就是要用CSS实现九宫格图

    本文介绍的就是我们最熟悉的老朋友,CSS。不讲枯燥的语法,抛开js,让我们一起来看业务中那别致的纯CSS实现,让我们一起来追求那更好的页面实现,希望我带着你走完这段旅程后,你能收获一些惊喜甚至灵感,感兴趣的小伙伴们可以参考一下

返回
顶部