美文网首页
果冻公开课第八课:如何定位

果冻公开课第八课:如何定位

作者: 果冻公开课 | 来源:发表于2019-08-20 20:59 被阅读0次

    为什么会有position定位

    基于定位的常见需求

    不同需求的解决方案

    动画视频:

    果冻公开课第八课:如何定位


    文字解析:

    我们知道每一个元素都是盒子

    期望布局像搭积木一样

    从上往下挨个堆盒子就能完成各式各样的页面

    然而多实现几个页面就会发现

    文档流中任意一个元素位置调整都会影响到后面的元素

    简直是牵一发动全身

    每每扪心自问敢动吗

    都只能回答不敢动不敢动

    有一种脱离文档流的解决办法就是浮动

    但浮动规则的局限性很大

    它会向左上角或右上角靠过去

    可惜这两个方向并不是布局的全部

    日益增长的网页复杂度

    和落后的css布局方式之间的矛盾越来越大

    让定位需求变得越来越复杂:

    1.让元素可以相对于它自己的位置定位

    2.让元素可以在父元素范围内任意位置定位

    3.让元素可以在屏幕范围内任意位置定位

    对于第一种需求

    让元素可以相对于它自己的位置定位

    比如像这样

    让元素相对于自身向下向右偏移一点

    也许有人会想到用margin 或padding

    但这样搞会影响到后面的元素

    后面的元素又要想尽各种办法归位

    过程曲折到可以写一部30集的连续剧

    用一次就会感到万分沮丧甚至开始怀疑人生

    所以我们希望有一种定位方式

    让元素相对于自身偏移

    且不会影响文档流

    首先设置元素的postion为relative

    让元素准备偏移

    此时 从视觉上来看它并没有发生变化

    接下来设置top right bottom或left来让元素位移

    比如top: 20px

    意味着元素上边界与它原本位置的上边界距离20像素

    bottom:20px

    则意味着元素下边界与它原本位置的下边界距离20 像素

    left和right

    一个控制左边界一个控制右边界 也是同理

    这里值得注意的事情有两点

    第一.相对定位的元素没有脱离文档流

    第二.对非定位元素设置top等方向属性是没有效果的

    对于第二种需求

    让元素可以在某个祖先级容器范围内任意位置定位

    比如像这样想让元素相对于某个祖先级元素容器定位

    这就意味着元素不被局限在父容器内

    它可以在更广阔的空间里放飞自我

    浮动是肯定不行的

    浮动只能在父容器里作威作福

    这就需要一种完全脱离文档流的定位方式

    position:absolute绝对定位

    不再区分这个元素是块级元素还是行内元素

    它的父容器会将它视为不存在

    就好像设置了display为none一样

    事实上这里设置display都是没有效果的

    然后对它的祖先级元素容器设置标识 postion:relative

    让它可以相对于被标识的元素定位

    最后通过top和right设置它在指定容器中的位置

    在这个例子里

    被绝对定位的元素是没有设置宽和高的

    它脱离了普通文档流并且不预留任何空间

    因此它会按内容大小弹性地调整大小

    当然也可以为它设置固定的宽高

    它会按指定的宽高显示

    不过如果是对于没有指定宽高的绝对定位元素

    同时设置top right bottom和left

    这些属性会同时生效

    像这一段代码

    绝对定位元素的top和bottom相等

    left和right相等就能在目标容器中实现完美居中

    对于第三种需求

    让元素可以在屏幕范围内任意位置定位

    比如像这样

    要让元素保持在页面右下角在屏幕滚动时不会改变

    是以视窗为画布来定位的

    即使页面上下滚动

    它还是会固定在相同的位置

    所以为元素设置position:fixed,固定定位

    这样的需求其实和前一个需求是非常类似的

    同样的也会脱离文档流

    只不过一个是相对于某个祖先级元素定位

    一个是相对于视窗定位

    因此想要让它显示出来

    需要设置它的宽高和位置

    不同的是

    并不需要为它设置目标容器

    因为它的目标就是页面的可视部分

    现在你可以仔细看看这段CSS代码

    在设置宽高后

    设置right指定它 的右边界到视窗右边界的距离

    再设置bottom指定它的下边界到视窗下边界的距离

    在页面滚动后

    它相对于视窗仍处于同一位置上

    可以说有了定位的这几种方式

    大大的扩展了布局的灵活性

    它们分别是

    absolute、fixed、relvtive

    另外定位还需要一个默认值static

    设置它后就能让元素回到当初

    假装什么都没发生的样子

    怎么样是不是很简单?

    赶紧上手写点代码练习一下吧~

    入QQ群:717415872     了解课程动态、幕后花絮,还有机会参与到课程制作,成为联合制作人哟,记得备注来自果冻课堂!

    更多内容,欢迎加大师姐微信:it_xzy

    相关文章

      网友评论

          本文标题:果冻公开课第八课:如何定位

          本文链接:https://www.haomeiwen.com/subject/xjmmsctx.html