木輮-关于CSS

163 阅读5分钟

一、CSS选择器

1、元素选择器

  • 文档的标签元素是最基本的选择器
  • 多个元素间使用逗号,可简写,叫选择器分组
  • CSS2引入通配选择器 *

2、类(Class) / ID 选择器

  • 类(Class)选择器使用点 .
  • 可结合元素选择器,例:p.important {color:red;}
  • 多类选择器,例 <p class="important warning"></p>  .important.warning{background:silver;}
  • ID选择器使用井号 #

3、属性选择器

  • 根据元素的属性和属性值选择元素,例 *[title] {color:red;} ,具体如下:

4、亲戚选择器 后代选择器、子选择器、相邻兄弟选择器、后续兄弟选择器

  • 后代选择器,使用空格,例:h1 em {color:red;}
  • 子元素选择器,使用大于号 >,例:h1 > strong {color:red;}
  • 相邻兄弟选择器(后续的一个兄弟),使用+,例:h1 + p {margin-top:50px;}
  • 后续兄弟选择器(后续所有的兄弟),使用~,例:h1 + p {margin-top:50px;}

5、伪类 / 伪元素选择器

  • 伪类使用单冒号 ,所有伪类如下(7个)

  • CSS3伪元素使用双冒号 :: ,所有伪元素如下:(4个,单冒号也识别,最好使双冒号)

二、布局

1、标准流(普通流/文档流)最基本的

  • 块级元素独占一行,从上向下顺序排列,例:div、p、h1~h6、form、table、hr、ul、ol

  • 行内元素按顺序,从左到右排列,遇到父元素边缘换行,例:span、a、em、i

2、浮动(float)

  • 网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动
  • 特点:
  1. 浮动元素会脱离标准流。(脱标)
  2. 浮动元素顶端对齐,一行显示。
  3. 会具有行内元素特点,当不指定元素宽高时,以内容宽高为元素宽高。
  • 一般**搭配**父块元素使用。
  • 网页布局第二准则设置盒子大小设置盒子位置
  • 清除浮动方法:
  1. 额外标签法,也称隔墙法,W3C推荐方法(如图1-6)

  2. 父级添加overflow属性,属性值设为hidden、autoscroll(不常用)(如图1-7)

  3. 父级添加after伪元素,大厂专用,相当于额外标签法(如图1-8)关一个门

  4. 父级添加双伪元素,大厂专用,:befor、:after(如图1-9)关两个门一i

  • 总结

3、定位(position)五种

  • static(静态定位)
  1. 按照标准流摆放位置,无偏移属性
  • relative(相对定位)
  1. 相对于自己的标准流位置发生偏移。
  2. 原来标准流的位置继续占有(不脱标),后面盒子仍然以标准流的方式对待它(如图1-1)
  • absolute(绝对定位)
  1. 如果没有祖先元素,或者祖先元素没有定位,则以浏览器为标准
  2. 如果祖先元素定位(相对、绝对、固定),则以最近的祖先元素为基准(如图1-2)
  3. 绝对定位不再占有原先的位置。(脱标)
  4. 子绝父相,父级元素需要占有位置,因此是相对定位,子盒子不需要占有位置,则是绝对定位,(如图1-3)
  • fixed(固定定位)
  1. 以浏览器的可视窗口为参照点移动元素,与父元素无关,不随滚动条滚动
  2. 不再占有原来的位置。脱标 (如图1-4)可看做是特殊的绝对定位,犹如正方形对矩形
  • sticky(粘性定位)
  1. 以浏览器的可视窗口为参照点移动(如图1-5)
  2. 占有原先的定位,不脱标
  3. 必须添加top、left、right、bottom其中一个才有效,跟页面滚动搭配使用,IE不支持。

定位总结

4、盒子模型

  • 包括四部分:内容context、内边距padding、边框border、外边距margin

  • border属性包括三个:border-widthborder-styleborder-color(如图2-0)

可简写为:border:1px soild red; 没有顺序

  • padding值的个数和表达意思(如图2-1)应用(如图2-2)不指定父亲宽高,则不会撑开
  • content:weith和height设定的是content的属性
  • margin:与padding相同
  1. 外边距可使块级盒子水平居中,必须满足两个条件:1)盒子指定宽度 2)左右外边距设置auto
  2. 常见写法:margin:0 auto;1
  3. 行内块元素水平居中方法:给其父亲添加text-align:center即可
  4. 外边距塌陷问题:父子都设置margin-top则父亲会塌陷两次。 解决:1)为父元素设置上边框上内边距 2)为父元素添加overflow:hidden.
  5. 清除内外边距:1)*自带的margin:8px;1(如图2-3)ul也有,遇见再设设置 2)行内元素上下内外边距不起作用,不要设置(如图2-4)

三、样式

1、元素显示模式 (块、行内、行内块)

  • 块元素
  1. 举例:<div>、<p>、<h1>~<h6>、<ul>、<ol>、<li>
  2. 特点:1)独占一行 2)宽高、内外边距可控 3)宽度默认父级元素的100% 4)子元素可行内或块
  • 行内元素
  1. 举例:<span>、<a>、<b>、<em>
  2. 特点:1)相邻行内元素一行显示 2)宽高设置无效 3)默认宽度为文本内容宽度 4)仅能容纳文本或行内元素
  • 行内块元素
  1. 举例:<img />、<input />、<td>
  2. 特点:1)相邻行内块一行显示,但有空隙 2)默认宽度为文本内容宽度 3)宽高、内外边距可控

2、背景相关

  • 背景色:p {background-color: gray;}

  • 背景图片:body {background-image: url(/i/eg_bg_04.gif);}会压住背景颜色

  • 背景平铺:background-repeat,可设置为不平铺、平铺、x或y轴平铺

  • 背景图片位置:background-position:x y第二个参数省略,会默认居中

  • 背景固定(背景附着):background-attachment:scroll | fixed1

  • 融合:background:颜色 图片地址 平铺 滚动 位置(如图2-6)

  • 背景色半透明:background:rgba(0,0,0,0.3);alpha取值0~1,0为全透

  • 总结:

3、文字相关

  • 重要:文字垂直居中---行高==盒子高度(如图2-5)

4、表格相关

5、其他(链接、列表、轮廓)

四、备注图

图1-1(relative经典):

图1-2:

图1-3(absolute经典):

图1-4(fixed经典):

图1-5(sticky经典)

图1-6:

图1-7:

图1-8(大厂专用):

图1-9(大厂专用):

图2-0:

图2-1:

图2-2(padding实际应用-撑开盒子):

图2-3:

图2-4:

图2-5:

图2-6(提倡):