首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

CSS 定位详解

2020-01-02

CSS 有两个最重要的根本特点,前端开发有必要把握: display 和 position 。

display 特点指定网页的布局。两个重要的布局,我现已介绍过了: 弹性布局 flex 和 网格布局 grid 。

本文介绍十分有用的 position 特点。我期望经过10分钟的阅览,协助我们轻松把握网页定位,说清楚浏览器怎样核算网页元素的方位,尤其是新引入的 sticky 定位。

本文由国内最大的在线教育渠道之一 讲堂 资助。他们现在启动了 讲堂101方案 ,推行渠道上的课程资源,有不少优质内容。期望进步前端技能水平的同学,能够留心一下本文结束的免费课程信息。

position 特点用来指定一个元素在网页上的方位,一共有5种定位方法,即 position 特点主要有五个值。

static
relative
fixed
absolute
sticky

下面就顺次介绍这五个值。最终一个 sticky 是2017年浏览器才支撑的,本文将要点介绍。

static 是 position 特点的默许值。假如省掉 position 特点,浏览器就以为该元素是 static 定位。

这时,浏览器会依照源码的次序,决议每个元素的方位,这称为 正常的页面流 。每个块级元素占有自己的区块,元素与元素之间不发生堆叠,这个方位便是元素的默许方位。

留意, static 定位所导致的元素方位,是浏览器自主决议的,所以这时 top 、 bottom 、 left 、 right 这四个特点无效。

relative 、 absolute 、 fixed 这三个特点值有一个共同点,都是相对于某个基点的定位,不同之处只是在于基点不同。所以,只需理解了它们的基点是什么,就很简略把握这三个特点值。

这三种定位都不会对其他元素的方位发生影响,因而元素之间或许发生堆叠。

relative 表明,相对于默许方位进行偏移,即定位基点是元素的默许方位。

它有必要调配 top 、 bottom 、 left 、 right 这四个特点一同运用,用来指定偏移的方向和间隔。

div {
 position: relative;
 top: 20px;
}

上面代码中, div 元素从默许方位向下偏移 20px 。

absolute 表明,相对于上级元素进行偏移,即定位基点是父元素。

它有一个重要的约束条件:父元素不能是 static 定位,不然定位基点就会变成整个网页的根元素 html 。别的, absolute 定位也有必要调配 top 、 bottom 、 left 、 right 这四个特点一同运用。

/*
 HTML 代码如下
 div id= father 
 div id= son /div 
 /div 
#father {
 positon: relative;
#son {
 position: absolute;
 top: 20px;
}

上面代码中,父元素是 relative 定位,子元素是 absolute 定位,所以子元素的定位基点是父元素,相对于父元素的顶部向下偏移 20px 。假如父元素是 static 定位,上例的子元素便是间隔网页的顶部向下偏移 20px 。

留意, absolute 定位的元素会被 正常页面流 疏忽,即在 正常页面流 中,该元素所占空间为零,周边元素不受影响。

fixed 表明,相对于视口进行偏移,即定位基点是浏览器窗口。这会导致元素的方位不随页面翻滚而改变,如同固定在网页上相同。

它假如调配 top 、 bottom 、 left 、 right 这四个特点一同运用,表明元素的初始方位是根据视口核算的,不然初始方位便是元素的默许方位。

div {
 position: fixed;
 top: 0;
}

上面代码中, div 元素一直在视口顶部,不随网页翻滚而改变。

sticky 跟前面四个特点值都不相同,它会发生动态作用,很像 relative 和 fixed 的结合:一些时分是 relative 定位,另一些时分主动变成 fixed 定位。

因而,它能够构成 动态固定 的作用。比方,网页的查找东西栏,初始加载时在自己的默许方位。

页面向下翻滚时,东西栏变成固定方位,一直停留在页面头部。

比及页面从头向上翻滚回到原位,东西栏也会回到默许方位。

sticky 收效的条件是,有必要调配 top 、 bottom 、 left 、 right 这四个特点一同运用,不能省掉,不然等同于 relative 定位,不发生 动态固定 的作用。原因是这四个特点用来界说 偏移间隔 ,浏览器把它当作 sticky 的收效门槛。

它的具体规则是,当页面翻滚,父元素开端脱离视口时,只需与 sticky 元素的间隔到达收效门槛, relative 定位主动切换为 fixed 定位;比及父元素完全脱离视口时, fixed 定位主动切换回 relative 定位。

请看下面的示例代码。

#toolbar {
 position: -webkit-sticky; /* safari 浏览器 */
 position: sticky; /* 其他浏览器 */
 top: 20px;
}

上面代码中,页面向下翻滚时, #toolbar 的父元素开端脱离视口,一旦视口的顶部与 #toolbar 的间隔小于 20px , #toolbar 就主动变为 fixed 定位,坚持与视口顶部 20px 的间隔。页面持续向下翻滚,父元素完全脱离视口, #toolbar 康复成 relative 定位。

sticky 定位能够完结一些很有用的作用。除了上面说到 动态固定 作用,这儿再介绍两个。

堆叠作用指的是页面翻滚时,下方的元素掩盖上方的元素。下面是一个图片堆叠的比如,下方的图片会跟着页面翻滚,掩盖上方的图片。

HTML 代码便是几张图片。

 div img src= pic1.jpg /div 
 div img src= pic2.jpg /div 
 div img src= pic3.jpg /div 

CSS 代码极端简略,只需两行。

div {
 position: sticky;
 top: 0;
}

它的原理是页面向下翻滚时,每张图片都会变成 fixed 定位,导致后一张图片堆叠在前一张图片上面。具体解说能够看 这儿 。

大型表格翻滚的时分,表头一直固定,也能够用 sticky 完结。

CSS 代码也很简略。

th {
 position: sticky;
 top: 0; 
}

需求留意的是, sticky 有必要设在 th 元素上面,不能设在 thead 和 tr 元素,由于这两个元素没有 relative 定位,也就无法发生 sticky 作用。具体解说能够看 这儿 。

初学者刚触摸前端,往往会被一大堆技能名词、结构和东西,搞得目不暇接。

究竟哪些技能是现在的干流技能栈,既能用于公司的开发实务,又能为自己的简历增加亮点?

下面便是一套现在干流的前端技能栈。

Node.js:服务器端的 JavaScript 运转环境,不论哪种前端开发,都必不可少的底层环境。

Webpack:语法转化东西,把 ES6/TypeScript/JSX 语法转成浏览器能够运转的代码。

Koa2:一个十分盛行、简练强壮的 Node.js 后端的 Web 开发结构。

MongoDB:现在使用最广泛的非联系数据库之一,功用丰厚,用法较简略。

Vue 全家桶:

看到这个名单,你是不是感到有点头大,悉数把握它们需求多少时刻啊?

现在,讲堂就有一门这样的课程,内容包含了所有这些东西,教你怎样用它们从头完结一个全栈项目,亲手做出一个手机端的移动商城,是由 慕课网的精英讲师--谢成教师教育 。

这个课程原价98元, 活动期间,只需1块钱哦! 微信扫描下面的二维码,就能够收取优惠券,享用1元听课的福利。

该课程的制造单位是青盟科技。它是《讲堂101方案》要点推行的优质组织,已有7年 IT 职业教育经历,培育收费学员2000+,有超越72%的学员都进入到名企大厂。假如你想了解课程的具体内容,获取课程纲要,或许想承受体系的前端训练,能够登录讲堂检查 青盟科技 。

热门文章

随机推荐

推荐文章