【CSS】float属性与display属性的结合使用

基础知识

本人基础不牢,写之前先把基础过一下嘻嘻。。

float

浮动,指让某个元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。

假如某个div元素A是浮动的,如果A的上一个元素也是浮动的,那么它跟在上一个元素(浮动元素)之后排列;如果它 的上一个元素是标准流元素,那么A的顶部和上一个元素(标准流元素)的底部对齐。

清除浮动

语法:

clear: none | left | right | both

取值:

none: 默认值。允许两遍都可以有浮动对象。

left: 不允许左边有浮动对象。

right: 不允许右边有浮动对象。

both: 不允许有浮动对象。

比如两个浮动对象A和B均设置为float: left;,这时AB左右同行排列,想要让B在A的下方时,对B设置clear: left;清除浮动即可。

position

MDN:

CSS position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则决定了该元素的最终位置。

static

默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。

absolute

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。脱离正常流

MDN:

不为元素预留空间,通过指定元素相对于最近的非static定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margin),且不会与其他边距合并。

relative

生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的left位置添加 20 像素。

MDN:

该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。

fixed

生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

MDN:

不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed属性会创建新的层叠上下文。当元素祖先的 transform 属性非 none 时,容器由视口改为该祖先。

sticky

MDN:

盒位置根据正常流计算(这称为正常流动中的位置),然后相对于该元素在流中的flow root(BFC)和containing block(最近的块级祖先元素)定位。在所有情况下(即便被定位元素为table时),该元素均不对后续元素造成影响。当元素B被粘性定位时,后续元素的位置仍按照B未定位的位置来确定。position: sticky对table元素的效果与position: relative相同。

inherit

规定应该从父元素继承 position 属性的值。

float与display结合使用

终于到正文了。。。

两者是没有冲突的,反而可以结合使用,让元素既漂浮在文档之上又产生位移。float是将元素脱离标准流,浮动在文档之上;display使元素产生相对移动。

在此努力写个例子:

<body>
  <div class="d1">div1</div>
  <div class="d2">div2</div>
</body>

当只有float的时候:

  .d1 {
    float: left;
    width: 100px;
    height: 100px;
    background-color: red;
  }

  .d2 {
    float: left;
    width: 100px;
    height: 100px;
    background-color: sandybrown;
  }

效果:

为div1设置display:relative以及left:300px,div1向右偏移300px,而正常位置还在:

  .d1 {
    float: left;
    position: relative;
    width: 100px;
    height: 100px;
    background-color: red;
    left: 300px;
  }

  .d2 {
    float: left;
    width: 100px;
    height: 100px;
    background-color: sandybrown;
  }

效果:

要是把div1设成display: absolute的话。。。

  .d1 {
    float: left;
    position: absolute;
    width: 100px;
    height: 100px;
    background-color: red;
    left: 300px;
  }

  .d2 {
    float: left;
    width: 100px;
    height: 100px;
    background-color: sandybrown;
  }

效果:

综上,结合起来也非常简单,看起来只是简单的加法,暂时似乎没什么难理解的嗯嗯。

 

参考:

https://blog.csdn.net/qq_36595013/article/details/81810219

https://www.cnblogs.com/guolao/p/9048308.html

https://blog.csdn.net/qq_27346075/article/details/82288242

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值