发表于: 2018-06-20 23:07:24

1 1461


2018.6.20

今天完成的事情:

1.继续任务七

2.学习了float,绝对定位,无依赖绝对定位


明天计划的事情:

1.尽量完成任务七


遇到的问题:


收获:

一.position

1.absolute(绝对定位)

a.脱离标准流,在页面中不占位置(浮起来)。绝对定位之后,标签就不区分所谓的行内元素、块级元素了,不需要display:block就可以设置宽、高了。

b.如果没有父元素,则相对于body定位;如果有父元素,但父元素没有定位,那么还是相对于body定位;如果父元素有定位,那么相对于父元素来定位 

c.块状元素在position(relative/static)的情况下width为100%,但是设置了position: absolute之后,会将width变成auto(会受到父元素的宽度影响)

绝对定位:定义横纵坐标。原点在父容器的左上角或左下角。横坐标用left表示,纵坐标用top或者bottom表示。

1.2绝对定位的参考点(重要)

(1)如果用top描述,那么参考点就是页面的左上角,而不是浏览器的左上角:

(2)如果用bottom描述,那么参考点就是浏览器首屏窗口尺寸(好好理解“首屏”二字),对应的页面的左下角:

举个例子:

随着浏览器下边栏的上下拖动,蓝色的div会随着浏览器的下边栏移动。

距离左边和底部都是50px

但是拉动滚动条之后,脱离首屏后,底部的位置被拉大

1.3以盒子为参考点

一个绝对定位的元素,如果父辈或者祖先元素中也出现了已定位(无论是绝对定位、相对定位,还是固定定位)的元素,那么将以父辈或者祖先这个元素,为参考点。

如下:(子绝父相)

1.4让绝对定位中的盒子居中

left:50%; margin-left:负的宽度的一半


无依赖的绝对定位

1.不受relative限制的absolute定位,行为表现是不使用top/right/bottom/left任何一个属性,或者是不使用auto作为值

2.不依赖父元素

3.用了absolute之后float就没有作用了;

4.用了absolute之后,用display,会保留位置跟随特性,在普通元素的时候待在什么位置,绝对定位之后还呆在什么位置

5.配合margin,精确定位,适应各种浏览器


二.relative(相对定位)

a.不脱离标准流,在页面中占位置 

b.相对于自己原来的位置来进行定位,所以可用于盒子的微调

c.做绝对定位的参考,子绝父相

相对定位的定位值:

left:盒子右移

right:盒子左移

top:盒子下移

bottom:盒子上移

PS:负数表示相反的方向,所以left: 50px等价于right: -50px

举个例子:


三.浮动

浮动的历史,主要是为了文字环绕效果而诞生

具有包裹性,破坏性(使父元素高度塌陷)

浮动是css里面布局用的最多的属性.使一个元素脱离标准文档流

现在有两个div,分别设置宽高.我们知道,它们的效果如下:

此时,如果给这两个div增加一个浮动属性,比如float: left;,效果如下:

这就达到了浮动的效果.此时,两个元素并排了,并且两个元素都能够设置宽度,高度了(这在上一段的标准流中,不能实现).

1.浮动的四个性质

a.浮动的元素脱离标准流

举个例子:

上图中,在默认情况下,两个div标签是上下进行排列的.现在由于float属性让上图中的第一个<div>标签出现了浮动,

于是这个标签在另外一个层面上进行排列.而第二个<div>还在自己的层面上遵从标准流进行排列.

再举个例子:

上图中,一个span标签不需要转成块级元素,就能够设置宽度,高度了.所以能够证明一件事儿,就是所有标签已经不区分行内,块了.

也就是说,一旦一个元素浮动了,那么,将能够并排了,并且能够设置宽高了.无论它原来是个div还是个span.

b.浮动的元素互相贴靠

举个例子:

在改变浏览器大小时,会产生如下效果:

c.浮动的元素有"字围"效果

举个例子:让div浮动,p不浮动.

上图中,我们发现:div挡住了p,但不会挡住p中的文字,形成"字围"效果.

d.收缩

收缩:一个浮动的元素,如果没有设置width,那么将自动收缩为内容的宽度(这点非常像行内元素).

举个例子:

上图中,div本身是块级元素,如果不设置widh,它会单独霸占整行;但是,设置div浮动后,它会收缩




返回列表 返回列表
评论

    分享到