CSS 基础(三):Display、Position、Overflow、Float

【一】Display

Display(显示) 与 Visibility(可见性)

隐藏元素 – display:none 或 visibility:hidden

隐藏一个元素可以通过把 display 属性设置为”none”,或把 visibility 属性设置为 “hidden”。但是请注意,这两种方法会产生不同的结果。

visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局

display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

块和内联元素

块元素是一个元素,占用了全部宽度,在前后都是换行符。

块元素的例子:

  • <h1>
  • <p>
  • <div>

内联元素只需要必要的宽度,不强制换行。

内联元素的例子:

  • <span>
  • <a>

可以更改 “块元素内联元素 的显示方式。
比如设置 块元素内联元素的形式 展示,或者设置 内联元素块元素的显示形式 展示。

下面的示例把列表项显示为内联元素:

下面的示例把 span 元素作为块元素:

注意:变更元素的显示类型看该元素是如何显示,它是什么样的元素。例如:一个内联元素设置为display:block是不允许有它内部的嵌套块元素。

如何显示元素的内联元素。

这个例子演示了如何显示一个元素的内联元素。

如何显示元素的块元素。

这个例子演示了如何显示一个元素的块元素。

如何使用一个表的collapse属性。

这个例子演示了如何使用表的collapse属性。

【二】Position(定位)

position 属性指定了元素的定位类型。

position 属性的五个值:

元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非事先设定position属性。他们也有不同的工作方式,这取决于定位方法。

(Ⅰ)static 定位

HTML 元素的默认值,即没有定位,遵循正常的文档流对象。

静态定位的元素不会受到 top, bottom, left, right影响。

(Ⅱ)fixed 定位

元素的位置相对于浏览器窗口是固定位置。

即使窗口是滚动的它也不会移动

(Ⅲ)absolute 定位

绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html> :


(Ⅳ)Flex 布局

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。

2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为Flex布局。

行内元素也可以使用Flex布局。

Webkit内核的浏览器,必须加上-webkit前缀。

值得注意的是,使用Flex布局后,子元素的“float”、“clear”、“vertical-align”属性将失效。

采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。

容器默认存在两根轴:水平的主轴(main axis、X轴)垂直的交叉轴(cross axis、Y轴)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴(X轴)排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

Flex 容器一共有六大属性 :

  • flex-direction内部元素的排列方式:从左到右、从右到左、从上到下、从下到上
  • flex-wrap子元素的换行方式:不换行、换行(第一行在上面、第二行在上面)
  • flex-flow子元素的排列方式和换行方式的简写
  • justify-content子元素的水平对齐方式
  • align-items子元素的垂直对齐方式
  • align-content设置多个元素组成的整块的对齐方式

(一)flex-direction 属性

flex-direction 属性决定主轴(X轴)的方向(即项目的排列方向)。

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

(二) flex-wrap 属性

默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

(1)nowrap(默认):不换行。

(2)wrap:换行,第一行在上方。

(3)wrap-reverse:换行,第一行在下方。

(三)flex-flow

flex-flow 属性是 flex-direction 属性和 flex-wrap 属性的简写形式,默认值为 row nowrap。

(四)justify-content属性

justify-content属性定义了项目在主轴上的对齐方式。

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

(五)align-items属性

align-items属性定义项目在交叉轴上如何对齐。

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

(六) align-content属性

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

更多关于 Flex 布局参考:


重叠的元素、z-index

元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素。

z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面。z-index 较大的重叠元素会覆盖较小的元素。z-index 属性可以被设置为关键字 auto 或 int 值。)。注意:必须指定了 postion 或 flex 后 z-index 才生效

一个元素可以有正数或负数的堆叠顺序:

显示结果:

The z-index property specifies the stack order of an element.

An element with greater stack order is always in front of an element with a lower stack order.

Note: z-index only works on positioned elements (position: absolute, position: relative, position: fixed, or position: sticky) and flex items (elements that are direct children of display:flex elements). 【必须指定了 postion 或 flex 后 z-index 才生效】

Note: If two positioned elements overlap without a z-index specified, the element positioned last in the HTML code will be shown on top. 【如果两个定位的元素重叠而未指定 z-index 索引,则 HTML 代码中最后定位的元素将显示在顶部。】

【三】Overflow

overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条

overflow-x 属性指定如果它溢出了元素的内容区是否剪辑左/右边缘内容。

overflow-y 属性指定如果它溢出了元素的内容区是否剪辑顶部/底部边缘内容。

overflow 属性有以下值:

描述
visible默认值。内容不会被修剪,会呈现在元素框之外,即内容溢出元素框。
hidden内容会被修剪,并且其余内容是不可见的。
scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit规定应该从父元素继承 overflow 属性的值。

注意: overflow 属性只工作于指定高度的块元素上。

注意: 在 OS X Lion ( Mac 系统) 系统上,滚动条默认是隐藏的,使用的时候才会显示 (设置 “overflow:scroll” 也是一样的)。

【四】Float

CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。

Float(浮动),往往是用于图像,但它在布局时一样非常有用。

元素怎样浮动

元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。

一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。浮动元素之后的元素将围绕它。

浮动元素之前的元素将不会受到影响。

如果图像是右浮动,下面的文本流将环绕在它左边

如上,关键点是:文字和图片都在一个块元素中,则图片浮动后,文字才会环绕图片。

彼此相邻的浮动元素

如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。

参:https://www.runoob.com/try/try.php?filename=trycss_float_elements

更多例子:

为图像添加边框和边距并浮动到段落的右侧

让我们为图像添加边框和边距并浮动到段落的右侧

标题和图片向右侧浮动

让标题和图片向右侧浮动。

让段落的第一个字母浮动到左侧

改变样式,让段落的第一个字母浮动到左侧。

创建一个没有表格的网页

使用 float 创建一个网页页眉、页脚、左边的内容和主要内容。

码先生
Author: 码先生

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注