CSS基础

层叠和继承


1. 样式来源

一个元素的样式,可以通过多种方式来定义,而多种定义方式之间通过复杂的影响关系决定了元素的最终样式

对于层叠来说,共有三种主要的样式来源:

  • 浏览器默认样式
  • 用户定义的样式
  • 开发者定义的样式:
    1. 外链样式
    2. 页面头部定义,内联样式
    3. 定义在 HTML 元素上,行内样式

其优先级为: 开发者定义 > 用户定义 > 浏览器默认

 
对继承的元素来说,子元素自身的样式优先级高于从父级继承来的样式

 

选择器


1. 规则

span {
	color: red
}

在 CSS 术语中,上面这条代码表示一条规则( rule ),规则以一种选择器开头( 代码中的 span ),表示在 DOM 中的什么元素上应用此条规则,后面花括号的部分称为声明,其中以键值对的形式定义样式,键为对应CSS属性,值为属性值,键值对之间使用 分号 分隔

 

2. 规则确定度

如果多于一个规则指定了相同的属性值都应用到一个元素上,CSS规定拥有更高确定度的选择器优先级更高

 
如果样式中包含冲突的规则,且它们具有相同的确定度。那么,后出现的规则优先级高

3. 选择器权重值

当有多个不同组合的选择器指向同一元素时,需要使用选择器的权重值来判定哪个规则应用于元素上

权重如下:

  • 标签选择器: 1
  • class 选择器: 10
  • id 选择器: 100
  • 内联样式: 1000

 

4. 基于关系的选择器

选择器选择的元素
A EA 后代中对应 E 的任意元素
A > EA 的直系后代对用的满足 E 的元素
B + EB 的 下一个 满足 E 的兄弟节点( 必须是下一个兄弟节点满足 E,才会应用 .test div -> <div class="test"/> <div/> )
B ~ EB 的后面 所有 满足 E 的兄弟节点( 只要是 B 后面的兄弟节点,并且满足 E,就应用 )

 

内容


在样式中可以定义文本内容和图片内容,样式中定义的内容 不会 成为 DOM 的一部分

1. 文本内容

CSS 可以在元素前后插入文本,使用 ::before::after,并为其设置 content 属性来设置文本内容

.test::after {
	// 出现在元素后面的文本
	content: "test"
}

2. 图片内容

可以通过将 content 属性值设置为某个图片的URL,可以将图片插到元素的前面或后面

.test::after {
	// 元素后面插入一个空格和一张图片
	content: " " url("xxxx/xxx/xx.png");
}

 

盒模型


当对一个文档进行布局(laying out)的时候,浏览器渲染引擎会根据CSS-Box模型(CSS Basic Box model)将所有元素表示为一个矩形盒子(box)。CSS决定这些盒子的大小,位置以及属性(颜色,背景,边框尺寸…)

在CSS中,使用标准盒模型描述这些矩形盒子中的每一个。这个模型描述了元素所占空间的内容。每个盒子有四个边:外边距边, 边框边, 内填充边 与 内容边。

盗图MDN

1. 区域划分

1. 内容区域( content )

包含元素真实内容的区域。它通常包含背景、颜色或者图片等,位于内容边界的内部

 

2. 内边距区域( padding )

延伸到包围padding的边框。如果内容区域content area设置了背景、颜色或者图片,这些样式将会延伸到padding上

 

3. 边框( border )

是包含边框的区域,扩展了内边距区域

 

4. 外边距区域( margin )

用空白区域扩展边框区域,以分开相邻的元素

 
对于非替换的行内元素来说,尽管内容周围存在内边距与边框,但其占用空间(行高)由 line-height 属性决定。

5. 指定对应方向的属性

padding、border、margin 都可以同时设置多个方向的值,设置参数不同,应用的方式也不同

默认四个参数的方向指定依次是: 上、右、下、左

指定一个参数时: 相当于四个参数相同

指定两个参数时: 第一个参数代表 上、下 两个方向,第二个参数代表 左、右 两个方向

指定三个参数时: 第一个参数表示 方向,第二个参数表示 左、右 两个方向,第三个参数表示 方向

 

布局


1. 大小单位

最好通过百分比或 ems (em) 来指定大小。 em 通常是指当前字体大小(父元素字体字母m的宽度)。当用户改变字体大小时,你的布局会自己修正

2. 文本布局

text-align: 设置文本对齐方式,可选值有 left right center justify

text-indext: 设置文本的首行缩进

 
这两个属性可以应用于 任何文本类内容不只是纯文本。 需要注意的是,它们会被元素的子元素继承

3. 浮动

浮动被设计用来解决文字环绕图片的问题,所以,浮动的元素后面的元素中的文字不会被浮动元素覆盖,而是环绕在浮动元素周围

可以使用 clear 属性 或者 触发 BFC 来清除浮动

4. 位置

可以为元素指定 position ,来定位元素:

  • relative: 通过为元素指定一个值,元素相对于其原来位置移动。也可以使用 margin 来达到同样的效果
  • absolute: 为元素指定相对于其设置了 positionrelative fixed absolute 的父元素的确切位置
  • fixed: 为元素指定相对于窗口的确切位置 。即使文档的其它元素出现滚动,元素位置仍然不变
  • static: 默认值

absolute: 当设置为了 absolute 后,如果没有为其指定 left top bottom right 的值,元素的位置不会变( 还是在直接父元素的位置 )left right 或者 top bottom 中有一个没有被设置,则在该方向上还是使用默认的位置,只会在设置值的方向上相对于设置了 absolute fixed relative 的元素进行偏移

1. sub{ absolute; }  -> 位置不会改变
2. sub{ absolute; top: 10px }  -> top会相对于有定位的父元素的顶部定位,左右方向不变( 还是在直接父元素中的位置 )
3. sub { absolute; top: 10px; left: 10px; }  -> 完全相对于有定位的父元素进行定位

 

媒体


CSS通过使用 @media 的格式来对特定的媒介指定适配规则

常见的媒介类型:

  • screen: 彩色计算机显示
  • print: 打印(分页式媒体)
  • projection: 投影
  • all: 所有媒体( 默认 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值