你不一定知道的css知识-top等属性

html-css013

你不一定知道的css知识-top等属性,第1张

如果一个元素的position属性值不是‘static’,那么就说这个元素是定位的。

注意,'top','right','bottom','left'这四个属性对于static定位的元素无效。因此,我们说top等的含义时,就是在讲这些属性在相对定位和绝对定位下的含义。

绝对定位下,这四个属性的含义就很不一样了。

这里要解释一下俩个概念:top margin边 和包含块的概念。

我们都知道,每个盒子都由内容、内边距、边框和外边距组成。外边距区域最顶部的位置就是top margin 边,最底部的位置就是bottom margin边。

包含块的概念:元素盒子的位置和大小有时是根据一个特定矩形计算的,叫做该元素的包含块。

对于绝对定位的元素,它的包含块就是由最近的已经定位的祖先元素创建。如果没有这样的祖先,包含块就是根元素所在的包含块。

其实用postion: fixed并不是很方便,用position: sticky会更容易达到我们的目的。

只需要给头部设置:

即可。

将position设置为sticky,那么头部组件还会占有着上方空间,所以下面的body中的组件可以不用设置预留top。如果是用的fixed属性,那么body下面的组件也要算出导航栏的长度,再设置top属性,这样一来就麻烦了很多

CSS实现div垂直居中的方法有很多,下面div居中的几种方法是自己平时写网页中经常用到的,最常见的例子就是登录注册弹出框。

方法一:对div使用绝对布局position:absolute并设置top,left,right,bottom的值相等,但不一定都等于0;并且设置margin:auto。

方法二:这个方法要知道div的宽度和高度。对div使用绝对布局position:absolute并把top和left的值都设置为50%;50%就是指页面窗口的宽度和高度的50%;最后将div左移和上移,左移和上移的大小为div宽度和高度的一半。

其中 margin-left:-100px 和 margin-top:-100px 可以写成 margin:-100px  0px  0px  -100px

方法三:div使用绝对定位position:absolute,并且设置left和top的值都为50%。使用css3的transform属性。transform:translate(-50%,-50%)。

以上3种方法的效果如下显示

若有两个div,里面小的div相对于外面大的div水平垂直居中对齐,有以下几种方法。

方法一:利用position和margin:auto实现。父元素设置position:relative;子元素设置position:absolute,并设置top,left,right,bottom值相等。

方法二:使用position。父元素设置position:relative;子元素设置position:absolute。并设置top和left为50%,并设置左移和上移为子元素的大小的一半。

方法三:使用display:flex。这种方法需要设置浏览器的兼容性。

方法四:使用transform:translate()。父元素设置position:relative;子元素设置position:absolute。并设置top和left为50%。最后设置transform:translate(-50%,-50%)。

以上四种方法的效果图如下显示

今天就跟大家分享这么多~如果你有更好的方法,请在下方留言