css笔记

css笔记

一、CSS基础

1、CSS简介

CSS也是一种标记语言,用于给html标签设置各种样式

2、CSS编写位置

1、行内样式

编写在标签的style属性中

<a style="coler: red">行内样式</a>
2、内部样式

写在html页面内部,抽取出一个style标签,供页面内所有标签使用,可以放在html的任何位置,但是一般放在head标签中

<style>
    /* 设置h1标签的样式 */
    h1{
        coler:red;
        font-size:60px;
    }
</style>
3、外部样式

写在单独的.css文件中,可以供所有的html页面使用,需要在html页面引入

  • 创建一个.css为后缀的文件,将CSS样式写在其中

    h1{
        color:red;
    }
    
  • 在html页面中引入,注意link标签需要写在head中

    <link rel="stylesheet" href="./xxx.css">
    
    • rel:(relation:关系)说明引入的文档与当前文档的关系
    • href:引入的文档来自哪里

3、CS样式优先级

行内样式 > 内部样式 > 外部样式

  • 行内样式:一般不使用
    • 缺点
      • 代码复用性小
      • 结构与样式不分离
      • 代码结构混乱
  • 内部样式:使用较少
    • 缺点:
      • 结构与样式未彻底分离
      • 样式不能多页面复用
  • 外部样式:最多使用
    • 缺点:需要引入

4、CSS语法规范

  • 选择器:找到需要添加样式的标签
  • 声明块:设置具体的样式,设置格式为 属性名:属性值

在这里插入图片描述

5、注释写法

/* 注释内容 */

6、代码风格

  • 展开风格:开发时使用,便于维护和测试

    h1 {
    	color: red;
    	font-size: 40px;
    }
    
  • 紧凑风格:不含多余的空格,项目上线时使用,节省文件占用空间

    h1{color:red;font-size:40px;}
    

二、CSS选择器

1、基本选择器

通配选择器
  • 作用:可以选中所有的HTML标签
/* 选中所有元素 */
* {
	color: orange;
	font-size: 40px;
}
元素选择器
  • 作用:可以选中同种标签
/* 选中所有h1元素 */
h1 {
	color: orange;
	font-size: 40px;
}
/* 选中所有p元素 */
p {
	color: blue;
	font-size: 60px;
}
id选择器
  • 作用:根据id选中标签
/* 选中id值为earthy的那个元素 */
#earthy {
	color: red;
	font-size: 60px;
}
类选择器
  • 作用:选中类名一样的标签
/* 选中所有class值为speak的元素 */
.speak {
	color: red;
}

2、复合选择器

交集选择器
  • 作用:选中同时满足多个条件的标签
  • 语法:选择器1选择器2选择器3
/* 选中:类名为beauty的p元素,为此种写法用的非常多!!!! */
p.beauty {
	color: blue;
}
/* 选中:类名包含rich和beauty的元素 */
.rich.beauty {
	color: green;
}
  • 注意:交集选择器不能同时指定两个标签,因为元素不可能同时是两种标签
并集选择器
  • 作用:选中满足一个其中一个条件的元素,又称:分组选择器

  • 语法:选择器1,选择器2,选择器3

    /* 选中id为peiqi,或类名为rich,或类名为beauty的元素 */
    #peiqi,
    .rich,
    .beauty {
    	font-size: 40px;
    	background-color: skyblue;
    	width: 200px;
    }
    
    
  • 注意:

    • 代码规范:一般竖着写,便于阅读
    • 任何形式的选择器,都可以作为并集选择器的一部分 。
    • 并集选择器,通常用于集体声明,可以缩小样式表体积。
后代选择器
  • 作用:选中符合要求的后代元素

  • 语法:选择器1 选择器2 选择器3

    /* 选中ul中的所有li */
    ul li {
    	color: red;
    }
    /* 选中ul中所有li中的a */
    ul li a {
    	color: orange;
    }
    /* 选中类名为subject元素中的所有li */
    .subject li {
    	color: blue;
    }
    /* 选中类名为subject元素中的所有类名为front-end的li */
    .subject li.front-end {
    	color: blue;
    }
    
  • 注意:

    • 后代选择器选中的是后代,不是选中祖先
    • 孙子,儿子,重孙子都算是后代
子代选择器
  • 作用:选中指定元素中,符合条件的子元素

  • 语法:选择器1>选择器2>选择器3

    /* div中的子代a元素 */
    div>a {
    	color: red;
    }
    /* 类名为persons的元素中的子代a元素 */
    .persons>a{
    	color: red;
    }
    
    
  • 注意:

    • 选中的是子代,不是父代
    • 单纯指儿子,不包含孙子等其他后代
兄弟选择器
相邻兄弟选择器
  • 作用:选中符合条件的兄弟元素

  • 语法:选择器1+选择器2

    /* 选中div后紧紧相邻的兄弟p元素,即div和p之间不能有任何器它元素 */
    div+p {
    	color:red;
    }
    
通用兄弟选择器
  • 作用:选中符合条件的所有兄弟元素

  • 语法:选择器1~选择器2

    /* 选中div后的所有的兄弟p元素 */
    div~p {
    	color:red;
    }
    
  • 注意:两种兄弟选择器,选择的是下面的兄弟。

属性选择器
  • 作用:选中属性值符合一定要求的元素。
  • 语法:选中属性值符合一定条件的元素
    1. [属性值]:选中具有某个属性的元素
    2. [属性值=“值”]:选中具有某个属性值并且该属性值等于某个值
    3. [属性值^=“值”]:选中具有某个属性值并且属性值以指定值开头的元素
    4. [属性值$=“值”]:选中具有某个属性值并且属性值以指定值结尾的元素
    5. [属性值*=“值”]:选中具有某个属性并且属性值包含指定值的元素
    6. [属性值|=“值”]:选中具有某个属性并且属性值为"值"或者以"值-"为前缀的元素
    7. [属性值~=“值”]:选中具有某个属性并且属性值是以空格作为分隔符,并且其中至少一个值为"值"
伪类选择器
  • 作用:选中具有特殊状态的元素
动态伪类
  1. :link:超链接未被访问过的元素
  2. :visited:超链接访问过的状态
  3. :hover:鼠标悬停在元素上的状态
  4. :active:元素激活的状态
        /* 表示未曾被访问过的a元素 */
        a:link{
            font-size: large;
            color: red;
        }
        /* 表示已经被访问过的a元素 */
        a:visited{
            font-size: large;
            color: green;
        }
        /* 表示选中鼠标悬停在标签上的a元素 */
        a:hover{
            font-size: large;
            color: black;
        }
        /* 表示处于激活状态的a元素 */
        a:active{
            font-size: large;
            color: grey;
        }
<a href="http://www.taobao.com">超链接1</a><br>
<a href="http://www.jd.com">超链接2</a>
  • 注意:css按照后来居上的规则,需要按照lvha的顺序编写代码
  1. :focus:选中获取焦点的元素

    input:focus{
         width: auto;
         background-color: skyblue;
    }
    
结构伪类
  1. p:first-child:选中p,并且该p必须是其父类的第一个子元素
  2. :last-child:选中所有兄弟的最后一个
  3. :nth-child():选中所有所有兄弟的第n个
  4. :first-of-type:选中所有同类型的兄弟的第一个
  5. last-of-type():选中所有同类型的兄弟的最后一个
  6. :nth-of-type(n) :所有同类型兄弟元素中的 第n个 。
  7. :nth-last-child(n) 所有兄弟元素中的倒数第 n 个。
  8. :nth-last-of-type(n) 所有同类型兄弟元素中的 倒数第n个
  9. :only-child 选择没有兄弟的元素(独生子女)。
  10. :only-of-type 选择没有同类型兄弟的元素。
  11. :root 根元素。
  12. :empty 内容为空元素(空格也算内容)。
  • 注意n的值
    • 0 或 不写 :什么都选不中 —— 几乎不用。
    • n :选中所有子元素 —— 几乎不用。
    • 1~正无穷的整数 :选中对应序号的子元素。
    • 2n 或 even :选中序号为偶数的子元素。
    • 2n+1 或 odd :选中序号为奇数的子元
    • -n+3 :选中的是前 3 个。
否定伪类

:not(选择器) :排除满足括号中条件的元素

UI伪类
  • :checked:被选中的复选框
  • :enable:可用的表单元素
  • disabled:不可用的表单元素
目标伪类

:target : 选中锚点指向的元素

语言伪类

:lang() : 根据指定的语言选择元素(本质上是根据lang属性的值选中元素)

伪元素选择器
  • 作用:选中元素中的一些特殊位置
  • 常用伪元素:
    • ::first-letter:选中元素中的第一个文字
    • ::first-line:选中元素中的第一行文字
    • ::selection:选中被鼠标选中的文字
    • ::placeholder:选中输入框的提示文字
    • ::before:在元素开始的位置创建一个子元素(必须用content指定内容)
    • ::after:同before

3、选择器的优先级

不同的选择器选中同样的元素,并且为相同的样式名设置不同的值,这就产生了样式冲突,需要根据选择器的优先级进行判断

  • 行内样式 > ID选择器 > 类选择器 > 元素选择器 > 通配选择器
  • 复杂的选择器按照权重来比较

在这里插入图片描述

  • 行内样式大于所有的选择器

三、CSS三大特性

1、层叠性

如果发生了样式冲突,就按照一定的规则进行样式层叠

2、继承性

元素会继承祖先元素的某些已经设置的样式

规则:优先继承离得近的

3、优先级

如上

四、常用属性

1、像素

概念:屏幕是由一个一个的像素点组成的,每一个小点就是一个像素

规则:像素点越小越清晰

2、颜色

1、 表示方式一 :颜色名
  • red :红色
  • green:绿色
  • 等等
2、 表示方式二:rgb或则rgba

使用红黄蓝三原色进行组合

  • 例如:rgb(0,0,0)
3、表示方式三:HEX

使用六位十六进制数字表示颜色,还是和RGB一样,分三组表式红黄蓝

color: #ff0000;/* 红色 */
color: #00ff00;/* 绿色 */
color: #0000ff;/* 蓝色 */
color: #000000;/* 黑色 */
color: #ffffff;/* 白色 */
4、表示方式四:HSL
  • HSL 是通过:色相、饱和度、亮度,来表示一个颜色的,格式为: hsl(色相,饱和度,亮度)

    • 色相:取值范围是 0~360 度,具体度数对应的颜色如下图:

在这里插入图片描述

  • 饱和度:取值范围是 0%~100% 。(向色相中对应颜色中添加灰色, 0% 全灰, 100% 没有 灰)

  • 亮度:取值范围是 0%~100% 。( 0% 亮度没了,所以就是黑色。 100% 亮度太强,所以就是 白色了)

3、字体属性

1、字体大小
  • 属性名:font-size
  • 作用:控制字体大小
  • 语法:
    • font-size:30px
  • 注意:
    • 不同的浏览器的默认字体大小可能不一样,最好给定一个具体的字体大小
    • 浏览器有最小字体限制
    • 具有继承性,所以可以给body元素加上字体属性,这样body中的字体就都保持一样的大小(除非重新设置)
2、字体族
  • 属性名:font-family
  • 作用:控制字体类型
  • 用法:
    • font-family:“STCaiyun” , “Microsoft YaHei” ,sans-serif
    • 优先选择前面的字体族,如果前面的出错了则依次往后选择字体族
    • 一般在最后加上serif (衬线字体)或 sans-serif (非衬线字体)
3、字体风格
  • 属性名:font-style
  • 作用:控制字体风格
  • 用法:
    • font-style:normal
    • 常用值:normal(默认),italic(使用字体自带的斜体效果),oblique(强制斜体)
4、字体粗细
  • 属性名:font-weight
  • 作用:控制字体粗细程度
  • 用法:
    • font-weight:normal
    • 常用值:lighter(细),normal(正常),bold(粗),bolder(很粗,有的不支持)
    • 或者可以使用数值:100~1000,数值越大越粗,但是得看字体设计的精确程度
5、字体复合写法
  • 属性名:font
  • 作用:控制字体各个样式
  • 用法:
    • 字体大小,字体族都必须写上
    • 字体族必须写在最后一位,字体大小必须写在倒数第二位
    • 各个属性用空格隔开

4、常用文本属性

1、文本颜色
  • 属性名:color
  • 作用:控制字体颜色
  • 用法: 参考前面的颜色设置
2、文本间距
  • 属性名:

    • letter-spacing:字母间距
    • word-spacing:单词间距
  • 单位:px

  • 用法:

    .dic{
        letter-spcaing:20px
    }
    .div{
        word-spacing:20px
    }
    
3、文本修饰
  • 属性名:text-decoration
  • 作用:控制文本的各种装饰线
  • 用法:
    • text-decoration:none
  • 可选值:
    • none(没有装饰线)
    • underline(下划线)
    • overline(上划线)
    • line-through(删除线,线在中间穿过)
  • 可以搭配下面的值使用
    • dotted(虚线)
    • wavy(波浪线)
    • 可以指定颜色
4、 文本缩进
  • 属性名:text-indent
  • 作用:控制文本首字母的缩进
  • 用法:text-indent:10px
5、文本对齐-水平
  • 属性名:text-align
  • 作用:控制文本水平的对齐方式
  • 常用值:
    • left:左对齐
    • right:右对齐
    • center:居中
6、行高
  • 属性名:line-height
  • 作用:控制一行文字的高度
  • 可选值:
    • 数值:1.5(表示为字体大小的1.5倍)
    • 像素值:100px
    • 百分比:150%(表示自身 font-size 的1.5倍)
    • normal:由浏览器自动选择合适的行高
  • 注意事项:
    • line-height过小会导致文字重叠,设置为0是,文字变成一行
    • line-height可以继承,最好写数值
    • line-height和height的关系:
      • 设置了height,那么height就是固定的
      • 不设置height时,height会根据line-height自动计算,如果为两行则height为line-height的两倍
9、vertical-align
  • 属性名:verticall-align
  • 作用:用于指定同一行元素之间,或 表格单元格 内文字的 垂直对齐方式。
  • 常用值:
    • baseline:默认值,使元素的基线和父元素的基线对齐
    • top:使元素的顶部与其所在行的顶部对齐
    • buttom:底部对齐
    • middle:使元素的中部与父元素的基线加上父元素字母 x 的一半对齐。

5、列表属性

列表相关的属性,可以作用在ul,ol,li元素上

属性名功能属性值
list-style-type设置列表符号常用值:
none:不显示前面的标识
square:实心方块
disc:圆形
decimal:数字
等等
list-style-position设置列表符号位置inside:在li里面
outside:在li外面
list-style-image自定义列表符号url(图片地址)
list-style复合属性上面的都可以用,没有要求

6、表格属性

1、边框相关属性
属性名功能属性值
border-width边框高度像素
border-color边框颜色颜色值
border-style边框风格none:默认值
solid:实线
dashed:虚线
dotted:点线
double:双实线
border复合属性上面的都可用,没有要求

注意:其他属性页可以用,并不是说只能用在表格中

2、table标签独有的CSS属性
属性名作用属性值
table-layout设置列宽atuo:根据单元格中元素长度自动选择
fixed:固定列宽,平均分
border-spacing单元格间距像素
border-collapse合并单元格边框collapse:合并
separate:不合并
empty-cells是否隐藏空的单元格show:展示
hide:隐藏
caption-side设置标题位置top:上面
bottom:下面

7、背景属性

属性名作用属性值
background-color设置背景颜色颜色
background-image设置背景图片url(图片地址)
background-repeat设置背景重复方式repeat:重复,铺满整个元素
repeat-x:只在水平方向重复
repeat-y:只在垂直方向重复
no-repeat:不重复
background-position设置背景图位置水平方向:left,center,right
垂直方向:top、center、bottom
建议写一个水平一个垂直
background复合属性上面的都可用

8、鼠标属性

属性名作用属性值
cursor设置鼠标光标样式pointer:小手
move:移动图标
text:文字选择器
crosshair:十字架
wait:等待
help:帮助

五、盒子模型

1、长度单位

  • px:像素
  • em:相对元素font-size的倍数
  • rem:相对于根字体大小,html标签就是根
  • %:相对父元素计算
  • 注意:css中长度必须加单位,不然会失效

2、元素的显示模式

  • 块元素(block)
    • 块级元素
    • 特点:
      • 在页面中独占一行,不会于任何元素公用一行
      • 默认宽度:撑满父元素
      • 默认高度:由内容撑开
      • 可以通过CSS设置宽高
  • 行内元素
    • 内联元素
    • 特点
      • 不独占一行
      • 不能由CSS设置宽高
  • 行内块元素
    • 内联块元素
    • 特点
      • 不独占一行
      • 可以通过CSS设置宽高

3、各元素的显示模式

  • 块元素
    1. 主体结构标签:<html>,<body>
    2. 排版标签:<h1>~>h6>,<hr>,<p>,<pre>,<div>
    3. 列表标签:<ul>,<ol>,<li>,<dl>,<dt>,<dd>
    4. 表格相关标签:<table>,<tbody>,<thead>,<tfoot>,<tr>,<caption>
    5. <form>与<option>
  • 行内元素
    • 文本标签:<br>,<em>,<strong>,<sup>,<sub>,<del>,<ins>
    • <a>,<label>
  • 行内块元素
    • 图片:<img>
    • 单元格:<td>,<th>
    • 表单控件:<input>,<textarea>,<select>,<button>
    • 框架标签:<iframe>

4、修改元素的显示模式

通过 CSS 中的 display 属性可以修改元素的默认显示模式,常用值如下

描述
none隐藏元素
block该元素会被作为块级元素显示
inline该元素会被作为行内元素显示
inline-block该元素会被作为行内块元素显示

5、盒子模型的组成

CSS会把所有HTML元素看成一个盒子,所有的样式也都是基于1这个盒子

  1. margin(外边距): 盒子与外界的距离。
  2. border(边框): 盒子的边框。
  3. padding(内边距): 紧贴内容的补白区域。
  4. content(内容):元素中的文本或后代元素都是它的内容。

在这里插入图片描述

1、盒子内容区(content)
属性名作用属性值
width设置内容区宽度长度单位
max-width设置内容区的最大宽度长度
min-width设置内容区的最小宽度长度
height设置内容区的高度长度
max-height设置内容区的最大高度长度
min-height设置内容区的最小宽度长度
  • 注意:所谓的默认宽度,就是不设置 width 属性时,元素所呈现出来的宽度。
  • 总宽度 = 父的 content — 自身的左右 margin 。
  • 内容区的宽度 = 父的 content — 自身的左右 margin — 自身的左右 border — 自身的左右 padding 。
2、盒子内边距(padding)
属性名作用
padding-top设置上内边距
padding-bottom设置下内边距
padding-left设置左内边距
padding-right设置右内边距
padding复合属性

padding复合属性规则

  1. padding: 10px; 四个方向内边距都是 10px 。
  2. padding: 10px 20px; 上 10px ,左右 20px 。(上下、左右)
  3. padding: 10px 20px 30px; 上 10px ,左右 20px ,下 30px 。(上、左右、下)
  4. padding: 10px 20px 30px 40px; 上 10px ,右 20px ,下 30px ,左 40px 。(上、右、 下、左)
  5. 注意
    • 行内元素的左右内边距是没问题的,但是上下内边距可能不能很好的设置,有可能不占位
3、盒子边框(border)
属性名作用属性值
border-style边框线风格,复合了四个方向的边框风格none:默认
solid:实线
dashed:虚线
dotted:点线
double:双实线
border-width边框线宽度,复合了四个方向的边框默认为3px
border-color边框线颜色颜色
border复合属性没有顺序和数量要求
border-left
border-left-style
border-left-width
border-left-color
border-right
border-right-style
border-right-width
border-right-color
border-top
border-top-style
border-top-width
border-top-color
border-bottom
border-bottom-style
border-bottom-width
border-bottom-color
分别设置各个方向的边框样式同上
4、盒子外边距(margin)
属性名作用属性值
margin-left左外边距长度
margin-right右外边距长度
margin-top上外边距长度
margin-bottom下外边距长度
margin复合属性长度
1、margin注意事项
  1. 子元素的margin是参考父元素的content计算的
  2. 块级元素和行内块元素可以完美的设置四个方向的margin,但是行内元素不能设置上下的
  3. margin也可以是auto,如果给一个块元素设置左右margin为auto,则元素处于父元素的水平中间
  4. margin也可以是负值
2、margin塌陷问题
  • 什么事margin塌陷问题?
    • 第一个子元素的上margin会被父元素抢走(作用在父元素上),最后一个子元素的下margin也会被父元素抢走。
  • 如何解决:
    1. 给父元素设置不为零的padding
    2. 给父元素设置不为零的border
    3. 给父元素设置overflow:hidden
3、margin合并问题
  • 什么是 margin 合并?

    • 上面兄弟元素的下外边距和下面兄弟元素的上外边距会合并,取一个最大的值,而不是相加。
  • 如何解决

    • 无需解决
5、处理内容溢出
属性名作用属性值
overflow溢出内容的处理方式visible:显示
hidden:隐藏
scroll:显示滚动条,无论是否溢出
auto:自动显示滚动条,由是否溢出决定
overflow-x水平溢出内容的处理方式同上
overflow-y垂直方向同上
  • 注意:
    • overflow-x 、 overflow-y 不能一个是 hidden ,一个是 visible ,是实验性属性,不 建议使用。
    • overflow 常用的值是 hidden 和 auto ,除了能处理溢出的显示方式,还可以解决很多 疑难杂症。

6、隐藏元素的方式

1、visibility属性

visibility属性默认是show,可以设置为hidden,元素会被隐藏,元素看不见,但是会占用位置

2、display属性

display设置为none,就可以隐藏元素,也不占用位置

7、样式的继承

  • 会继承的CSS属性:字体属性、文本属性(除了vertical-align)、文字颜色 等。
  • 不会继承:边框、背景、内边距、外边距、宽高、溢出方式 等。
  • 规律:会继承的都是不会影响布局的属性,也就是和盒子模型无关的属性

8、默认样式

元素默认带的样式,比如<a>标签:下划线,颜色,鼠标

元素的默认样式优先级>继承的样式

9、布局小技巧

  1. 行内元素和行内块元素可以被父元素当做文本内容处理
    • 即可以使用text-align,line-height,text-indent等属性去对齐
  2. 如何让子元素在父元素中水平居中
    • 快元素:给父元素加上margin:0 auto
    • 行内元素、行内块元素:给父元素加上text-align:center
  3. 如何让子元素在父元素中垂直居中
    • 块元素:给子元素加上margin-top :(父元素content - 子元素盒子总高) / 2
    • 行内元素、行内块元素:让父元素的line-height = height,并且给每个子元素加上vertical-align:middle,若想让子元素绝对垂直居中,设置font-size:0

10、元素之间的空格问题

为什么会出现空格?

​ 行内元素、行内块元素之间的换行会被解析成为一个空格

如何去掉空格?

  • 直接去掉代码中的换行和空格
  • 给父元素设置font-size:0, 再给需要显示的字体设置单独的font-size

11、行内块的幽灵空白问题

产生原因:

​ 行内块元素与文本的基线对齐,所以下面会留一点空白

如何解决

  • 给元素设置vertical-align属性,使其不是与基线对准
  • 可以给父元素设置font-size:0
  • 如果父元素中只有一张图片,没有其他东西,则可以设置display:block吗,使其变为块元素

六、浮动

1、浮动简介

在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。

2、浮动的特点

  1. 脱离文档流
  2. 不管浮动前是什么元素,浮动后默认的宽高都是被内容撑开(尽可能的小),而且可以设置宽高
  3. 不会独占一行,可以与其他元素共用一行
  4. 不会margin合并,也不会margin塌陷,能够完美的设置四个方向的margin
  5. 不会像行内块一样被当做文本处理

3、浮动带来的影响

对兄弟元素的影响: 后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟 无影响。 对父元素的影响: 不能撑起父元素的高度,导致父元素高度塌陷;但父元素的宽度依然束缚浮动的元素。

4、解决浮动带来的影响

解决方案

  • 给父元素指定高度

  • 给父元素也指定浮动,带来其他影响

  • 给父元素指定overflow:hidden

  • 在所有浮动元素的后面添加一个块级元素,并设置clear:both

  • 给浮动元素的父元素设置伪元素,通过伪元素消除浮动

    .parent::after {
    	content: "";
    	display: block;
    	clear:both;
    }
    

布局中的一个原则,设置浮动的时候,要么全都浮动,要么全都不浮动

5、浮动相关属性

CSS属性功能属性值
float设置浮动left:设置左浮动
right:右浮动
none:不浮动
clear清除浮动
清除前面浮动兄弟的影响
left:清除前面左浮动的影响
right:清除右浮动的影响
both:清除左右浮动的影响

七、定位

1、相对定位

如何设置相对定位
  • 给元素设置position:relative即可实现相对定位
  • 可以设置left、right、top、bottom四个属性调整位置
相对定位的参考点在哪
  • 相对自己原来的位置
相对定位的特点
  • 不会脱离文档流,元素位置的变化,只是在视觉上变化,不会对其他元素产生影响
  • 定位元素的显示层级比其他普通元素高,无论什么定位,显示层级都是一样的,定位元素会覆盖普通元素,后来的元素覆盖前面的元素
  • left不能和right一起设置,top和bottom不
  • 能一起设置
  • 相对定位的元素也能浮动,但不推荐这么做
  • 相对定位的元素也能设置magin,也不推荐这么做

绝大多数情况下,相对定位会和绝对定位配合使用

2、绝对定位

如何设置绝对定位
  • 给元素设置position:absolute
  • 可以使用left、right、top、bottom
绝对定位的参考点是哪
  • 参考它的包含块

什么是包含块

  • 对于没有脱离文档流的元素:包含块就是父元素
  • 对于脱离文档流的元素:包含块是第一个拥有定位属性的祖先元素(如果其祖先元素都没定位,你们包含块就是整个页面)
绝对定位元素的特点
  • 脱离文档流,会对后面的兄弟元素、父元素有影响
  • left和right不能同时设置,bottom和top也不能同时设置
  • 绝对定位、浮动不能同时设置,如果同时设置,浮动会失效,以定位为主
  • 绝对定位的元素,也能通过margin调整位置,但不推荐这样做
  • 无论是什么元素,设置定位后,都变成了定位元素

什么是定位元素:默认宽高都能被内容撑开,也可以自由设置宽高

3、固定定位

如何设置固定定位
  • 给元素设置position:fixed
  • 可以使用四个方向的属性值
固定定位的参考点是视口
  • 什么是视口:对于PC浏览器来说,视口就是我们看网页那扇窗户
固定定位的特点
  • 脱离文档流,会对后面的兄弟元素、父元素有影响。
  • left不能和right一起设置,bottom不能和top一起设置
  • 固定定位和浮动不能同时设置,同时设置以定位为主
  • 固定定位的元素,也能通过margin调整位置
  • 也会变成定位元素

4、粘性定位

如何设置粘性定位
  • 给元素设置position:sticky
  • 可以使用四个方向调整位置,最常用的是top
参考点在哪

离它最近的一个拥有“滚动机制”的祖先元素,即便这个祖先不是最近的真实可滚动祖先。

粘性定位元素特点
  • 不会脱离文档流
  • 粘性定位和浮动可以同时设置,不推荐
  • 也可以使用margin调整位置,不推荐

粘性定位和相对定位的特点基本一致,不同的是:粘性定位可以在元素到达某个位置时将其固定。

5、定位层级

  • 定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的
  • 如果发生重叠,后面的元素会覆盖前面的元素
  • 可以通过x-index调整元素的显示层级
  • z-index 的属性值是数字,没有单位,值越大显示层级越高。
  • 只有定位的元素z-index才有效
  • 如果z-index大的元素没有覆盖z-index小的元素,那么请检查其包含块的层级

6、定位元素的特殊应用

注意:

  • 发生固定定位和绝对定位后,元素的显示模式都变成了定位模式,即内容可以被撑开,也可以设置宽高
  • 发生相对定位后,元素依然是之前的显示模式
  • 下面只针对绝对定位和固定定位
让定位元素的宽充满包含块
  • 块宽想和包含块一直,可以给定位元素同时设置left和right为0
  • 高度想和包含块一直,top和bottom设置为0
让定位元素在包含块中居中
  • 第一种

    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    
  • 第二种

    left: 50%;
    top: 50%;
    margin-left: 负的宽度一半;
    margin-top: 负的高度一半;
    

八、布局

1、版心

  • 在PC端网页中,一般会有一个固定宽度且水平居中的盒子,来显示页面的主要内容,这就是网页的版心
  • 版心的宽度一般是960~1200像素之间
  • 版心可以是一个也可以是多个

2、常用布局名词

位置
顶部导航条topbar
页头header、page-header
导航nav、navigator、navbar
搜索框search、search-box
横幅、广告、宣传图banner
主要内容content、main
侧边栏aside、sidebar
页脚page-footer、footer

3、默认重置样式

有的时候我们不需要一些元素的默认样式,所以需要重置

方式一:可以使用全局选择器
*{
    margin:0;
    padding:0;
    ...
}
方式二:reset.css

选择到具有默认样式的元素,清空其默认的样式。

经过 reset 后的网页,好似“一张白纸”,开发人员可根据设计稿,精细的去添加具体的样式。

方式三:Normalize.css

Normalize.css是一种最新方案,它在清除默认样式的基础,保留了一部分比较有价值的默认样式

官网地址:http://necolas.github.io/normalize.css/

相对于 reset.css , Normalize.css 有如下优点:

  • 保护了有价值的默认样式
  • 为大部分HTML元素提供一般化的样式
  • 新增对HTML5元素的设置
  • 对并集选择器的使用比较谨慎,有效避免调试工具杂乱

九、CSS3

一、CSS3私有前缀

1、什么是私有前缀

如下代码中的 -webkit- 就是私有前缀

div {
	width:400px;
	height:400px;
	-webkit-border-radius: 20px;
}
2、为什么会 出现私有前缀
  • W3C 标准所提出的某个 CSS 特性,在被浏览器正式支持之前,浏览器厂商会根据浏览器的内核, 使用私有前缀来测试该 CSS 特性,在浏览器正式支持该 CSS 特性后,就不需要私有前缀了。
3、常见的私有前缀
  • Chrome:-webkit-

  • Safari:-webkit-

  • Firefox:-moz-

  • Edge 浏览器: -webkit-

  • 注意:我们在编码时不用太在意私有前缀,即使我们在照顾老旧浏览器的时候,我们也可以使用构建工具去自动的添加前缀

二、CSS3基本语法

1、新增长度单位
  1. rem根元素字体大小的倍数
  2. vw:视口宽度的倍数,10vw就是视口宽度的10%
  3. vh:视口高度的倍数
  4. vmax:选择视口宽度和高度中的较大值,也是倍数
  5. vmin:选择较小值
2、新增颜色设置方式

之前的颜色介绍过

3、新增选择器

CSS3 新增的选择器有:动态伪类、目标伪类、语言伪类、 UI 伪类、结构伪类、否定伪类、伪元素;

4、新增盒模型相关属性
1、box-sizing

可选值:

  • content-box:默认值,表示设置的height和width属性是盒子内容区的大小
  • border-box:表示设置的height和width属性是盒子的总大小(被称为怪异盒模型)
2、resize调整盒子大小
功能
none用户不可以手动调整元素宽高
both用户可以调节宽高
horizontal用户可以调节元素宽度
vertical用户可以调节元素高度
3、box-shadow 盒子阴影
  • 描述:设置盒子的阴影

  • 语法:box-shadow: h-shadow v-shadow blur spread color inset;

可选值功能
h-shadow阴影相对元素的水平位置
v-shadow阴影相对元素的垂直位置
blur模糊程度
spread阴影的外延值
color阴影颜色
inset将默认的外部阴影改为内部阴影
  • 示例:

    /* 写两个值,含义:水平位置、垂直位置 */
    box-shadow: 10px 10px;
    /* 写三个值,含义:水平位置、垂直位置、颜色 */
    box-shadow: 10px 10px red;
    /* 写三个值,含义:水平位置、垂直位置、模糊值 */
    box-shadow: 10px 10px 10px;
    /* 写四个值,含义:水平位置、垂直位置、模糊值、颜色 */
    box-shadow: 10px 10px 10px red;
    /* 写五个值,含义:水平位置、垂直位置、模糊值、外延值、颜色 */
    box-shadow: 10px 10px 10px 10px blue;
    /* 写六个值,含义:水平位置、垂直位置、模糊值、外延值、颜色、内阴影 */
    box-shadow: 10px 10px 20px 3px blue inset;
    
4、opacity 不透明度
  • 作用:设置元素的不透明度
  • 可选值:0~1之间,1表示完全不透明,0表示完全透明
5、新增背景属性
1、 background-origin
  • 作用:设置背景的原点
  • 可选值:
    • padding-box:从padding区域开始 显示图像
    • border-box:从border区域开始显示图像
    • content-box:从content区域开始显示图像
2、 background-clip
  • 作用:设置背景图向外裁剪的区域
  • 可选值:
    • border-box:从border区域开始向外裁剪
    • padding-box:padding区域开始裁剪
    • content-box:从content区域开始裁剪
    • text:只在元素上显示背景,注意要加上-webkit-
3、background-size
  • 作用:设置背景图的尺寸
  • 用法:
    • 使用px指定宽高
    • 使用百分比指定宽高
    • auto:背景的真实大小(默认值)
    • contain:将整张图片包含在元素中,与原始图片大小的比例一致
    • cover:尽可能的显示较多的图片,也是按照等比例缩放,直到完全覆盖元素
4、background复合属性
  • 用法:background: color url repeat position / size origin clip
5、多背景图
  • 示例:

    /* 添加多个背景图 */
    background: url(../images/bg-lt.png) no-repeat,
    			url(../images/bg-rt.png) no-repeat right top,
    			url(../images/bg-lb.png) no-repeat left bottom,
    			url(../images/bg-rb.png) no-repeat right bottom
    
6、新增边框属性
1、边框圆角
  • 使用border-radius属性可以将元素变为圆角

  • 用法:

    • 设置四个方向
    border-radius:10px;
    
    • 设置单个方向:
      • border-top-left-radius:
        • 单个值表示圆的半径
        • 两个值分别是椭圆的 x 半径、 y 半径。
      • border-top-right-radius
      • border-bottom-right-radius
      • border-bottom-left-radius
2、边框外轮廓
  • outline-width:外轮廓宽度
  • outline-color
  • outline-style:
    • none:无轮廓
    • dotted:点
    • dashed:虚线
    • solid:实线
    • double:双线
  • outline-offset:设置外轮廓和边框的距离,可以是负值
  • outline:复合属性
7、新增文本属性
1、文本阴影
  • 使用text-shadow属性给文本添加阴影
  • 用法:text-shadow: h-shadow v-shadow blur color;可参考前面的box-shadow
2、文本换行
  • white-space属性设置换行方式
  • 可选值:
    • normal:超储边界自动换行,默认值
    • pre:原样输出,不管是否超出边界
    • pre-wrap:原样输出,超出边界自动换行
    • pre-line:原样输出,超出元素边界自动换行,且只识别文本中的换行,空格 会忽略
    • nowrap:强制不换行
3、文本溢出
  • text-overflow 属性设置文本内容溢出时的呈现模式。
  • 可选值:
    • clip:当内联内容溢出时,将溢出部分裁切掉。 (默认值)
    • ellipsis:当内联内容溢出块容器时,将溢出部分替换为 … 。
4、文本修饰
  • text-decoration属性为复合属性
text-decoration: text-decoration-line || text-decoration-style || text-decoration-color
  • 子属性
    • text-decoration-line:设置文本装饰线
      • none:无装饰,默认值
      • underline
      • overline
      • line-through
    • text-decoration-style
      • solid
      • double
      • dotted
      • dashed
      • wavy
    • text-decoration-color
5、文本描边
  • -webkit-text-stroke-width:设置宽度
  • -webkit-text-stroke-color :设置文字描边的颜色,写颜色值。
  • -webkit-text-stroke :复合属性,设置文字描边宽度和颜色。
7、新增颜色渐变
1、线性渐变
  • 多个颜色之间的渐变, 默认从上到下渐变。

在这里插入图片描述

  • 使用关键词控制渐变方向

在这里插入图片描述

  • 调整开始渐变的位置。

在这里插入图片描述

2、径向渐变
  • 多个颜色之间的渐变, 默认从圆心四散。(注意:不一定是正圆,要看容器本身宽高比)

在这里插入图片描述

  • 使用关键词调整渐变圆的圆心位置。

在这里插入图片描述

  • 使用像素值调整渐变圆的圆心位置。

在这里插入图片描述

  • 调整渐变形状为正圆 。

在这里插入图片描述

  • 调整形状的半径 。

在这里插入图片描述

  • 调整开始渐变的位置。
    在这里插入图片描述
3、重复渐变

无论线性渐变,还是径向渐变,在没有发生渐变的位置,继续进行渐变,就为重复渐变。

  • 使用 repeating-linear-gradient 进行重复线性渐变,具体参数同 linear-gradient 。
  • 使用 repeating-radial-gradient 进行重复径向渐变,具体参数同 radial-gradient 。
8、web字体
1、基本用法

可以通过 @font-face 指定字体的具体地址,浏览器会自动下载该字体,这样就不依赖用户电脑上的字 体了。

  • 用法:

    @font-face {
    	font-family: "情书字体";
    	src: url('./方正手迹.ttf');
    }
    
  • 语法(高兼容性写法)

    @font-face {
    	font-family: "atguigu";
    	font-display: swap;
    	src: url('webfont.eot'); /* IE9 */
    	src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    	url('webfont.woff2') format('woff2'),
    	url('webfont.woff') format('woff'), /* chrome、firefox */
    	url('webfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari,
    	Android*/
    	url('webfont.svg#webfont') format('svg'); /* iOS 4.1- */
    }
    
2、定制字体
  • 中文的字体文件很大,使用完整的字体文件不现实,通常针对某几个文字进行单独定制。
  • 可使用阿里 Web 字体定制工具:https://www.iconfont.cn/webfont
3、字体图标
  • 相比图片更加清晰。
  • 灵活性高,更方便改变大小、颜色、风格等。
  • 兼容性好, IE 也能支持。

字体图标的具体使用方式,每个平台不尽相同,最好参考平台使用指南,视频中我们是以使用最多 的阿里图标库作为演示。

阿里图标官网地址:https://www.iconfont.cn/

9、2D变换

所有的变换操作都必须先给元素添加转换属性 transform

1、2D位移

2D 位移可以改变元素的位置,具体使用方式如下:

  • transform值:

    • translateX:设置水平方向位移,需指定长度值;若指定的是百分比,是参考自身宽度 的百分比。
    • translateY:设置垂直方向位移,需指定长度值;若指定的是百分比,是参考自身高度 的百分比。
    • translate:一个值代表水平方向,两个值代表:水平和垂直方向。
  • 注意:

    • 位移和定位非常相似,都不脱离文档流,不会影响到其他元素
    • 与相对定位相比,相对定位的百分比值是参考父元素的,定位的百分比是参考自身的
    • 浏览器对位移有优化,
    • transform可以链式编写
    • 位移对行内元素无效
    • 位移配合定位,可以使元素水平垂直居中
2、2D缩放
  • 让元素放大或缩小,具体使用方式如下:

  • 可选值:

    • scaleX;设置水平方向的缩放比例,值为一个数字, 1 表示不缩放,大于 1 放大,小 于 1 缩小。
    • scaleY
    • scale:同时设置水平方向、垂直方向的缩放比例,一个值代表同时设置水平和垂直缩 放;两个值分别代表:水平缩放、垂直缩放。
  • 可以使用负值

3、2D旋转
  • 让元素在二维平面内,顺时针旋转或逆时针旋转
  • 值:
    • rotate:设置旋转角度
4、2D扭曲
  • 值:
    • skewX:水平方向
    • skewY:垂直方向
    • skew:一个值表示水平方向,两个值表示水平和垂直方向
5、变换原点
  • =默认的原点是元素的中心
  • 修改原点的位置对移动没有影响,对旋转和缩放会产生影响
  • 如果提供两个值,表示水平和垂直方向
  • 如果只提供一个,若是像素值,表示横坐标,纵坐标取 50% ;若是关键词,则另一个坐标取 50%
  1. transform-origin: 50% 50% , 变换原点在元素的中心位置,百分比是相对于自 身。—— 默认值

  2. transform-origin: left top ,变换原点在元素的左上角 。

  3. transform-origin: 50px 50px , 变换原点距离元素左上角 50px 50px 的位置。

  4. transform-origin: 0 ,只写一个值的时候,第二个值默认为 50% 。

10、3D变换
1、开启3D空间

要进行3D变换操作,必须在元素的父元素开启3D空间

  • 使用transform-style
  • 可选值:
    • flat:让子元素位于此元素的二维平面(默认值
    • preserve-3d:让子元素位于此元素的三维平面
2、设置景深
  • 什么是景深:就是观察者和z=0平面的距离,能让产生3D变换的元素产生透视效果,更加立体
  • perspective:
    • none:不指定透视距离
    • 长度:指定距离,不允许为负值
3、设置透视点位置

观察者的位置,默认的透视点在元素的中间

  • perspective-origin:400px 300px
4、3D位移

在2D位移的基础上,添加了z轴方向的移动

  • transform可选值:
    • translateZ:设置长度,不能为百分比
    • translate3d:三个值,不能省略
5、3D旋转

在2D旋转的基础上,添加了以X轴和Y轴作为旋转轴的旋转

  • transform可选值:
    • rotateX:以X轴作为旋转轴旋转
    • rotateY:以Y轴
    • rotate3d:设置3个角度,分别是X轴,Y轴,Z轴的旋转度数
6、3D缩放

添加了沿Z轴方向的缩放

  • transform值:
    • scaleZ:沿Z轴的缩放比例,1表示不缩放
    • scale3d:不允许省略
7、多重变换

transform设置多个值

8、背部可见性
  • backface-visibility:当旋转到元素背部的时候,是隐藏还是可见
    • visible:表示可见
    • hidden
11、过渡
1、transition-property
  • 作用:设置哪些属性需要过渡
  • 常用值:
    • none:不过度任何属性
    • all:过渡所有可以过渡的属性
    • 具体某个属性名
  • 注意:只有属性是数值的属性才能产生过渡效果
  • 常见的支持过渡的属性有:颜色、长度值、百分比、 z-index 、 opacity 、 2D 变换属 性、 3D 变换属性、阴影。
2、transition-duration
  • 作用:指定过渡的持续时间
  • 值:s或ms
3、transition-delay
  • 作用:指定延迟时间
4、transition-timing-function
  • 作用:指定过渡类型
  • 值:
    • ease:平滑过渡(慢快慢)
    • linear:线性过渡
    • ease-in:慢快
    • east-out:快慢
    • ease-in-out:慢快慢
    • step-start:直接跳到终点
    • step-end:等到到达需要的持续时间时,直接跳到终点
    • steps( integer,?) : 接受两个参数的步进函数。第一个参数必须为正整数,指定函数的 步数。第二个参数取值可以是 start 或 end ,指定每一步的值发生变化的时间点。第二个 参数默认值为 end 。
    • cubic-bezie ( number, number, number, number): 特定的贝塞尔曲线类型
    • 在线制作贝赛尔曲线:https://cubic-bezier.com
5、transition复合属性

第一个值表示持续时间,第二个表示延迟时间

12、动画
1、动画的基本使用

简单定义方式

/*写法一*/
@keyframes 动画名 {
	from {
		/*property1:value1*/
		/*property2:value2*/
	}
	to {
		/*property1:value1*/
	}
}

完整定义方式

@keyframes 动画名 {
	0% {
		/*property1:value1*/
	}
	20% {
		/*property1:value1*/
	}
	40% {
		/*property1:value1*/
	}
	60% {
		/*property1:value1*/
	}
	80% {
		/*property1:value1*/
	}
	100% {
		/*property1:value1*/
	}
}
2、动画的属性
  • animation-name:给元素定义具体的动画
  • animation-duration :设置动画所需时间
  • animation-delay :设置动画延迟
  • animation-timing-function ,设置动画的类型,常用值与过渡的一致
  • animation-iteration-count ,指定动画的播放次数
    • 数字:指定具体次数
    • infinite:无限次
  • animation-direction ,指定动画方向
    • normal:正常
    • reverse:反过来
    • alternate:先正常再反过来,交替进行
    • alternate-reverse:先反过来再正常,交替进行
  • animation-play-state:动画播放状态
    • running
    • pause:暂停
  • animation:复合属性,只设置一个时间表示 duration ,设置两个时间分别是: duration 和 delay ,其他属性没有数量和 顺序要求
13、多列布局
  • 作用:专门用于实现类似于报纸的布局
  • 属性:
    • column-count:列数,数字
    • column-width:列宽,长度
    • columns:复合属性,列数和宽,取较小值
    • column-gap:列边距,长度
    • column-rule-style:设置列与列之间的边框样式
    • column-rule-width:边框宽度
    • column-rule-color:颜色
    • column-rule:复合属性
    • column-span:指定是否跨列,none或all
14、伸缩盒模型
1、伸缩容器、伸缩项目
  • 伸缩容器:设置了flex的元素,就是伸缩容器
    • display:flex或者display:inner-flex
  • 伸缩项目:伸缩容器中的子元素自动成为了伸缩项目,注意只有子元素
    • 一旦成为了伸缩项目,元素就会块状化
2、主轴和侧轴
  • 主轴:伸缩项目沿着主轴的方向排列,默认水平,自左而右
  • 侧轴:与主轴垂直的是侧轴,默认垂直,自上而下
3、主轴方向
  • 属性:fle-direction
  • 值:
    • row:水平方向自左向右,默认值
    • row-reverse:水平方向自右向左
    • column:垂直方向自上而下
    • column-reverse:垂直方向自下而上
  • 改变了主轴的方向,侧轴的方向也随着变化
4、主轴换行方式
  • 属性:flex-wrap
  • 值:
    • nowrap:不换行(默认值)
    • wrap:自动换行,伸缩容器不够就换行
    • wrap-reverse:反向换行
5、 flex-flow复合属性

上面两者的复合属性,没有顺序要求

6、主轴对齐方式
  • 属性:justify-content
  • 值:
    • flex-start:主轴起点对齐(默认值
    • flex-end:主轴终点对齐
    • center:居中
    • space-between:均匀分布,两端对齐(最常用)。
    • space-around:均匀分布,两端距离是中间距离的一半。
    • space-evenly:均匀分布,两端距离与中间距离一致。
image-20230718211049682
7、侧轴对齐方式
1、一行的情况
  • 属性:align-items
  • 值:
    • flex-start:侧轴起点对齐
    • flex-end:侧轴终点对齐
    • center:侧轴居中
    • baseline:伸缩项目的第一行文字的基线对齐
    • strench:如果伸缩项目未设置高度,则伸缩项目的高度占据整个容器(默认值

在这里插入图片描述

2、多行情况
  • 属性:align-content
  • 值:
    • flex-start:侧轴的起点对齐
    • flex-end :与侧轴的终点对齐。
    • center :与侧轴的中点对齐。
    • center :与侧轴的中点对齐。
    • space-around :伸缩项目间的距离相等,比距边缘大一倍。
    • space-evenly : 在侧轴上完全平分。
    • stretch :占满整个侧轴。—— 默认值
8、flex实现水平垂直居中

方式一:在父元素中开启flex,随后使用justify-content和align-items实现水平垂直居中

方式二:父容器开启 flex 布局,随后子元素 margin: auto

9、伸缩性
1、flex-basis

设置主轴的基准长度,会使设置的高度或者宽度失效

2、flex-grow
  • 用法:
    • 默认为0,即伸缩容器即使有富余也不分配
    • 如果所有伸缩项目的flex-grow值都是1,则剩余的空间均匀分配给所有的伸缩项目
    • 如果值不一样,则按照flex-grow的比例分配
3、flex-shrink
  • 用法
    • 默认值为1
    • 按照自身的宽或者高度flex-shirink综合考虑得出自身应该缩小多少
10、flex复合属性
  • 属性:flex
  • 作用:复合了flex-grow、flex-shrink、flex-basis三个属性
  • 用法:设置三个值
11、项目排序

order 属性定义项目的排列顺序。数值越小,排列越靠前,默认为 0 。

12、单独对齐
  • 通过 align-self 属性,可以单独调整某个伸缩项目的对齐方式
  • 默认值为auto,表示继承父元素的align-items属性
15、响应式布局
媒体查询
@media all{
    /*CSS-Code;*/
}

媒体类型

  • 值:
    • all:检测所有设备
    • screen:检测电子屏幕,包括电脑屏幕、手机等等
    • print:打印机
  • 完整列表请参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media

媒体特征

  • 值:
    • width:检测视口宽度
    • max-width:检测视口最大宽度
    • min-width:检测视口最小宽度
    • height:检测视口高度
    • min-height:最小高度
    • max-height:最大高度
    • device-height:设备屏幕的高度
    • min-device-height:设备最小高度
    • max-device-height:设备最大高度
    • device-width:设备最大宽度
    • min-device-width:设备最小宽度
    • max-device-width:设备最大宽度

运算符

    • and
    • ,或or
    • not
    • only
  • 示例
@media screen and (min-width:200px) and (max-width:1000px) {
     /*CSS-Code;*/
}	

结合外部样式

<link rel="stylesheet" media="具体的媒体查询" href="mystylesheet.css">
16、BFC

开启了BFC能解决什么问题

  1. 元素开启 BFC 后,其子元素不会再产生 margin 塌陷问题。
  2. 元素开启 BFC 后,自己不会被其他浮动元素所覆盖。
  3. 元素开启 BFC 后,就算其子元素浮动,元素自身高度也不会塌陷。

如何开启BFC

  • 根元素
  • 浮动元素
  • 绝对定位、固定定位的元素
  • 行内块元素 表格单元格: table 、 thead 、 tbody 、 tfoot 、 th 、 td 、 tr 、 caption
  • overflow 的值不为 visible 的块元素
  • 伸缩项目
  • 多列容器
  • column-span 为 all 的元素(即使该元素没有包裹在多列容器中)
  • display 的值,设置为 flow-root
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九个太阳打瞌睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值