CSS中的float和margin的混合使用

在最近的学习中,在GitHub上找了一些布局练习,我发现了我自己对布局超级不熟悉(很难受)。

在以前的学习CSS过程中,感觉使用CSS就记住各个属性的属性值以及作用就OK了,但是实际上呢?呵呵一笑。不说了,太伤心了,进入正题吧!

最近我使用float和margin布局,加深了我对这两个一起使用的理解。(新生可以看一下,大神请忽略

float属性

float: left | right | none | inherit

当然最常用的还是前面两个:向左浮动向右浮动

浮动最主要的特点:脱标

脱离标准流,处于更加高级的层面,影响父元素和后面元素的布局,这里就不具体介绍了。

margin属性

这里主要讲margin-leftmargin-right

margin-left: 设置元素的左外边距。
margin-right: 设置元素的右外边距。

总的来说,这个两个属性的字面理解还是很容易的,但是越简单的东西越不要小看。

重点

以下代码:

html:

<div class="box">
    <div class="zi_box1">1</div>
    <div class="zi_box2">2</div>
    <div class="zi_box3">3</div>
    <div class="clear"></div>
</div>

CSS:

.box {
            background-color: #555555;
            width: 600px;
            height: 200px;
        }
        .zi_box1 {
            float: left;
            background-color: #c23232;
            width: 200px;
            height: 100px;
        }
        .zi_box2 {
            float: left;
            background-color: chartreuse;
            width: 200px;
            height: 100px;
        }

        .zi_box3 {
            float: left;
            background-color: blue;
            width: 200px;
            height: 100px;
        }
        .clear {
            clear: both;
        }

最后实现的效果图:

三个子盒子充满父盒子,因为但他们宽度可以在父盒子里面撑开。

如果父盒子撑不开呢?

加大一个子盒子的宽度,序号为3的盒子

zi_box3 {
    width: 300px;
}

效果图如下:

那么第三个盒子则会另外起一行。

结合margin使用时

在第一代码的基础上,增加一个margin值

zi_box1 {
    margin-left: 20px;
}

这时候,由于三个盒子的宽度加上margin值大于父盒子的宽度,所以盒子3就会另起一行

反之,给盒子3设置一个外边距的值,盒子1和盒子2不设置外边距,是不是盒子3也会另外起一行呢?答案是肯定的,因为他们的宽度已经超过父盒子的值了。

实现三列布局

在不改变DOM的顺序的情况下,使盒子3盒子1盒子2的顺序呢?是不是就可以充分使用margin这个属性了。最开始白痴的我(很少练习布局吧,大神就不要喷我了,我只是个菜鸟)

白痴代码

.zi_box1 {
     margin-left: 200px;
}
.zi_box2 {
     margin-left: 200px;
}

.zi_box3 {
     margin0left: -400px;
}
//这里很天真的想法,以为每个元素是单独行动

这样写的效果图:

我当时就傻了,这是什么玩意。

但是在最后的摸索中,我知道原因了,最最最最重要的就是DOM的执行顺序

造成这样的原因就是:盒子1先解析,margin-left: 200px,那么这样盒子3也就去了第二行; 再盒子2解析,margin-left:200px,那么盒子2也去了第二行,因为第一行已经有600px这么宽的长度了。最后解析盒子3,margin-left:-400px,盒子向前移动400px,不就造成了这样的效果图嘛。

这样想的,就是指考虑片面的,而不是全局的

实现三列布局的最终代码

.zi_box1 {
     margin-left: 200px;
}
.zi_box2 {
     margin-left: 0px;
}

.zi_box3 {
     margin0left: -600px;
}

效果图

可以简单的这样理解

盒子1向右移动200px,那么盒子2和盒子3也会向右移动200px,具体的效果图如下

那么盒子3移动到前面去,是不是需要600px的距离啊(是不是很容易懂,嘻嘻),当然这只是我的片面理解,也不完全是对的。
在这种思维模式下,还要注意一点:当超出的部分盒子还是会遵守float的规则的。

那么float: right和margin-right是一样的道理。

这是我的第一篇博客,写的太菜,不要笑我哟。

喜欢我的话,点个关注吧!

(0)

相关推荐

  • 4.CSS中float导致的高度坍塌问题及解决方法

    高度坍塌:浮动元素布局导致的问题 高度坍塌的根源:浮动盒子脱离了常规流,因此常规流盒子进行高度计算时,不会考虑浮动盒子的高度. <!DOCTYPE html> <html lang= ...

  • CSS样式中大于号的使用及Css中处理继承方法

    继承在一定程度上让程序在编写的过程中更加方便,但是有时候也会给我们的程序带来一定的困扰,所以认真的学习继承的原理,以及处理的方法很重要.下面是Css中处理继承的一个方法. 在一段CSS代码中见到一个大 ...

  • [css] 第117天 你知道CSS中的字母"C"代表什么吗?

    今日试题: 你知道CSS中的字母"C"代表什么吗? 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我每天多 ...

  • [css] 第106天 CSS中的calc()有什么作用?

    今日试题: CSS中的calc()有什么作用? 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己). 前端面试 ...

  • [css] 第73天 在实际编写css中你有遇到过哪些浏览器兼容性的问题?怎么解决的?

    今日试题: 在实际编写css中你有遇到过哪些浏览器兼容性的问题?怎么解决的? 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我 ...

  • [css] 第64天 举例说明css中颜色的表示方法有几种

    今日试题: 举例说明css中颜色的表示方法有几种 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己). 前端面 ...

  • PhotoShop阴影效果转换成css中box

    UI设计师根据需要设计出阴影效果,那么前端如何快速得到相应的参数呢. 阴影效果.png混合模式:PhotoShop提供了多种混合模式,但是CSS3只支持正常模式(normal).颜色: 阴影颜色.对应 ...

  • css中的文本和字体

    CSS 文本属性可定义文本的外观.通过文本属性,我们可以改变文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等.而颜色是通过CSS最经常的指定CSS 字体属性定义文本的字体系列.大小.加粗 ...

  • CSS中的多列(Multi-column) 属性

    多列(Multi-column) 属性属性描述CSScolumn-count指定元素应该分为的列数3column-fill指定CSS如何填充列3column-gap指定列之间的差距3column-ru ...