CSS快速入门

一、概述

CSS是层叠样式表(Cascading Style Sheets)的缩写。从名称可以看出,CSS是用来定义如何显示HTML元素,并且多个样式是可以叠加的。之所以在HTML中使用样式,是为了解决内容与表现分离的问题。样式通常存储在样式表中,而外部样式表通常存储在CSS文件中。

二、语法

CSS规则由两个主要部分构成:选择器,以及一条或多条声明。选择器通常是需要改变样式的HTML元素。声明由一个属性和一个值组成,多个声明之间用分号分隔。属性是希望设置的样式属性,每个属性有一个值,属性和值用冒号分隔。多个选择器可以共用同一个声明,选择器之间用逗号分隔。

selector {property : value}

三、选择器

选择器大体上可以分三种:标签选择器、id选择器、类选择器。

1、标签选择器

为指定元素设置特定的样式,可以为多个元素进行设置。在CSS中,标签选择器直接以元素标签来定义。

tag_selector {property : value}

2、id选择器

为带有指定id属性的HTML元素设置特定的样式,具有唯一性。id属性不要以数字开头,否则会导致某些浏览器不能识别。在CSS中,id选择器以#来定义。

#id_selector {property : value}

3、类选择器

为带有指定class属性的HTML元素设置特定的样式,class属性可以在多个元素中使用。在CSS中,类选择器以.来定义。

.class_selector {property : value}

4、选择器的优先级

原则上,选择器指向越准确,它的优先级越高。从选择器的种类区分来看,显然类选择器要优先于标签选择器,而id选择器要优先于类选择器。此外,有一种写法是直接在标签内部定义样式,这种方式的优先级最高,但不推荐,因为这样就违背了内容和表现分离的思想。

5、选择器的组合

有的时候,需要使用组合选择符来表示两个选择器之间的关系。主要分为四种组合方式:后代选择器、子元素选择器、相邻兄弟选择器、普通兄弟选择器。

  • 后代选择器

    使用空格分隔,选择作为某元素后代的所有元素。

  • 子元素选择器

    使用>分隔,选择作为某元素子元素的元素。

  • 相邻兄弟选择器

    使用+分隔,选择紧接着某元素后的元素,并且二者拥有相同的父元素。

  • 普通相邻兄弟选择器

    使用~分隔,选择所有指定元素的相邻兄弟元素。

更多关于选择器的内容,可以参考:css选择器知识汇总

四、样式表的使用

当HTML文档读取到一个样式表时,浏览器会自动进行解析,并对文档进行格式化。根据样式表定义的位置,HTML文档读取样式表有三种方式:外部样式表、内部样式表以及内联样式。

1、外部样式表

当样式需要应用到许多页面时,可以选择使用外部样式表。通过改变一个样式文件,就可以改变整个站点的外观,是一件极有效率的事情。

用法:每个页面使用<link>标签链接到外部样式表,<link>标签在文档的头部定义。

<link rel="stylesheet" type="text/css" href="style.css">

2、内部样式表

当某个页面需要特殊的样式时,可以选择使用内部样式表。这样,样式只对当前页面产生效果,而不会影响到其他页面。

用法:使用<style>标签在文档的头部定义内部样式表。

3、内联样式

当样式只需要在某个元素应用一次时,可以选择使用内联样式。这样,样式只对该元素产生效果。

用法:在相关的标签内使用style属性,属性值包含要设置的样式的各种属性。

4、多重样式

当一个HTML元素被多个样式定义时,所有的样式会按照优先级的顺序叠加成一个虚拟的样式表,最终,会根据这个虚拟样式表来显示页面。

五、样式属性

1、背景

背景属性用于定义HTML元素的背景。

  • background-color,设置元素的背景颜色
  • background-image,设置元素的背景图片
  • background-repeat,设置背景图片是否重复以及如何重复
  • background-attachment,设置背景图片是否固定或者随着页面滚动
  • background-position,设置背景图片的起始位置

为了简化,可以将这些属性合并成一个属性,简写为background,属性值的顺序按照上面的定义顺序排列。

2、文本

通过文本属性,可以改变文本的颜色、字符间距、对齐文本、装饰文本、对文本进行缩进等。

  • color,设置文本颜色
  • direction,设置文本方向
  • text-align,设置文本的水平对齐方式
  • text-transform,设置文本的大写和小写字母
  • text-shadow,设置文本阴影

3、字体

字体属性定义字体、加粗、大小、文字样式等。

  • font-family,设置文本的字体系列
  • font-size,设置文本的字体大小
  • font-style,设置文本的字体样式
  • font-weight,设置文本字体的粗细

4、列表

列表属性用来设置列表项标记,包括有序、无序、图像。

  • list-style-type,设置列表项标记的类型
  • list-style-postion,设置列表项标记的位置
  • list-style-image,设置图像为列表项标记

可以使用缩写属性list-style,属性值的顺序按照上面的定义顺序排列。

5、盒子模型

盒子模型规定了元素框处理元素内容、内边距、边框和外边距的方式。其中,元素框的最内部分是实际的内容,直接包围内容的是内边距,内边距的边缘是边框,边框以外是外边距。内边距、边框和外边距都是可选的,默认值是0。

Tips:当指定一个CSS元素的宽度和高度时,实际上设置的是内容区域的宽度和高度,不包括内外边距和边框。

5.1 内边距

padding属性定义了元素边框与元素内容之间的空白区域。可以接受长度值或百分比值,但不允许使用负值。百分比值是相对于其父元素的width计算的,如果父元素的width改变,它也会随之改变。

  • padding-top,设置上填充
  • padding-right,设置右填充
  • padding-bottom,设置下填充
  • padding-left,设置左填充

可以使用缩写属性padding,属性值的顺序按照上面的定义顺序排列。

5.2 边框

border属性允许指定元素边框的样式和颜色。

  • border-width,设置边框宽度
  • border-style,设置边框样式
  • border-color,设置边框颜色

可以使用缩写属性border,属性值的顺序按照上面的定义顺序排列。

5.3 外边距

margin属性定义了元素周围的空白区域。可以接受长度值、百分比值或自动,还可以使用负值。

  • margin-top,设置上边距
  • margin-right,设置右边距
  • margin-bottom,设置下边距
  • margin-left,设置左边距

可以使用缩写属性margin,属性值的顺序按照上面的定义顺序排列。

6、定位

元素可以通过顶部、底部、左部和右部属性进行定位,在使用这些属性之前需要设定position属性。而position属性由于定位方法的不同,它们的工作方式也有所不同。

  • static定位

    HTML元素默认是静态定位,即没有定位。元素正常显示,不会受到top、bottom、left和right属性的影响。

  • fixed定位

    元素的位置相对于浏览器窗口是固定的,即使窗口滚动它也不会随之移动。固定定位使得元素的位置与文档流无关,不占据空间,并且会和其他元素重叠。

  • relative定位

    元素的位置是相对其正常位置的,即从正常位置进行偏移。元素发生偏移后,原来所占的空间仍然保留,并且移动元素可能会导致其覆盖其他区域。

  • absolute定位

    元素的位置相对于最近已定位的父元素,如果没有已定位的父元素,那么它的位置就会相对于文档<html>。绝对定位使得元素的位置与文档流无关,不占据空间,并且会和其他元素重叠。

7、浮动

float属性会使元素水平移动,其周围的元素也会重新排列。虽然起初float属性是用于图像排列,但是它在布局时往往会收到出其不意的效果。

一个浮动元素会一直水平移动,直到它的外边缘碰到包含框或其他浮动框的边框为止。浮动元素之后的元素会围绕该浮动元素,而浮动元素之前的元素则保持不变。

元素浮动之后,周围的元素会重新排列。为了避免这种情况,可以使用clear属性,指定元素两侧不能出现浮动元素。

六、伪类和伪元素

伪类和伪元素都是用来添加一些选择器的特殊效果。

1、语法

选择器的语法:

selector:pseudo-class/pseudo-element {property:value;}

类选择器的语法:

selector.class:pseudo-class/pseudo-element {property:value;}

2、 first-line和first-letter

  • first-line用于向文本的首行设置特殊样式
  • first-letter用于向文本的首个字母设置特殊样式

只能用于块级元素。

3、 before和after

  • before用于在元素的内容前面插入新内容
  • after用于在元素的内容后面插入新内容

4、 链接

  • link表示所有未访问的链接
  • visited表示所有访问过的链接
  • active表示正在活动的链接
  • hover表示鼠标放在链接上的状态

5、表单元素

  • checked表示所有选中的表单元素
  • disabled表示所有禁用的表单元素
  • enabled表示所有启用的表单元素

相关阅读:

阮一峰:CSS Modules 用法教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,744评论 1 92
  • 1.块级元素和行内元素 块级(block-level)元素;行内(内联、inline-level)元素。 块元素的...
    饥人谷_小侯阅读 1,995评论 1 4
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,038评论 0 1
  • 1.计算机中的文件 二进制文件 文本文件区别:使用windows记事本打开是否出现乱码 2.网页组成 超文本标记语...
    一只写程序的猿阅读 3,557评论 1 10
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,826评论 0 6