css简介
什么是css
- css是层叠样式表(Cascading Style Sheets)的简称。有时我们也会称之为CSS样式表或级联样式表
- css也是一种标记语言
有什么用
- CSS主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。
- CSS让我们的网页更加丰富多彩,布局更加灵活自如。简单理解:CSS 可以美化 HTML , 让 HTML 更漂亮, 让页面布局更简单。
- CSS 最大价值: 由 HTML 专注去做结构呈现,样式交给 CSS,即 结构 ( HTML ) 与样式( CSS ) 相分离
引入css(css三种引入方式)
行内样式表(行内式)
行内样式表(内联样式表)是在元素标签内部的 style 属性中设定 CSS 样式。适合于修改简单样式.
语法:
<div style="color: red; font-size: 12px;">helloword</div>
1.style 其实就是标签的属性
在双引号中间,写法要符合 CSS 规范
2.可以控制当前的标签设置样式
3.由于书写繁琐,并且没有体现出结构与样式相分离的思想,所以不推荐大量使用,只有对当前元素添加简单样式的时候,可以考虑使用
4.使用行内样式表设定 CSS,通常也被称为行内式引入
内部样式表(嵌入式)
内部样式表(内嵌样式表)是写到html页面内部. 是将所有的 CSS 代码抽取出来,单独放到一个
<style>
div {
color: red;
font-size: 12px;
}
</style>
1.
外部样式表(链接式)
实际开发都是外部样式表. 适合于样式比较多的情况. 核心是:样式单独写到CSS 文件中,之后把CSS文件引入到 HTML 页面中使用.
引入外部样式表分为两步:
1. 新建一个后缀名为 .css 的样式文件,把所有 CSS 代码都放入此文件中。
2. 在 HTML 页面中,使用 标签引入这个文件。
语法:
<link rel="stylesheet" href="css文件路径">
css选择器
-
ID选择器
#elem{} id=“elem”1. ID是唯一值,在一个页面中只能出现一次,出现多次是不符合规范的。 2. 命名的规范,由字母、下划线、中划线、字母(并且第一个不能是数字) 3. 驼峰写法 : searchButton (小驼峰) SearchButton (大驼峰) searchSmallButton 短线写法:search-small-button 下划线写法:search_small_button
-
CLASS选择器
.elem{} class=“elem”1. class选择器是可以复用的。 2. 可以添加多个class样式。 3. 多个样式的时候,样式的优先级根据CSS决定,而不是class属性中的顺序。 4. 标签+类的写法
-
标签选择器(TAG选择器)
div{}
使用的场景:
1. 去掉某些标签的默认样式时
2. 复杂的选择器中,如 层次选择器 -
群组选择器(分组选择器)
可以通过逗号的方式,给多个不同的选择器添加统一的CSS样式,来达到代码的复用。
<style>
div,
p,
ul>li{
color: aqua;
}
</style>
-
通配选择器
*{ } -> div,ul,li,p,h1,h2....{} 注:尽量避免使用通配选择器,因为会给所有的标签添加样式,慎用。 使用的场景: 1. 去掉所有标签的默认样式时
-
层次选择器
后代 M N { } 当前M的子孙后代 父子 M > N { } 当前M的儿子 兄弟 M ~ N { } 当前M下面的所有兄弟N标签 相邻 M + N { } 当前M下面相邻的N标签
-
属性选择器
M[attr] {} = : 完全匹配 *= : 部分匹配 ^= : 起始匹配 $= : 结束匹配 [][][] : 组合匹配
-
伪类选择器
M:伪类{}
:link 访问前的样式 ( 只能添加给a标签 )
:visited 访问后的样式 ( 只能添加给a标签 )
:hover 鼠标移入时的样式 (可以添加给所有的标签)
:active 鼠标按下时的样式 (可以添加给所有的标签)注: 一般的网站都只设置 a{} ( link visited active ) a:hover{} :after、:before 通过伪类的方式给元素添加一段文本内容,使用content属性 :checked、:disabled 、:focus 都是针对表单元素的 结构性伪类选择器 nth-of-type() nth-child() 角标是从1开始的,1表示第一项,2表示第二项 | n值 表示从0到无穷大 first-of-type last-of-type only-of-type nth-of-type()和nth-child()之间的区别 type : 类型 child : 孩子
-
:focus 伪类选择器
定义:
:focus 伪类选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况 类表单元素才能获取
css元素显示模式
1、什么是元素的显示模式
定义:
元素显示模式就是元素(标签)以什么方式进行显示,比如
作用:
网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。
2、元素显示模式的分类
2.1、块元素
常见的块元素:
<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>
块级元素的特点:
- 比较霸道,自己独占一行。
- 高度,宽度、外边距以及内边距都可以控制。
- 宽度默认是容器(父级宽度)的100%。
- 是一个容器及盒子,里面可以放行内或者块级元素。
注意:
文字类的元素内不能放块级元素
<p> 标签主要用于存放文字,因此 <p> 里面不能放块级元素,特别是不能放<div>
同理, <h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素
2.2、行内元素
常见的行内元素:
<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>
标签是最典型的行内元素。有的地方也将行内元素称为内联元素。
行内元素的特点:
-
相邻行内元素在一行上,一行可以显示多个。
-
高、宽直接设置是无效的。
-
默认宽度就是它本身内容的宽度。
-
行内元素只能容纳文本或其他行内元素。
注意:
链接里面不能再放链接
特殊情况链接< a> 里面可以放块级元素,但是给 <a>转换一下块级模式最安全
2.3、行内块元素
常见的行内块标签:
<img />、<input />、<td>
它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素。
行内块元素的特点:
- 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。
- 一行可以显示多个(行内元素特点)。
- 默认宽度就是它本身内容的宽度(行内元素特点)。
- 高度,行高、外边距以及内边距都可以控制(块级元素特点)。
2.4、元素显示模式总结
学习元素显示模式的主要目的就是分清它们各自的特点,当我们网页布局的时候,在合适的地方用合适的标签元素。
3、元素显示模式的转换
简单理解:
一个模式的元素需要另外一种模式的特性
比如想要增加链接 <a> 的触发范围。
转换方式
- 转换为块元素:display:block;
- 转换为行内元素:display:inline;
- 转换为行内块:display: inline-block;
4、单行文字垂直居中的代码
解决方案:
让文字的行高等于盒子的高度 就可以让文字在当前盒子内垂直居中
简单理解:
行高的上空隙和下空隙把文字挤到中间了,
如果行高小于盒子高度,文字会偏上,
如果行高大于盒子高度,则文字偏下。
CSS继承
文字相关的样式可以被继承
布局相关的样式不能被继承 ( 默认是不能继承的,但是可以设置继承属性 inherit 值 )
CSS优先级
1. 相同样式优先级
当设置相同样式时,后面的优先级较高,但不建议出现重复设置样式的情况。
2. 内部样式与外部样式
内部样式与外部样式优先级相同,如果都设置了相同样式,那么后写的引入方式优先级高。
3. 单一样式优先级
style行间 > id > class > tag > * > 继承
注:style行间 权重 1000
id 权重 100
class 权重 10
tag 权重 1
4. !important
提升样式优先级,非规范方式,不建议使用。( 不能针对继承的属性进行优先级的提升 )
5. 标签+类与单类
标签+类 > 单类
6. 群组优先级
群组选择器与单一选择器的优先级相同,靠后写的优先级高。
7. 层次优先级
1. 权重比较
ul li .box p input{} 1 + 1 + 10 + 1 + 1
.hello span #elem{} 10 + 1 + 100
2. 约分比较
ul li .box p input{} li p input{}
.hello span #elem{} #elem{}