html的 style元素标签中
样式200行内,可使用此方式
直接书写在该元素的 style属性中
该方式常被 js 替代
样式书写到独立的css文件中
1). 外部样式可以解决多页面样式 重复的问题 2). 有利于浏览器缓存,从而提高页面响应速度 3). 有利于代码分离(html与css),更容易阅读和维护
选择器 {
声明(属性)
}
每个元素都有字体大小,若为直接声明,则直接使用父元素的字体大小。若无父元素(html)则使用(浏览器)基准字号
user agent, UA,用户代理(浏览器)
- 预设值[推荐] normal[默认值]: 数值 400 bold: 数值 700
- 数值 并非所有字体都支持 数值,需要该字体适配对应数值
a元素
del元素 表示错误的内容 s元素 表示过期的内容
css属性涉及到颜色可 设置 rgba([ 0 ~ 255 ], [ 0 ~ 255 ], [ 0 ~ 255 ], [ 0 ~ 1 ])
div{
/* auto 使用浏览器类型 写法类似font-family*/
cursor: url("鼠标图片地址(兼容性须使用.ico 或 .cur图片格式)"), auto;
}
当图片属于网页内容时,必须使用 img元素
当图片仅用于美化网页时,必须使用 背景图
background-image 背景图片
背景图相对于视口
速写 background:url('图片地址') repeat position/size attachment color
[href=“www.baidu.com”]{ color:#ff4400; text-decoration: none; }
#### 伪类选择器
* 选中某些元素的某种状态
1. :link: 超链接未访问的状态
2. :visited: 超链接访问后的状态
3. :hover: 鼠标悬停状态
4. :active: 激活状态,鼠标按下状态
> love hate 爱恨法则: 改写 a元素超链接的四种伪类必须依据此法则顺序,否则会出错 (权重问题)
5. first-child 选择**第一个子**元素
> first-of-type: 选中子元素中**第一个指定类型**的元素
```css
/* 选中a元素并且位于父元素下的第一个子元素(长子) */
a:first-child{ /* 侧重第一个子元素 */
color; red
}
/* 选中第一个子元素类型为 a的元素 */
a:first-of-type{ /* 侧重类型 */
color: red
}
last-of-type: 选中子元素中最后一个指定类型的元素
/* 选中a元素并且位于父元素下的最后一个子元素(长子) */ a:last-child{ /* 侧重最后一个子元素 */ color; red } /* 选中最后一个子元素类型为 a的元素 */ a:last-of-type{ /* 侧重 类型 */ color: red }
nth-of-type 选中指定的子元素中第几个某类型的元素
偶数关键字 even 等同于 2n 基数关键字 odd: 等同于 2n + 1
/* 选中a元素且位于父元素中的第五的子元素上 */ a:nth-child(5){ /* 侧重子元素位置 */ color: red } /* 选中子元素中奇数位的a类型元素 */ a:nth-of-type(odd){ /* 侧重类型 */ color: red }
p::first-letter{
color: red
}
p::first-line{
color: green
}
p::selection{
color: white;
background: black
}
div.red{
color: red;
}
div .red{
color: red;
}
div>.red{
color: red;
}
div+.red{
color: red;
}
div~.red{
color: red;
}
html,
body{
padding: 0;
margin: 0
}
常见重置样式表(cdn引用即可):normaliza.css, reset.css, meyer.css
渲染每个元素的前提条件:该元素的所有 css属性必须有值
- 常规流 [默认]
- 浮动
- 定位
绝大部分情况:盒子的包含快,为其夫元素的内容盒content-box
块盒
1,水平方向
width 和 margin 均为 auto值, 包含块优先被width占满吸收, margin的auto无效
法则2: 浮动元素的包含块(和常规流一样)为父元素的content-box
- 宽度width: auto时, 适应元素内部内容宽度(撑开)
- 高度height:auto时(同常规流)适应内部内容的高度(撑开)
- margin: auto 时, 无效值为0
- border(四方向),padding(四方向)的百分比设置(同常规流),相对于元素width宽度
- float:left 左浮动盒子靠上靠左排列
- float:right 右浮动盒子靠上靠右排列
- 在包含块中(既有常规流盒子又有浮动盒子)排列时,float浮动盒子会避开常规流块盒
常规流盒子代码编写在前,float盒子代码书写在后
- 在包含块中(既有常规流盒子又有浮动盒子)排列时,常规流块盒会无视float浮动盒子
float浮动盒子代码书写在前, 常规流块盒代码书写在后
- 常规流行盒在排列时,会避开float浮动盒子
文字环绕: 若文字没有在行盒中, 浏览器会自动生成一个行盒包裹文字,此行盒成为 匿名行盒
- 文档流中的元素摆放时,会忽略脱离文档流的元素
- 文档流中元素计算自动高度时, 会忽略脱离文档流的元素
relative的偏移不会对其他盒子造成任何影响
包含块: 固定为视口(浏览器网页的可视窗口)
@import '导入css文件地址或路径'
当css文件中出现中文字符时,告知浏览器css字符编码。并且放到css根文件首行
@font-face {
font-family: ’自定义字体名称';
src: url('字体资源路径')
}
- 常规流块盒在水平方向上,必须撑满包含块 containing block
- 常规流块盒在包含块 containing block的垂直方向上依次摆放
- 常规流块盒若 margin外边距无缝相邻(1父子嵌套:父块盒没有设置padding和border时;2兄弟依偎:两兄弟在同一BFC区域时),则进行上下 margin外边距合并(左右一般不会出现外边距合并)
- 常规流块盒的自动高度和摆放位置, 无视 float浮动元素和 position定位元素
BFC渲染区域
先计算像素值,再继承
先继承,再计算像素值
- html元素未设置背景,则body元素设置的背景会覆盖底层画布。即该背景至少覆盖整个视口大小
- html元素设置了背景,则body元素背景则正常显示(依据定义的宽高显示)
- background-size:背景图的宽度百分比% 时,相对于视口宽度(背景色宽度百分比% 则是根据定义的宽度展示)
- background-size: 背景图的高度百分比% 时,相对于网页高度(html内容高度)
- background-position: 背景图的横向位置百分比%,预设值,相对于视口宽度
- background-position: 背景图的纵向位置百分比%, 预设值,相对于视口高度(html内容高度)
解决: vertical-align: middle预设值 / 数值
解决1: 设置父元素的字体大小为 0 解决2: 将img图片设置为 block块盒【推荐】
inline行盒 和 inline-block行块盒
text-align: center; // 设置 行盒和行块盒的包含块(父元素)
.parent{ text-align: center; }
常规流 block块盒
margin: 0 auto;// 自身定宽(因width的auto高于margin的auto), 左右margin设置为 auto
.blcok-box{ width: 100px; marign: 0 auto }
absolute 绝对定位元素 和 fixed固定定位
自身定宽,设置绝对定位左右坐标为0 (left: 0; right: 0),左右margin设置为 auto(marign: 0 auto)
.parent{ position: relative; } .child{ width: 100px position: absolute; left: 0; right: 0; margin: 0 auto; }
设置单行文本所在元素的行高, 为整个区域的高度
.black, .inline-block{ height: 100px; linke-height: 100px; }
inline-block行块盒和 black块盒内多行文本垂直居中
方法1:设置盒子上下填充padding, 达到类似效果【不推荐】
方法2(绝对定位):定高, 设置上下的坐标为0(top: 0, bottom: 0), 将上下margin设置为 auto