CSS语言的外围性能就是为特定的属性设定特定的值;

CSS规定集:

选择器:抉择了一个或多个须要增加款式的元素(在这个例子中就是 p 元素)。要给不同元素增加款式只须要更改选择器就行了。

申明:一个独自的规定,如 color: red; 用来指定增加款式元素的属性

属性:扭转 HTML 元素款式的路径。CSS 中,由编写人员决定批改哪个属性以扭转规定。

属性的值:在属性的左边,冒号前面即属性的值,它从指定属性的泛滥外观中抉择一个值

CSS的引入形式:

内联款式(行内款式):优先级较高

eg:<div style="color:red">设置文字的色彩为红色</div>

外部样式表:款式与构造拆散

留神点:

1.style标签要写在head标签的开始标签和完结标签之间(也就是和title标签是兄弟关系)

2.style标签中的type属性其实能够不必写, 默认就是type="text/css"

3.设置款式时必须依照固定的格局来设置. key: value;其中:不能省略, 分号大多数状况下也不能省略

eg:`<style type="text/css">
p{

color:red;        background-color:yellow;    

}
</style>`

内部样式表:款式与构造拆散,解耦;款式的复用率高(框架:例如bootstrap), 共用,定义好的css文件能够利用到多个页面中。

eg:<link rel="stylesheet" type="text/css" href="文件的门路"/>

@import url(),还可通过import形式导入CSS文件

eg:`<style>

/*要写在style标签的最后面,否则不会失效 或者间接在内部css文件中间接应用*/

@import url('./style.css');
</style>`

引入形式的优先级

行内款式>内联款式/内部引入

CSS选择器

标签选择器:

留神点:

        1.标签选择器选中的是以后界面中所有的标签, 而不能独自选中某一个标签        2.标签选择器无论标签藏得多深都能选中        3.只有是HTML中的标签就能够作为标签选择器

id选择器 :#id名称{

                          属性:值;                               }

留神点:

        1.每个HTML标签都有一个属性叫做id, 也就是说每个标签都能够设置id        2.在同一个界面中id的名称是不能够反复的        3.在编写id选择器时肯定要在id名称后面加上#        4.id的名称是有肯定的标准的        id的名称只能由字母/数字/下划线,a-z 0-9 _         id名称不能以数字结尾        id名称不能是HTML标签的名称,不能是a h1 img input         5.在企业开发中个别状况下如果仅仅是为了设置款式, 咱们不会应用id ,因为id是留给js应用的

类选择器: .类名{

                         属性:值;                             }

留神点:

        1.每个HTML标签都有一个属性叫做class, 也就是说每个标签都能够设置类名        2.在同一个界面中class的名称是能够反复的        3.在编写class选择器时肯定要在class名称后面加上.        4.类名的命名标准和id名称的命名标准一样        5.类名就是专门用来给CSS设置款式的        6.在HTML中每个标签能够同时绑定多个类名

后辈选择器: 标签名称1 标签名称2{

                                                         属性:值;                                                          }

留神点:

1.后辈选择器必须用空格隔开

2.后辈不仅仅是儿子,也包含孙子、重孙子,只有在指定标签中的都是后辈

3.后辈选择器不仅仅能够应用标签,还能够应用其余选择器

4.后辈选择器能够通过空格始终延续下去。

子元素选择器:标签名称1>标签名称2{

                                                         属性:值;                                                             }

留神点:

1.子元素选择器只会查找儿子, 不会查找其余被嵌套的标签

2.子元素选择器之间须要用>符号连贯, 并且不能有空格

3.子元素选择器不仅仅能够应用标签名称, 还能够应用其它选择器
4.子元素选择器能够通过>符号始终延续下去

后辈选择器和子元素选择器之间的区别?

1.后辈选择器应用空格作为连贯符号
2.子元素选择器应用>作为连贯符号
3.后辈选择器会选中指定标签中, 所有的特定后辈标签, 也就是会选中儿子/孙子..., 只有是被放到指定标签中的特 定标签都会被选中

4.子元素选择器只会选中指定标签中, 所有的特定的间接标签, 也就是只会选中特定的儿子标签

后辈选择器和子元素选择器之间的共同点:

                                                               后辈选择器和子元素选择器都能够应用标签名称/id名称/class名称来作为选择器                                                                后辈选择器和子元素选择器都能够通过各自的连贯符号始终延续下去                                                                 选择器1>选择器2>选择器3>选择器4{}

交加选择器:给所有选择器选中的标签中, 相交的那局部标签设置属性

选择器1选择器2{

                       属性: 值;                       }

留神点:

        1.选择器和选择器之间没有任何的连贯符号        2.选择器能够应用标签名称/id名称/class名称        3.交加选择器仅仅作为理解, 企业开发中用的并不多

并集选择器:选择器1,选择器2{

                                                属性:值;                                                 }

留神点:

1.并集选择器必须应用,连贯

2.选择器能够应用标签名称/id名称/class名称

相邻兄弟选择器:给指定选择器前面紧跟的那个选择器选中的标签设置属性

选择器1+选择器2{

                        属性:值;                             }

留神点:

        1.相邻兄弟选择器必须通过+连贯        2.相邻兄弟选择器只能选中紧跟其后的那个标签, 不能选中被隔开的标签

通用兄弟选择器:给指定选择器前面的所有选择器选中的所有标签设置属性

选择器1~选择器2{

                属性:值;                          }

留神点:

        1.通用兄弟选择器必须用~连贯        2.通用兄弟选择器选中的是指定选择器前面某个选择器选中的所有标签, 无论有没有被隔开都能够选中

伪类选择器:伪类以":"结尾,用在选择器后,用于指明元素在某种非凡的状态下能力被选中

序选择器(构造伪类选择器)

:first-child 选中同级别中的第一个标签
:last-child 选中同级别中的最初一个标签
:nth-child(n) 选中同级别中的第n个标签
:nth-child(odd) 选中同级别中的所有奇数
:nth-child(even) 选中同级别中的所有偶数
:nth-child(xn+y) x和y是用户自定义的, 而n是一个计数器, 从0开始递增

例如(3n+1)别离对应1,4,7.....
:nth-last-child(n) 选中同级别中的倒数第n个标签
:only-child 选中父元素仅有的一个子元素E。仅有一个子元素时失效
留神点: 不辨别类型

同级别同类型中的第几个

            :first-of-type 选中同级别中同类型的第一个标签            :last-of-type  选中同级别中同类型的最初一个标签            :nth-of-type(n) 选中同级别中同类型的第n个标签            :nth-last-of-type(n)  选中同级别中同类型的倒数第n个标签            :only-of-type 选中父元素的特定类型的惟一子元素

动静伪类选择器:

E:link(链接伪类选择器):抉择匹配的E元素,而且匹配元素被定义了超链接并未被拜访过。罕用于链接 描点上
E:visited(链接伪类选择器 ):抉择匹配的E元素,而且匹配元素被定义了超链接并已被拜访过。罕用于 链接描点上
E:active(用户行为选择器):抉择匹配的E元素,且匹配元素被激活。罕用于链接描点和按钮上
E:hover (用户行为选择器): 抉择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅反对

a标签的伪类选择器:

格局

        :link 批改从未被拜访过状态下的款式        :visited 批改被拜访过的状态下的款式        :hover 批改鼠标悬停在a标签上状态下的款式        :active 批改鼠标长按状态下的款式

留神点

        a标签的伪类选择器能够独自呈现也能够一起呈现        a标签的伪类选择器如果一起呈现, 那么有严格的程序要求         默认状态:link->被拜访状态:visited->鼠标悬停状态:hover->鼠标长按状态:active         编写的程序必须要恪守爱恨准则 love hate        如果默认状态的款式和被拜访过状态的款式一样, 那么能够缩写 

否定伪类:能够从已选中的元素中剔除出某些元素

:not(选择器)

伪元素选择器:

::after

            示意元素的最初边的局部            个别须要联合content这个款式一起应用,            通过content能够向after的地位增加一些内容

::before

            示意元素最前边的局部            个别须要联合content这个款式一起应用,            通过content能够向before的地位增加一些内容     ::first-letter            为第一个字符来设置一个款式::first-line                为第一行设置一个款式

属性选择器:

[attribute=value]
作用: 找到有指定属性, 并且属性的取值等于value的标签, 而后设置属性

属性的取值是以什么结尾的
[attribute|=value] CSS2
[attribute^=value] CSS3
两者之间的区别:
CSS2中的只能找到value结尾,并且value是被-和其它内容隔开的
CSS3中的只有是以value结尾的都能够找到, 无论有没有被-隔开

-属性的取值是以什么结尾的
[attribute$=value] CSS3

-属性的取值是否蕴含某个特定的值得
[attribute~=value] CSS2
[attribute*=value] CSS3
两者之间的区别:
CSS2中的只能找到独立的单词, 也就是蕴含value,并且value是被空格隔开的
CSS3中的只有蕴含value就能够找到

通配符选择器:给以后界面上所有的标签设置属性

*{

   属性:值;

}

因为通配符选择器是设置界面上所有的标签的属性, 所以在设置之前会遍历所有的标签, 如果以后界面上的标签比拟多, 那么性能就会比拟差, 所以在企业开发中个别不会应用通配符选择器

组合选择器 :多个选择器组合应用

CSS三大个性:

继承性:给父元素设置一些属性, 子元素也能够应用, 这个咱们就称之为继承性
留神点:

        1.并不是所有的属性都能够继承, 只有以color/font-/text-/line-结尾的属性才能够继承        2.在CSS的继承中不仅仅是儿子能够继承, 只有是后辈都能够继承        3.继承性中的特殊性         a标签的文字色彩和下划线是不能继承的         h标签的文字大小是不能继承的

层叠性:

留神点:

        层叠性只有在多个选择器选中"同一个标签", 而后又设置了"雷同的属性", 才会产生层叠性

优先级:当多个选择器选中同一个标签, 并且给同一个标签设置雷同的属性时, 如何层叠就由优先级来确定

优先级判断的三种形式:

间接选中就是指继承
如果是间接选中, 那么就是谁离指标标签比拟近就听谁的

-雷同选择器(间接选中)
如果都是间接选中, 并且都是同类型的选择器, 那么就是谁写在前面就听谁的

-不同选择器(间接选中)
如果都是间接选中, 并且不是雷同类型的选择器, 那么就会依照选择器的优先级来层叠
id>类>标签>通配符>继承>浏览器默认

优先级之!important:

留神点:

            1.!important只能用于间接选中, 不能用于间接选中            2.通配符选择器选中的标签也是间接选中的            3.!important只能晋升被指定的属性的优先级, 其它的属性的优先级不会被晋升            4.!important必须写在属性值得分号后面            5.!important后面的感叹号不能省略            6.然而个别倡议不应用"!important",因为它会扭转级联的工作形式,使得调试变得艰难。

font-style:用于关上和敞开斜体文本

取值:

italic : 歪斜的

normal : 失常的, 默认就是失常的

font-weight: 为字体设置粗细水平

取值:

bold 加粗

bolder 比加粗还要粗

lighter 细线, 默认就是细线
数字取值:
100-900之间整百的数字

400 等同于 normal

700 等同于 bold

font-size 为文字指定大小

font-family 为文字指定非凡的字体,浏览器只会应用浏览器能够拜访到的字体

text-decoration:文本装璜的属性

取值:

underline 下划线
line-through 删除线
overline 上划线
none 什么都没有, 最常见的用处就是用于去掉超链接的下划线

text-align:文本程度对齐的属性

取值:

    left 左    right 右    center 中

text-indent:文本缩进的属性

取值:

    2em, 其中是em单位, 一个em代表缩进一个文字的宽度

text-transform :容许字体扭转,文本变形 ,设置或者勾销字体扭转,用于使文本显示为全大写或全小写

取值:

none 避免任何扭转

uppercase 将文本转换为大写

lowercase 将文本转换为小写

capitalize 将所有单词第一个字母转换为大写

full-width 转换为相似于一个等宽字体

text-shadow: h-shadow v-shadow blur color;(字体暗影)

取值:

    none:勾销所有暗影              h-shadow :必须。程度暗影的地位。容许负值。         v-shadow :必须。垂直暗影的地位。容许负值。         blur:可选。含糊的间隔。    color:可选。暗影的色彩。

list-style-type :设置列表项标记类型

list-style-position :设置列表项标记呈现的地位

取值:

    outside : 列表项标记呈现在主块框的内部    inside  : 列表项标记呈现在主块框的外部

list-style-image 自定义设置列表项标记

取值:

        url() : 指定图标地位

line-height : 设置文本的行高 取值为相对单位或者绝对单位

display :inline 行内显示,宽高有效

block 块级显示,宽高无效

inline-block 行内显示同时宽高无效

none 不显示,不占据屏幕空间

visibility:hidden : 暗藏,占据屏幕空间

visible 显示

overflow : 溢出解决

hidden 超出内容暗藏

auto 超出产生滚动条

scroll 滚动条

cursor:指定光标的款式

外边距合并景象:垂直方向上, 外边距是不会叠加的, 会呈现合并景象, 谁的外边距比拟大就听谁的。程度方向上的外边距会叠加.

内边距:

留神点:

            1.给标签设置内边距之后, 标签占有的宽度和高度会发生变化            2.给标签设置内边距之后, 内边距也会有背景色彩

内容盒子:

width 属性仅示意盒子内容所占的宽度

height 属性仅示意盒子内容所占的高度

边框盒子:

内容区的宽 :width-paddingLeft-paddingRight-borderLeft-borderRight

内容区的高 :height-paddingTop-paddingBottom-borderTop-borderBottom

盒子的宽 :width

盒子的高 :height

所占屏幕空间的宽 : width+marginLeft+marginRight

所占屏幕空间的高 :height+marginTop+marginBottom

盒子模型留神点:

1.如果两个盒子是嵌套关系, 那么设置了外面一个盒子(子元素)顶部的外边距, 里面一个盒子(父元素)也会被 顶下来。

起因:

子元素和父元素上边框重合在一起。 因为父元素的第一个子元素的顶部外边距margin-top如果碰不到无效的border或者padding,就会一直一层 一层的找本人父元素的麻烦。只有给父元素设置一个无效的border或padding就能够无效的管制这margin-top,避免它越级,把本人的margin-top当成父元素的margin-top执行。

2.如果里面的盒子不想被一起顶下来,那么能够给里面的盒子增加一个边框属性。

3.在企业开发中, 个别状况下如果须要管制嵌套关系盒子之间的间隔, 应该首先思考padding, 其次再思考 margin,margin实质上是用于管制兄弟关系之间的间隙的。

4.只有一般文档流中块框的垂直外边距才会产生外边距合并。行内框、浮动框或相对定位之间的外边距不 会合并。

5.在嵌套关系的盒子中, 咱们能够利用margin: 0 auto;的形式来让外面的盒子在里面的盒子中程度居中
margin:0 auto = margin:0 auto 0 auto,示意高低为0,左右为auto;
6.margin: 0 auto; 只对程度方向无效, 对垂直方向有效

background-color 背景色彩

background-image 背景图片

background-repeat 背景平铺属性

取值:

        repeat 默认, 在程度和垂直都须要平铺        no-repeat 在程度和垂直都不须要平铺        repeat-x 只在程度方向平铺        repeat-y 只在垂直方向平铺

background-position 背景定位属性

取值
具体的方位名词
程度方向: left center right
垂直方向: top center bottom

具体的像素
例如: background-position: 100px 200px;
记住肯定要写单位, 也就是肯定要写px
记住具体的像素是能够接管正数的

background-attachment:用于批改关联形式

取值:

scroll 默认值, 会随着滚动条的滚动而滚动fixed 不会随着滚动条的滚动而滚动

浮动流排版形式

1.浮动流是一种"半脱离规范流"的排版形式
2.浮动流只有一种排版形式, 就是程度排版. 它只能设置某个元素左对齐或者右对齐

浮动元素字围景象:

浮动元素不会挡住没有浮动元素中的文字, 没有浮动的文字会主动给浮动的元素让地位,这个就是浮动元素字围景象

    -留神点:           1.浮动流中没有居中对齐, 也就是没有center这个取值           2.在浮动流中是不能够应用margin: 0 auto;

-特点:
1.在浮动流中是不辨别块级元素/行内元素/行内块级元素的
无论是块级元素/行内元素/行内块级元素都能够程度排版
2.在浮动流中无论是块级元素/行内元素/行内块级元素都能够设置宽高
3.综上所述, 浮动流中的元素和规范流中的行内块级元素很像

解决高度塌陷

        1.所以在开发中肯定要避免出现高度塌陷的问题,咱们能够将父元素的高度写死,以防止塌陷的问题出            现,然而一旦高度写死,父元素的高度将不能主动适应子元素的高度,所以这种计划是不举荐应用的。        2.能够间接在高度塌陷的父元素的最初,增加一个空白的div,因为这个div并没有浮动,所以他是能够            撑开父元素的高度的,而后在对其进行革除浮动,这样能够通过这个空白的div来撑开父元素的高度,            根本没有副作用。        应用这种形式尽管能够解决问题,然而会在页面中增加多余的构造。                clear属性取值:                    none: 默认取值, 依照浮动元素的排序规定来排序(左浮动找左浮动, 右浮动找右浮动)                    left: 不要找后面的左浮动元素                    right: 不要找后面的右浮动元素                    both: 不要找后面的左浮动元素和右浮动元素        3.通过after伪类                能够通过after伪类向元素的最初增加一个空白的块元素,而后对其革除浮动,这样做和增加一个                    div的原理一样,能够达到一个雷同的成果,而且不会在页面中增加多余的div,这是咱们最举荐使                    用的形式,简直没有副作用。                        .clearfix::after{                            /*增加一个内容*/                            content: "";                           /*转换为一个块元素*/                            display: block;                            /*革除两侧的浮动*/                            clear: both;                        }
BFC的布局规定
  1. 外部的Box会在垂直方向一个接着一个地搁置。
  2. Box垂直方向上的间隔由margin决定。属于同一个BFC的两个相邻的Box的margin会产生重叠。
  3. 每个盒子的左外边框紧挨着蕴含块的左边框,即便浮动元素也是如此。
  4. BFC的区域不会与float box重叠。
  5. BFC就是页面上的一个隔离的独立容器,容器外面的子元素不会影响到里面的元素,反之亦然。
  6. 计算BFC的高度时,浮动子元素也参加计算。
哪些元素会生成BFC

1.根元素

2.float属性不为none

3.position 为absolute或fixed

4.display为inline-block table-cell table-caption flex inline-flex

5.overflow不为visible 

BFC的作用

  • 解决浮动元素令父元素高度坍塌的问题

办法:给父元素开启BFC

原理:计算BFC的高度时,浮动子元素也参加计算

定位布局

动态定位:所有元素的默认定位形式。意味着将一个元素定位在默认文档流中(position: static;)

绝对定位:绝对于本人以前在规范流中的地位来挪动(position: relative;)

绝对定位留神点

  • 绝对定位是不脱离规范流的, 会持续在规范流中占用一份空间
  • 在绝对定位中同一个方向上的定位属性只能应用一个
  • 因为绝对定位是不脱离规范流的, 所以在绝对定位中是辨别块级元素/行内元素/行内块级元素
  • 因为绝对定位是不脱离规范流的, 并且绝对定位的元素会占用规范流中的地位, 所以当给绝对定位 的元素设置margin/padding等属性的时会影响到规范流的布局

相对定位:相对定位就是绝对于body来定位(position: absolute;)

相对定位参考点:

1.法则
默认状况下所有的相对定位的元素, 无论有没有先人元素, 都会以body作为参考点

2.如果一个相对定位的元素有先人元素, 并且先人元素也是定位流, 那么这个相对定位的元素就会以定位流 的那个先人元素作为参考点。
2.1只有是这个相对定位元素的先人元素都能够
2.2指的定位流是指相对定位/绝对定位/固定定位
2.3定位流中只有动态定位不行

3.如果一个相对定位的元素有先人元素, 并且先人元素也是定位流, 而且先人元素中有多个元素都是定位流, 那么这个相对定位的元素会以离它最近的那个定位流的先人元素为参考点。

-相对定位程度居中

只须要设置相对定位元素的left:50%;
而后再设置相对定位元素的 margin-left: -元素宽度的一半px;

固定定位:position: fixed;

留神点:

        1.固定定位的元素是脱离规范流的, 不会占用规范流中的空间        2.固定定位和相对定位一样不辨别行内/块级/行内块级

粘滞定位:position: sticky;

应用条件:

父元素不能overflow:hidden或者overflow:auto属性。

必须指定top、bottom、left、right4个值之一,否则只会处于绝对定位

父元素的高度不能低于sticky元素的高度

sticky元素仅在其父元素内失效

z-index:默认取值0

留神点:
1.从父景象
1.1如果两个元素的父元素都没有设置z-index属性, 那么谁的z-index属性比拟大谁就显示在下面。
1.2如果两个元素的父元素设置了z-index属性, 那么子元素的z-index属性就会生效, 也就是说谁的父元素的z-index属性比拟大谁就会显示在下面。