传统css布局方案(position,float,line-height等配合)

一、display

display 是 css 布局中很重要的一个属性,它定义了元素生成的显示框类型,常见的几个属性值有:blockinlineinline-blockinheritnoneflex。inherit 表示这个元素从父元素继承 display 属性值;none 表示这个元素不显示,也不占用空间位置;flex 是 flex 布局重要的属性设置,我们留到后面详细讲解,这边先介绍前面三个属性值。

每个元素都有默认的 display 属性,比如 div 标签的默认 display 属性是 block,我们通常称这类元素为块级元素;span 标签的默认 display 属性是 inline,我们通常称这类元素为行内元素,我们先通过下面的代码示例来看下两者的区别。

块级元素
没有设置宽度时,它的宽度是其容器的 100%;
可以给块级元素设置宽高、内边距、外边距等盒模型属性;
块级元素可以包含块级元素和行内元素;
常见的块级元素: <div><h1> ~ <h6><p><ul><ol><dl><table><address> <form> 等。
 
行内元素(内联元素)
行内元素不会独占一行,只会占领自身宽高所需要的空间;
给行内元素设置宽高不会起作用,margin 值只对左右起作用,padding 值也只对左右起作用;
行内元素一般不可以包含块级元素,只能包含行内元素和文本;
常见的行内元素 <a><b><label><span><img><em><strong><i><input> 等。
 
给行内元素设置宽高不起作用,设置 margin、padding 只有左右起作用
 

内联块级元素

宽度由内容撑开,只占据自己的位置,可以设置自己的宽度(两个人的孩子?),display:inline-block

 
img标签
细心的你可能会发现,给 img 标签设置宽高是可以影响图片大小的,这是因为 img 是可替代元素,可替代元素具有内在的尺寸,所以宽高可以设定。
html 中的 input、button、textarea、select 都是可替代元素,这些元素即使是空的,浏览器也会根据其标签和属性来决定显示的内容。

二、position

在布局中很重要的因素就是定位,position 属性就是用来定义元素的定位机制。position 的常用属性值有:

relative:相对定位,相对于元素的正常位置进行定位;
absolute:绝对定位,相对于除 static 定位以外的元素进行定位;
fixed:固定定位,相对于浏览器窗口进行定位,网站中的固定 header 和 footer 就是用固定定位来实现的;
static:默认值,没有定位属性,元素正常出现在文档流中;
inherit:继承父元素的 position 属性值。

上文出现了文档流(normal flow)的概念,按理来说应该翻译成普通流,文档流是大多数人的叫法。“流”可以想象成流动的水,当我们打开屏幕,浏览网页,滚动鼠标,网页的内容就像是水流一样滑过。文档流便是指从上到下,从左往右的文档布局。当我们给元素的 positon 属性设置 absolute、fixed 时便会脱离文档流,不再遵循从上到下,从左到右的规律了。

三、float

float 属性定义元素在哪个方向浮动,常用属性值有 left、right,即向左浮动和向右浮动。设置了 float 的元素,会脱离文档流,然后向左或向右移动,直到碰到父容器的边界或者碰到另一个浮动元素。块级元素会忽略 float 元素,文本和行内元素却会环绕它,所以 float 最开始是用来实现文字环绕效果的。
清除浮动方案1:通过添加额外的标签,利用 clear 属性来清除浮动
清除浮动方案2:使用 br 标签,br 自带 clear 属性,clear 属性有 left、right 和 all 三个属性值可选。
清除浮动方案3:给父元素设置 overflow

出处:https://www.jianshu.com/p/914b76bae7b5

猜你喜欢

转载自www.cnblogs.com/tiandi/p/12545922.html