首页 > 开发 > CSS > 正文

浅谈前端开发中容易被忽略CSS特性

2024-07-11 08:32:00
字体:
来源:转载
供稿:网友

CSS初学感觉很简单,但随着学习的深入才感觉CSS的水由多深,平常总会遇到各种坑,先总结一些经常遇到的坑

大小写不敏感

虽然我们平时在写CSS的时候都是用小写,但其实CSS并不是大小写敏感的

.test{ background-COLOR:#a00; width:100px; height: 100px;}

 

虽然把background-color写为了background-COLOR,但仍然会生效,之所以写成小写是因为xhtml标准的关系,但是即使不是xhtml还是写成小写比较好,美观、易读而且可以应对可能的转换需求
选择器优先级

当两个规则都作用到了同一个html元素上时,如果定义的属性有冲突,那么应该用谁的值的,CSS有一套优先级的定义。

不同级别

在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。

作为style属性写在元素内的样式

    id选择器 类选择器 标签选择器 通配符选择器 浏览器自定义或继承

同一级别

同一级别中后写的会覆盖先写的样式

上面的级别还是很容易看懂的,但是有时候有些规则是多个级别的组合,像这样

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> div.test{ background-COLOR:#a00; width:100px; height: 100px; } .test.test2{ background-COLOR:#0e0; width:100px; height: 100px; } </style></head><body> <div class="test test2"></div></body></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)元素的一些属性

并不是所有的属性对行内元素都能够生效

    行内元素不会应用width属性,其长度是由内容撑开的 行内元素不会应用height属性,其高度也是由内容撑开的,但是高度可以通过line-height调节 行内元素的padding属性只用padding-left和padding-right生效,padding-top和padding-bottom会改变元素范围,但不会对其它元素造成影响 行内元素的margin属性只有margin-left和margin-right有效,margin-top和margin-bottom无效 行内元素的overflow属性无效,这个不用多说了 行内元素的vertical-align属性无效(height属性无效)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表