博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS学习笔记1
阅读量:5960 次
发布时间:2019-06-19

本文共 7412 字,大约阅读时间需要 24 分钟。

  hot3.png

选择器

基本规则

h1 { color: red; background: yellow; }

1. h1为选择器, color/background为属性, red/yellow为值.

分组:

h2, p { color: gray; }

1. 使用逗号","进行分组, 而分组的元素具有相同的css样式.

2. 可使用通配选择器"*", 下例代码的含义为: 文档中的每一个元素都设为红色:

* { color: red; }

类选择器:

.warning { font-weight: bold; }p.warning { font-weight: bold; }.warning.urgent { font-weight: silver; }

1. 点号"."代表类选择器: ".warning"代表所有具有warning类的元素.

2. "p.warning"代表所有具有warning类的p元素.

3. ".warning.urgent"代表同时具有warning类和urgent类的元素.

ID选择器:

#lead-para { font-weight: bold; }

1. 井号"#"代表ID选择器.

属性选择器:

h1[class] { color: silver; }a[href][title] { font-weight: bold; }

1. "h1[class]"代表具有class属性的h1元素. "a[href][title]"代表同时具有href和title属性的h1元素.

span[moons='1'] { font-weight: bold; }MercuryVenusEarth

1. 根据具体属性值进行匹配, 而且值必须完全匹配.

span[class~='barren'] { font-weight: bold; }MercuryVenusEarth

1. 如果想选择class属性中包含barren的元素, 可以使用"~="来达到效果.

类型 描述
[foo^="bar"] 选择foo属性值以"bar"开头的所有元素
[foo$="bar"] 选择foo属性值以"bar"结尾的所有元素
[foo*="bar"] 选择foo属性值中包含子串"bar"的所有元素

 

使用文档结构

html代码如下:

                    Meerkat Central                

Meerkat Central

Welcome to Meerkat Central, the best meerkat web site on the entire Internet !

  • We offer:
    • Detailed information on how to adopt a meerkat
    • Tips for living with a meerkat
    • Fun things to do with a meerkat, including:
      1. Playing fetch
      2. Digging for food
      3. Hide and seek
  • ...and so much more!

Questions? Contact us!

效果图如下:

后代选择器:

h1 em { color: gray; }

1. h1后代中所有的em元素均设置为灰色.

p > a { color: red; }

1. 代码中有两处p后面有a, 但第一处中a并不属于p的子元素, 关系为: p > strong > a. 第二处中p > a, 所以渲染的页面为:

相邻兄弟元素:

h1 + p { color: green; }

1. h1和p必须相邻, 使用加号"+"来表示.

伪类选择器:

伪类名 描述
:link 指示作为超链接(即有一个href属性)并指向一个未访问地址的所有锚.
:visited 指示作为已访问地址超链接的所有锚
:focus 指示当前拥有输入焦点的元素
:hover 指示鼠标指针停留在哪个元素上
:active 指示被用户激活的元素.

1. 伪类的顺序为: link-visited-focus-hover-active.

a:link { color: blue; }a:visited { color: red; }input:focus { background: silver; }a:hover { color: green; }a:active { color: yellow; }

2. 选择第一个子元素, 可使用first-child:

            Meerkat Central                

These are the necessary steps:

  • Insert key
  • Turn key clockwise
  • Push accelerator

Do not push the brake at the same time as the accelerator.

页面如下:

这里, 将第一个p和li设置为对应的样式, 而非p/li元素的第一个子元素.

 

结构和层叠

特殊性

    考虑一种情况:

p em { color: purple; }em.dark { color: maroon; }

如果一个em元素都匹配上述两条规则, 那么元素是purple还是maroon? 这里得引入选择器的特殊性:

  1. 对于选择器中给定的各个ID属性值, 加0,1,0,0
  2. 对于选择器中给定的各个类属性值,属性选择或伪类, 加0,0,1,0
  3. 对于选择器中给定的各个元素和伪元素, 加0,0,0,1.
  4. 结合符和通配选择器对特殊性没有任何贡献.
h1 { color: red; }  /* 0,0,0,1 */p em { color: purple; } /* 0,0,0,2 */.grape { color: purple; }   /* 0,0,1,0 */*.bright { color: yellow; } /* 0,0,1,0 */p.bright em.dark { color: maroon; }  /* 0,0,2,2 */#id216 { color: blue; } /* 0,1,0,0 */div#sidebar *[href] { color: silver; }  /* 0,1,1,1 */

如果我们将id作为属性选择器, 则它的特殊性为0,0,1,0:

#meadow { color: green; } /* 0,1,0,0 */*[li="meadow"] { color: red; } /* 0,0,1,0 */

但什么样式为"1,0,0,0", 答案是内联:

The Meadow Party

如果某个声明非常重要, 超过了所有其他声明, 则可使用"!important"字段:

p.dark { color: #333 !important; background: white; }

 

继承

    基于继承机制, 样式不仅应用到指定的元素, 还会应用到它的后代元素. 但有两个例外:

  1. body元素的样式会应用到html元素.
  2. 边框(border)不可继承.

继承的值没有特殊性, 甚至连0特殊性都没有. 考虑以下代码:

* { color: gray; }h1#page-title { color: black; }

Meerkat Central

Welcome to the pest place.

页面效果如下:

    因为通配选择器适用于所有元素, 而且有0特殊性, 其颜色声明指定的值gray要优先于继承值(black), 因为继承值根本没有特殊性. 所以em元素会显示灰色而不是黑色.

    更好的做法是避免使用通配选择器. 我们考虑一个例子: 工具条的文本都是黑底白字:

#toolbar { color: white; background: black; }

但如果工具条包含了一个超链接(a元素), 则超链接的样式会占上风(即可能显示蓝色, a:link {color: blue; }), 为了克服这种情况, 我们还需要如下编写代码:

#toolbar { color: white; background: black; }#toolbar a:link { color: white; }

 

层叠

如果特殊性相等的两个规则同时应用到同一个元素, 则可根据以下规则进行排序:

按权重和来源排序

p { color: gray !important }

Well, hello there!

由于存在"!important", 则p的颜色会设置为gray.

按特殊性排序

p#bright { color: silver; }p { color: black; }

这里, p#bright为(0,1,0,1), 而p为(0,0,0,1), 所以p#bright会胜出.

按顺序排序

h1 { color: red; }h1 { color: blue; }

则h1的颜色设置为blue.

 

值和单位

颜色

    一般我们更倾向于使用十六进制方法来表示颜色:

h1 { color: #ff0000; }

长度单位

    绝对长度单位(in, cm, mm, pt, pc)基本不会被使用.

相对长度单位

em: 1个"em"定义为一种给定字体的font-size值. 如果一个元素的font-size为14像素, 那么对于该元素, 1em就等于14像素.

px: 像素单位, 更为常用.

 

字体

font-family: 用于指定通用字体. 如果字体包含空格,%,$等特殊字符, 需要使用引号包含起来.

h1 { font-family: Arial, sans-serif; }

    这里h1优先使用Arial字体, 如果没有则使用sans-serif字体.

font-weight: 用于加粗字体, 常用为: normal(正常), bold(粗体), bolder(比父元素更粗), lighter(比父元素更细), 100, 200,..., 800, 900.

font-size: 字体大小:

  1. 绝对大小: xx-samll, x-small, small, medium, large, x-large, xx-large.
  2. 相对大小: smaller, larger.
  3. 像素大小和百分比大小: 12px; 120%.
  4. 继承大小: inherit

font-style: 字体风格, 只推荐使用: normal(默认正常), italic(斜体).

 

文本属性

缩进和水平对齐

text-indent: 应用于块级元素, 可指定长度值, 为数字或百分数.

p {text-indent: 36px; }

text-align: 应用于块级元素, 用于文本水平对齐. left, center, right, justify.

p.left { text-align: left; }p.center { text-align: center; }p.right { text-align: right; }p.justify { text-align: justify; }

left paragraph.

center paragraph.

right paragraph.

justify paragraph.

页面效果如下:

垂直对齐

line-height: 行高, 用于设定每行文本的高度.

body { font-size: 10px; }div { line-height: 1em; }p { font-size: 38px; }

hello world, aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa

由于行高是可继承的, 所以上诉代码中, div的行高为1em == 10px; 导致了页面效果如下:

解决方案为: 指定一个数字, 设置为缩放因子:

body { font-size: 10px; }div { line-height: 1; }p { font-size: 38px; }

vertical-align: 垂直对齐文本.

  1. 基线对齐: baseline, 要求一个元素的基线与其父元素的基线对齐. 这是默认值.
  2. 上标(super), 下标(sub): 使子元素的基线上升和下降:
span.raise { vertical-align: super; }span.lower { vertical-align: sub; }

This paragraph contains Superscripted and subscripted text.

页面显示效果如下:

    3. bottom: 将元素行内框的底端和行框的底端对齐.

    4. text-bottom: 行内文本的底端和行框的底端对齐.

    5. top/text-top: 和bottom/text-bottom相反.

    6. 长度对齐: 使用百分值或者具体的数值:

span.raise { vertical-align: 5px; }

字间隔和字母间隔

word-spacing: 接受一个正长度或负长度值, 这个长度会增加字之间的标准间隔.

p.spread { word-spacing: 0.5em; }p.tight { word-spacing: -0.5em; }p.base { word-spacing: normal; }p.norm { word-spacing: 0; }

this is a test

this is a test

this is a test

this is a test

页面效果如下:

letter-spacing: 接受一个正长度或负长度值, 这个长度会增加字母之间的标准间隔.

p { letter-spacing: 0; }p.spacious { letter-spacing: 0.25em; }p.tight { letter-spacing: -0.25em; }

this is a test

this is a test

this is a test

页面效果如下:

文本转换

text-transform: 将文本设为大写(uppercase), 小写(lowercase), 单词首字母大写(capitalize), 不做修改(none).

h1 { text-transform: uppercase; }h2 { text-transform: lowercase; }h3 { text-transform: capitalize; }

this is a TEST

this is a TEST

this is a TEST

文本装饰

text-decoration: none(正常), underline(加下划线), overline(加上划线), line-through(加贯穿线), blink(文本闪烁, 有些浏览器不支持, 少用).

p.none { text-decoration: none; }p.underline { text-decoration: underline; }p.overline { text-decoration: overline; }p.line-through { text-decoration: line-through; }

this is a test

this is a test

this is a test

this is a test

处理空白符

white-space: 用于处理空白字符, 浏览器的默认行为: 丢掉多余的空白字符.

空白符 换行符 自动换行
pre-line 合并 保留 允许
normal 合并 忽略 允许
nowrap 合并 忽略 不允许
pre 保留 保留 不允许
pre-wrap 保留 保留 允许

 

转载于:https://my.oschina.net/voler/blog/1548822

你可能感兴趣的文章
运算符
查看>>
数据结构之各排序算法
查看>>
网页分帧操作<frameset>,<iframe>标签
查看>>
Vue生产环境部署
查看>>
酒店之王
查看>>
html5判断用户摇晃了手机(转)
查看>>
VS下Qt4.8.4安装
查看>>
Linux df命令
查看>>
redhat6.5 配置使用centos的yum源
查看>>
取得内表的数据数
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
“=” “:=” 区别
查看>>
pwnable.kr lotto之write up
查看>>
python之UnittTest模块
查看>>
HDOJ_ACM_Rescue
查看>>
笔记纪录
查看>>
九、oracle 事务
查看>>
Git - 操作指南
查看>>
正则表达式的贪婪与非贪婪模式
查看>>
SqlServer存储过程调用接口
查看>>