CSS 布局

CSS 布局

CSS布局

CSS布局

​ 指浏览器是如何对网页中的元素进行排版的。

标准流(文档流/普通流)(默认)

  • CSS三类元素

    1. 块级元素:

      • 独占一行,自上向下垂直排列。

      • 可以设置宽度, 默认和父元素一样宽。

      • 常见块级元素: p,div, h ,ul ,ol ,dl, li ,dt ,dd。

    2. 行内元素

      • 不会独占一行,不可以设置宽度和高度

      • 可以设置padding,border,margin,但是垂直方向不会影响页面布局

      • 默认和内容一样宽。

      • 常见行内元素: span ,buis ,strong, em ,ins ,del

    3. 行内块级元素

      • 不独占一行, 并且可以设置宽高

排版

  1. 垂直排版:如果元素是块级元素, 那么就会垂直排版
  2. 水平排版:如果元素是行内元素/行内块级元素, 那么就会水平排版

浮动流

• 所谓浮动指的是使元素脱离原来的文本流,在父元素中浮动起来。 • 浮动使用float属性。 • 可选值: – none:不浮动 – left:向左浮动 – right:向右浮动 • 块级元素和行内元素都可以浮动,当一个行内元素浮动以后将会自动变为一个块级元素。 • 当一个块级元素浮动以后,宽度会默认被内容撑开,所以当漂浮一个块级元素时我们都会为其指定一个宽度。

• 当一个元素浮动以后,其下方的元素会上移。元素中的内容将会围绕在元素的周围。 • 浮动会使元素完全脱离文本流,也就是不再在文档中在占用位置。 • 元素设置浮动以后,会一直向上漂浮直到遇到父元素的边界或者其他浮动元素。 • 元素浮动以后即完全脱离文档流,这时不会再影响父元素的高度。也就是浮动元素不会撑开父元素。 • 浮动元素默认会变为块元素,即使设置display:inline以后其依然是个块元素。

清除浮动

• clear属性可以用于清除元素周围的浮动对元素的影响。 • 也就是元素不会因为上方出现了浮动元素而改变位置。 • 可选值: – left:忽略左侧浮动 – right:忽略右侧浮动 – both:忽略全部浮动 – none:不忽略浮动,默认值

overflow

• 当相关标签里面的内容超出了样式的宽度 和高度是,就会发生一些奇怪的事情,浏 览器会让内容溢出盒子。 • 可以通过overflow来控制内容溢出的情况。 • 可选值: – visible:默认值 – scroll:添加滚动条 – auto:根据需要添加滚动条 – hidden:隐藏超出盒子的内容

display用来设置显示的类型

  • inline: 将元素设置为行内元素

  • block: 将元素设置为行内元素

  • inline-block: 将元素设置为行内块,即可设置宽高,又不会独占一行(一般不使用)

  • table: 将元素设置为一个表格

  • none: 元素不在页面中显示

visibility设置元素显示状态

  • visibility:默认值,元素在默认值正常显示
  • hidden: 元素在页面中隐藏,不显示,但是依然占据页面位置

vertical-align

用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。这些值使元素相对其父元素垂直对齐:

  • baseline 使元素的基线与父元素的基线对齐。HTML规范没有详细说明部分可替换元素的基线,如
  • sub 使元素的基线与父元素的下标基线对齐。
  • super 使元素的基线与父元素的上标基线对齐。
  • text-top 使元素的顶部与父元素的字体顶部对齐。
  • text-bottom 使元素的底部与父元素的字体底部对齐。
  • middle 使元素的中部与父元素的基线加上父元素x-height(译注:x高度)的一半对齐。
  • 使元素的基线对齐到父元素的基线之上的给定长度。可以是负数。
  • 使元素的基线对齐到父元素的基线之上的给定百分比,该百分比是line-height属性的百分比。可以是负数。

注意 vertical-align 只对行内元素、表格单元格元素生效:不能用它垂直对齐块级元素

背景属性

   
background-image: url(“paper.gif”) 属性指定用作元素背景的图像, 属性在水平和垂直方向上都重复图像
background-repeat:repeat-x repeat-x:图像仅在水平方向重复
repeat-y:垂直重复
no-repeat:属性还可指定只显示一次背景图像
background-position: right top; 属性用于指定背景图像的位置,(右上方)
opacity 属性指定元素的不透明度/透明度。取值范围为 0.0 - 1.0。值越低,越透明
background-attachment: 属性指定背景图像是应该滚动还是固定的
fixed,固定;scroll,滚动。
background - 简写属性
eg: background: #ffffff url(“tree.png”) no-repeat right top;
在使用简写属性时,属性值的顺序为:
background-color
background-image
background-repeat
background-attachment
background-position
background-origin content-box: 相对于内容框来定位背景图像
border-box: 相对于边界框来定位背景图像
background-clip 规定背景的绘制区域
content-box: 相对于内容框来绘制背景图像
border-box: 相对于边界框来绘制背景图像
background-size 规定背景图像的尺寸

盒子模型

  • width: 设置盒子内容区的宽度

  • height: 设置盒子内容区的高度

  • margin: 外边框:只影响盒子的位置

  • padding: 内边框: 内容与框架外边框之间的距离

width和height只是设置的盒子内容区的大小,而不是盒子的整个大小,

盒子可见框的大小由内容区,内边距和边框共同决定

为元素设置边框,需要要为一个元素设置边框必须指定三个样式:

border-width: 边框的宽度

border-width可以分别指定四个边框的宽度:

  • 如果指定一个值,则四边全都是该值

  • 如果指定两个值,则两个值会分别设置给 上下 左右

  • 如果指定三个值,则三个值会分别设置给 上 左右 下

  • 指定四个值,四个值会分别设置给 上 右 下 左,按照顺时针的方向设置的

  • 除了border-width,CSS中还提供了四个border-xxx-width, xxx的值可能是top right bottom left专门用来设置指定边的宽度

border-color: 边框颜色

设置边框的颜色和宽度一样,color也提供四个方向的样式,可以分别指定颜色,border-xxx-color,xxx的值可能是top right bottom left

border-style: 边框的样式

设置边框的样式可选值:

  • none,默认值,没有边框 solid 实线 dotted 点状边框 dashed 虚线 double 双线

style也可以分别指定四个边的边框样式,规则和width一致,同时它也提供border-xxx-style四个样式,来分别设置四个边

内边距(padding)

指的是盒子的内容区与盒子边框之间的距离

一共有四个方向的内边距,可以通过:

padding-top

padding-right

padding-bottom

padding-left

来设置四个方向的内边距

内边距会影响盒子的可见框的大小,元素的背景会延伸到内边距,盒子的大小由内容区、内边距和边框共同决定

盒子可见框的宽度 = border-left-width + padding-left + width + padding-right + border-right-width

可见宽的高度 = border-top-width + padding-top + height + padding-bottom + border-bottom-width

外边距margin

指的是当前盒子与其他盒子之间的距离,

  • 他不会影响可见框的大小,而是会影响到盒子的位置。

    盒子有四个方向的外边距:

    margin-top

    margin-right

    margin-bottom

    margin-left

    由于页面中的元素都是靠左靠上摆放的,所以注意当我们设置上和左外边距时,会导致盒子自身的位置发生改变,而如果是设置右和下外边距会改变其他盒子的位置。

外边距也可以指定为一个负值,如果外边距设置的是负值,则元素会向反方向移动

margin还可以设置为auto,auto一般只设置给水平方向的margin

如果只指定,左外边距或右外边距的margin为auto则会将外边距设置为最大值

垂直方向外边距如果设置为auto,则外边距默认就是0

如果将left和right同时设置为auto,则会将两侧的外边距设置为相同的值,

就可以使元素自动在父元素中居中,所以我们经常将左右外边距设置为auto以使子元素在父元素中水平居中

定位

position属性可以控制Web浏览器如何以 及在何处显示特定的元素。 • 可以使用position属性把一个元素放置到网 页中的任何位置。 • 可选值: – static

– relative

– absolute

– fixed

相对定位

• 每个元素在页面的文档流中都有一个自然位置。相对于这个位置对元素进行移动就称为相对定位。周围的元素完全不受此影响。 • 当将position属性设置为relative时,则开启了元素的相对定位。 • 当开启了相对定位以后,可以使用top、right、bottom、left四个属性对元素进行定位。

相对定位的特点

• 如果不设置元素的偏移量,元素位置不会发生改变。 • 相对定位不会使元素脱离文本流。元素在文本流中的位置不会改变。 • 相对定位不会改变元素原来的特性。 • 相对定位会使元素的层级提升,使元素可以覆盖文本流中的元素。

绝对定位

• 绝对定位指使元素相对于html元素或离他最近的祖先定位元素进行定位。 • 当将position属性设置为absolute时,则开启了元素的绝对定位。 • 当开启了绝对定位以后,可以使用top、right、bottom、left四个属性对元素进行定位。

绝对定位的特点

• 绝对定位会使元素完全脱离文本流。 • 绝对定位的块元素的宽度会被其内容撑开。 • 绝对定位会使行内元素变成块元素。 • 一般使用绝对定位时会同时为其父元素指定一个相对定位,以确保元素可以相对于父元素进行定位。

固定定位

• 固定定位的元素会被锁定在屏幕的某个位置上,当访问者滚动网页时,固定元素会在屏幕上保持不动。

• 当将position属性设置为fixed时,则开启了元素的固定定位。

• 当开启了固定定位以后,可以使用top、right、bottom、left四个属性对元素进行定位。

• 固定定位的其他特性和绝对定位类似。

z-index

• 当元素开启定位以后就可以设置z-index这个属性。

• 这个属性可以提升定位元素所在的层级。

• z-index可以指定一个整数作为参数,值越大元素显示的优先级越高,也就是z-index值较大的元素会显示在网页的最上