css基础语法


CSS概念

  • css 全称 cascading style sheets,层叠式样式表, 是一种用来表现 HTML 的文件样式的计算机语言。

  • 作用: 静态地修饰网页, 并且可以配合各种脚本语言动态地对网页各元素进行格式化。

CSS 的出现, 实现了网页的结构和样式分离。美容师!


CSS的组成

层叠式 样式
css 中贯穿始终的加载特性 定义如何显示 HTML 元素
层叠性 文字文本
继承性 背景
盒模型
浮动
定位
其他

CSS书写

CSS 规则由两个主要的部分构成: 选择器, 以及一条或多条声明

image-20210905215230100.png

书写位置

内联式(不推荐)

  • 行内式

  • 书写位置:在 HTML 标签的 style 属性中书写 css 样式

     <div style="width: 360px;height: 100px;background-color: red;"></div>
    
内联式缺点
  • 必须写在标签,没有脱离HTML标签

  • 让标签结构繁重,不利于HTML结构的解读

  • 一个CSS代码,只能给一个标签使用,如有多个标签使用相同样式,需要重写,增加代码量

内嵌式

  • 书写位置:在HTML文件,<head>标签内部的<style>标签中。<style> 标签书写在< title> 标签后面, 所有 css 代码书写在 <style> 标签内部

  • 在<style> 标签有一个标签属性叫做 type, 属性值是 “ text/css”

    <style type="text/css">
     div {
     width: 360px;
     height: 100px;
     background-color: red;
     }
     </style>
    
内嵌式特点
优点
  • 实现结构与样式初步分离

  • 多个标签可用同一段代码设置相同样式

缺点
  • 结构与样式没有完全分离,依旧是写在HTML文件里面

  • 在HTML中CSS代码过多,文件不美观

外联式

  • 也称作外链式 CSS、 外部 CSS

  • 书写位置:在一个单独的扩展名为.css的文件中

  • 书写语法:与内嵌式类似,直接书写,单并不需要添加<style>标签

     /* 直接书写css规则 */
    div {
     width: 360px;
     height: 100px;
     background-color: red;
    }
    
外联式引用
  • 外联式样式表必须引入到 HTML 文件中, 才能正常进行加载

  • 引入方式: 在 HTML 中的 <head> 标签内部使用 <link> 标签进行引入

    <link rel="stylesheet" href="01.css" type="text/css">
    
外联式优点
  • HTML 和 css 完全分离

  • 多个 HTML 文件可以共用一个 css 文件, 便于提取公共 css, 减少代码量

  • 一个 css 变化, 多个 HTML 页面同时变化, 减少工作量

  • 一个 HTML 文件可以引入多个 css 文件, 可以实现同一个页面中 css 代码分层

导入式

  • 书写位置:在内嵌式样式表 <style> 标签内部, 或者在外联式样式表的内部, 导入其他的外部的.css 文件

  • 导入方式: 利用一条 @import url(路径) 语句进行引入

     <style>
    @import url(01.css);
    h1 {
    color: red;
    }
    </style>
    
导入式问题
  • 与外联式样式表基本相同

  • 但是由于导入式在浏览器中加载时, 会在 HTML 结构加载完毕后再进行编译, 如果网速比较慢时, 会导致网页出现没有 css 样式的效果, 体验不好

  • 实际工作中, 较少使用导入式, 推荐使用外联式样式表

实际应用

  • 小型案例: 可以使用内嵌式 CSS

  • 实际工作、 大型网站项目: 推荐使用外联式 CSS


CSS语法

CSS规则

CSS 规则由两个主要的部分构成: 选择器, 以及一条或多条声明

image-20210905215230100.png

样式规则

以内嵌式样式表为例

  • 所有的 css 代码都必须书写在 <head> 标签内部的一对 <style> 标签内

  • css 在给某个标签设置样式前, 必须使用选择器先选中标签

  • css 样式的属性, 属性名和属性值的键值对写法为 k:v;

  • 给每个选择器添加的样式属性都必须写在一对大括号 {} 之内

  • 给一个标签添加的所有需要的样式, 都要在 {} 内部一一罗列出来

    <style type="text/css">
     div {
     width: 360px;
     height: 100px;
     background-color: red;
     }
     </style>
    

注意事项

  • 分号必要性: 每条属性后面的分号必须写, 如果不写, 会导致后面所有的代码加载错误。

  • css 中所有属性与属性之间对空格、 换行、 缩进不敏感。

CSS 注释语法

vs code快捷键: ctrl+/

/*中间部分为注释内容*/

CSS样式格式

  • 展开格式:开发过程使用, 代码可读性强, 便于调错

     div {
     width: 360px;
     height: 100px;
     background-color: red;
     }
    
  • 紧凑格式:上传服务器时使用, 减少不必要的空白字符, 压缩文件大小, 利于传输

    div {width: 360px; height: 100px; background-color: red;}
    

英文大小写

CSS的英文可以大写,也可以小写

建议全部小写!

空格规范

  • 选择器与大括号 {} 之间保留一个空格

  • 冒号后面, 属性值前面, 保留一个空格

    div {
      width: 360px;
      height: 100px;
      background-color: red;
    }
    

CSS常用样式

颜色color

  • 作用: 给文字设置颜色

  • 属性名 k : color

  • 属性值 v : 颜色名、 颜色值

颜色名

颜色名就是使用颜色的英文单词进行表示

红色 red
橙色 orange
黄色 yellow
绿色 green
青色 cyan
蓝色 blue
紫色 purple
黑色 black
白色 white
金色 gold
粉色 pink
浅黄色 lightyellow
黄绿色 yellowgreen
天蓝色 skyblue

更多的颜色名可以通过查询手册得到

颜色值

颜色值指使用具体颜色的数值表示。 包括: rgb 模式和十六进制模式写法

rgb 模式
  • rgb 模式: 是根据红绿蓝三原色进行混合而成的颜色模式

  • 每个原色的取值范围是0-255, 一共256个数值。 三个原色共能混合成1677多万种颜色

  • 书写方法: rgb(红,绿,蓝)

常用颜色的 rgb 色值:

红色 rgb(255,0,0)
绿色 rgb(0,255,0)
蓝色 rgb(0,0,255)
黑色 rgb(0,0,0)
白色 rgb(255,255,255)
灰色 rgb(128,128,128)
十六进制模式
  • 十六进制模式: 是 rgb 模式的一种简化写法, 使用十六进制的数字字符去替换十进制的 0--255 的数字

  • 十六进制: 逢十六进一, 每个数位上只能出现 0-9, a-f 之间的字符

  • 书写为颜色值时, 红、 绿、 蓝每个色值都要使用两位数的十六进制进行替换。0→00;255→ff

  • 书写方式: 使用 # 开头, 后面连续书写红、 绿、 蓝三个颜色的十六进制的两位数值

常用颜色的十六进制色值:

红色 #ff0000
绿色 #00ff00
蓝色 #0000ff
黑色 #000000
白色#ffffff
灰色 #808080

注:十六进制颜色值简写模式: 如果红、 绿、 蓝三个原色的色值每一个都是由重叠的数字组成, 可以将重叠的数字简化成一个进行书写。 如:红色 #f00

字体font-family

  • 作用: 定义元素内文字的字体

  • 属性名 k : font-family, 字体属于 font 综合属性的一个单一属性

  • 属性值 v : 字体名称, 必须包裹在一对引号中, 属性值可以有多个, 值之间用逗号分隔

常用字体

  • 常用的中文字体:

    宋体 SimSun
    微软雅黑 Microsoft Yahei
  • 常用的英文字体:Arial consolas

如果不设置字体属性, 不同的浏览器有自己的默认字体

注意事项

  • font-family 可以设置多个字体名称, 在实际加载时只会选择一种加载, 选择的依据是按书写顺序进行, 如果浏览器不支持第一个字体, 则会尝试下一个, 直到找到第一个支持的字体

  • 浏览器中加载的字体是用户机器中自带的, 如果用户的电脑中没有设置的字体则加载失败, 需要查找下一个, 因此,必须在最后设置一个所有机器都具备的通用字体作为后路

  • 中文字体中一般带有英文可以加载的字体效果, 为了避免英文字的字体影响,建议将英文字体写在属性值最前面

实际应用

首选字体需要根据设计图确定, 最后需要设置备用字体

字号font-size

  • 作用: 设置文字的大小。

  • 属性名 k : font-size, 字号属于 font 综合属性的单一属性

  • 属性值 v : 可以使用相对长度单位, 也可以使用绝对长度单位。 推荐使用相对长度单位

单位

相对长度单位 说明
px 像素值,最常使用的单位
em 倍数,继承自祖先元素设置的字号的倍数
% 百分比,继承自祖先元素设置的字号的百分比
绝对长度单位 说明
in 英寸
cm 厘米
mm 毫米
pt

注意事项

  • 如果 HTML 中不设置字号, 不同的浏览器有自己默认的加载字号, 比如 chrome、IE, 默认显示字号为 16px

  • 不同的浏览器也有自己最小加载显示字号, 如果设置的字号低于最小字号, 都以最小字号加载, 0除外。 chrome 浏览器最小加载显示字号为8px, IE 浏览器最小可以支持1px的字号

实际应用

  • 最小设置字号必须是12px, 如果低于12px会出现兼容问题。 现在网页中普遍使用14px+

  • 尽量使用 14px、 16px等偶数的数字字号, ie6 等老式浏览器支持奇数会有bug

  • 实际工作中的字号, 需要以设计图为准

盒子实体化属性

属性名 属性值 说明
width px单位的数值 定义元素占有的宽度
height px单位的数值 定义元素占有的高度
background-color 颜色名、颜色值 定义元素的背景颜色
  div {
    width: 360px;
    height: 100px;
    background-color: red;
  }

CSS选择器

  • 选择器: 选择要添加样式的 HTML 标签的一种方法、 模式

  • 首先学习 css2.1 版本的七种选择器:

    • 基础选择器: 标签选择器、 id 选择器、 类选择器、 通配符选择器

    • 高级选择器: 后代选择器、 交集选择器、 并集选择器

标签选择器

  • 通过标签名去选择标签元素

  • 书写方式: 标签名,如p

  • 选择范围: 选中的是HTML文件中所有的同名标签

  • 注意: 标签选择器可以选择所有的同名标签, 会忽视 HTML 元素的嵌套关系, 不管嵌套多深, 都能被选中

标签选择器特点

  • 优点: 选中所有的同名标签, 设置所有同名标签的公共样式

  • 缺点: 只能实现全选, 不能局部

    p {
      color: red;
    }

id 选择器(少用,不建议)

  • 通过标签上的 id 属性去选择标签。

  • 书写方式:#id 属性值

  • 选择范围: 只能选中一个标签。

  • id 命名规则: 必须以字母开头, 后面可以有字母、 数字、 下划线、 横线, 严格区分大小写。 每个 id 属性值必须是唯一的, 不能与其他的 id 同名

  • 注意: 如果希望多个标签设置相同的样式, 使用id选择器的话, 必须给这多个标签取不同的 id 名, 分别选中设置

    #para1 {
      color: red;
    }
    #para2 {
      color: red;
    }

id 选择器特点

缺点: id 选择器只能实现单选, 不能帮我们完成多选的功能

类选择器

  • 通过标签的 class 属性去选择标签。

  • 书写方式:.class属性值

  • 选择范围: 是页面中所有 class 属性值相同的标签。

  • class 命名规则: 必须以字母开头, 后面可以有字母、 数字、 下划线、 横线, 严格区分大小写。 class 属性值可以与其他的class相同

    .demo {
      color: red;
    }

类选择器特点

  • 多个不同的标签, 不区分标签类型, 只要 class 属性值相同, 都可以被同一个类选择器选中

  • 一个标签的 class 属性可以有多个属性值, 值之间用空格分隔, 每个属性值组成的选择器, 都可以选中这一个标签, 每个选择器后面的样式都会添加给同一个标签

<p class="demo ddd">段落标签内容</p>

类选择器的特殊应用

原子类: 在css中提前设置一些类名, 每个类选择器后面只添加一条css样式属性, 这些属性会在页面中常被使用, 后期可以不需要多次书写属性, 只要将对应的类名添加给需要的标签即可

类选择器的优点

  • 通过一个类选择器进行多选, 选中多个标签, 添加公共样式

  • 一个标签可以被多个类选择器选中, 可以将所有样式进行分离, 分别提取公共样式和单独样式, 节省代码量

实际工作中, 通常我们有一个使用规律: 类上样式(CSS), id 上行为(JavaScript)

通配符选择器

  • 通过一个特殊符号选择页面内所有的标签。

  • 书写方式: *

  • 选择范围: 包含 <html>标签在内的所有标签

    * {
      color: red;
      margin: 0;
      padding: 0;
    }

通配符特点和应用

  • 优点: 实现全选, 简化书写

  • 缺点: 通配符选择效率低, 设置的部分公共样式不是所有标签都需要添加, 如果使用通配符选择, 会让不需要的标签也加载一次样式, 导致浏览器多做无用的工作

  • 注意: 实际上线的网站不允许使用 * 去清除默认内外边距

  • 不过普通的案例, 代码量较少时, 为了节省书写, 可以使用通配符

后代选择器

  • 通过标签之间存的嵌套关系(族谱关系) 去选择元素, 基本组成部分就是基础选择器

  • 后代选择器也叫包含选择器

  • 书写方式: 空格表示后代, 基础选择器中间使用空格分隔, 空格前面的选择器选中的标签必须是后面选择器选中标签的祖先级

  • 选择范围: 通过后代选择器中前面的一系列基础选择器缩小选择范围, 最终由最后一个选择器确定选中的标签

  • 注意: 后代选择器必须满足所有的后代关系才能够被选中, 后代关系不一定只能是父子关系

后代选择器特点

优点: 减少 class 属性的使用, 选择效率更高

    .box1 ul li p {
      color: red;
    }
    .box1 p {
      color: green;      
    }

交集选择器

  • 通过一个标签之上满足所有的基础选择器的需求去选择标签

  • 书写方式: 基础选择器进行如果有标签选择器参与交集, 必须书写在开头

  • 选择范围: 选择的是满足所有基础选择器需求的标签, 如果一个条件不满足都不能被选中

  • 比较常见的是标签与类的交集

    .box1 p.demo {
      color: green;
    }

交集选择器更多写法

  • 交集选择器可以进行类名的连续交集, 需要满足更多的条件才能选中标签。

  • IE6 不支持类名连续交集写法。

  • 交集选择器可以作为其他高级选择器的组成部分

并集选择器

  • 不同选择器选中的元素都要设置相同的样式, 多次书写相同的样式属性对代码造成浪费, 可以将前面六种选择器可以进行并集书写, 相当于一种简化写法
  • 书写方式: 将多个选择器中间用逗号进行分隔, 最后一个后面不能加逗号

  • 选择范围: 是所有的单独选择器选中的标签的并集集合。

    body,h2,div,ul,li,p {
      margin: 0;
      padding: 0;
    }

并集选择器用途

  • 如果多个标签具有公共样式, 但是不能用一个选择器选中, 可以使用并集写法

  • 可以使用标签选择器的并集写法, 进行默认样式的清除, 替换通配符的功能


CSS层叠式

继承性

  • 如果一个标签没有设置过一些样式, 它的某个祖先级曾经设置过, 在浏览器中该标签也加载了这些样式, 这些样式都是从祖先级继承而来, 这种现象就是继承性

  • 能够被继承的样式是所有的文字相关样式属性, 其他的属性都不能被继承

    .box1 {
      width: 200px;
      height: 200px;
      background-color: red;  
      color: green;
      font-family: "宋体";
      font-size: 14px;    
    }

继承性应用

继承性是一个很好的性质, 可以将页面中出现最多的文字样式设置给一个较大的祖先级标签比如 <body>, 后期所有的后代标签都可以从 <body> 进行继承

    body {
      color: green;
      font-family: "宋体";
      font-size: 14px;
    }
    .box1 {
      width: 200px;
      height: 200px;
      background-color: pink;      
    }

层叠性

  • 思考问题: 同一个标签可以被多个选择器选中, 如果选择器后面设置了相同的样式属性, 标签最终该加载哪个? 或者, 在继承性中, 如果多个祖先都设置了相同的文字样式, 后代中该继承哪个祖先级的?

  • 解决方法: 就是使用层叠性去解决冲突。 多个选择器在进行对比的过程中, 最终只有一个属性会成功加载, 它会层叠、 覆盖掉其他的属性。

  • 判断最终胜出的属性是谁, 需要依赖判断优先级

image-20210906003818889.png

选中目标标签

  1. 第一步: 比较多个选择器的权重, 权重高的层叠权重低的。

    • 基础选择器的权重: 根据选择范围, 范围越大权重越小, *< 标签选择器 < 类选择器 < id 选择器。

    • 高级选择器权重比较方法: 依次比较组成高级选择器的 id 的个数, 类的个数, 标签的个数, 如果前面能够比较出大小就不再比较后面, 如果前面相等就往后比较,直到比较出大小。

    • 比较顺序: id 个数, 类的个数, 标签的个数

  2. 第二步: 如果选择器权重都相同, 需要比较 CSS 中代码的书写顺序, 后写的层叠先写的

选中目标标签的组先级

  • 如果选择器选中的是祖先元素, 文字的样式可以被继承。

    1. 比较就近原则, 比较选择器选中的祖先级在 HTML 结构中距离目标标签的远近, 近的层叠远的

    2. 如果选中的祖先级距离目标一样近(同一个祖先级) , 比较选择器权重,权重大的层叠小的。

    3. 如果距离一样近, 权重也相同, 最后比较 CSS 中的书写顺序, 后面的层叠前面的

! important 关键字

  • 如果在比较选择器权重的过程中, 遇见一个 !important 关键字, 可以将某条 CSS样式属性的权重提升到最大。

  • 书写位置: 在某个css属性的属性值后面 空格加 !important

  • 注意:

    • 就近原则中, 不需要比较选择器权重, 所有会失效

    • important 不能提升选择器的权重, 只能提升某条属性的权重到最大

    #box2 {
      color: yellow !important;
    }
    #box2 .box3 {
      color: blue;

行内式权重

  • 行内式样式与内嵌式或外链式样式比较权重时,行内式的权重最高

  • 但是, 与 !important 关键字相比权重要低

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

推荐阅读更多精彩内容