写给后端的前端笔记:浮动(float)布局

这篇文章主要面向后端人员,对前端有深刻了解的各位不喜勿喷。

起因

前一阵子我一个后端的伙伴问我,“前端的左飘怎么做?”,我立马就懵了,“居然有这种操作?”,过去看了一眼,大概知道他说的左飘就是左浮动float: left

这么看来,后端的同僚对前端css布局的了解基本处于小白阶段。

于是就有了这篇文章。

浮动

我们可以这样理解浮动,图中有页面,div1,div2,div3,div4。

<div id="div1" class="block">div1</div>
<div id="div2" class="f block">div2</div>
<div id="div3" class="f block">div3</div>
<div id="div4" class="block">div4</div>

div是占满一行的块级元素,四个div本来是由上往下有序排列的。

这时候,我们想让div2,div3从左向右排列,4个元素整体从上往下排列。所以把div2,div3设为左浮动

.block{
width: 100px;
height: 100px;
}
#div1{
background: red;
}
#div2{
background: green;
}
#div3{
background: blue;
}
#div4{
background: yellow;
border: 2px solid black;
}
.f{
float: left;
/*float: right;*/
}

我们想要的效果是这样的:


但是把div2,div3设为左浮动时,他们俩就变成从左往右排列了,他们不会影响div1(因为它是属于上一行没有浮动的东西)但他们会影响下一行的东西,下一行的元素会往上移动,而浮动的元素会置于下一行元素的上方(黄色的div4被覆盖了)。

当把div2,div3设为右浮动时,他们俩就变成从右往左排列了,也不会影响上一行。但也会影响下一行的元素,下一行元素div4依然跟div2,div3同行显示。

.f{
/*float: left;*/
float: right;
}

这时候,万一有个没有设高度的container包裹着div2,div3呢?这时候浮动就会影响container了,这时候container会变成一个高度为0的元素(也就是没被子元素撑开)。

<div id="div1" class="block">div1</div>
<div class="container">
<div id="div2" class="f block">div2</div>
<div id="div3" class="f block">div3</div>
</div>
<div id="div4" class="block">div4</div>
.container{
border: 2px solid grey;
}

清除浮动

解决以上问题的方法就是使用清除浮动clear: both(既然是写给后端,其他的方法可以不深入了解,用这个就足够了)。

我们在container结束前加入一个类名为clear的div

<div class="container">
<div id="div2" class="f block">div2</div>
<div id="div3" class="f block">div3</div>
<div class="clear"></div>
</div>
.clear{
clear: both;
}



这样一来,父元素container的高度就被撑开了,而浮动的div2和div3的布局不会影响到后面的div4。但是这样写稍微有些麻烦,我们可以利用css3的伪类:after

.clearfloat{
zoom: 1;
}
.clearfloat:after{
display: block;
clear: both;
content: "";
visibility: hidden;
height: 0;
}

这样写的好处是,我们以后只要在浮动元素的父元素添加一个名为clearfloat的class就好。

写给后端的前端笔记:浮动(float)布局的更多相关文章

  1. 写给后端的前端笔记:定位(position)

    写给后端的前端笔记:定位(position) 既然都写了一篇浮动布局,干脆把定位(position)也写了,这样后端基本上能学会css布局了. 类别 我们所说的定位position主要有三类:固定定位 ...

  2. 5月8日上课笔记-浮动float

    IO文件复制 字符流(只能对文本文件进行操作) Reader Writer 字节流(对所有文件都能操作) InputStream OutputStream 一.浮动 边框弧度 border-radiu ...

  3. 2.前端笔记之css

    title: 1.前端笔记之CSS date: 2016-04-05 23:05:51 tags: 前端 categories: w3c --- 作者:刘耀 **出处:http://www.liuya ...

  4. 前端笔记-html

    前端笔记html 前端三大利器,html(本源),css(着装),js(动作) html 学习html就是学习一套规则能够被浏览器识别,在页面中展示,一个页面只能运行一个html 标签 <> ...

  5. 【Web】CSS中的浮动float

    CSS中的float 文章目录 CSS中的float 1.float浮动属性 2.float文字环绕图片 3.float浮动的真正原因以及副作用分析 4.清除浮动的四种解决方法 5.实际应用 导航效果 ...

  6. CSS浮动(float,clear)通俗讲解

    首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...

  7. 经验分享:CSS浮动(float,clear)通俗讲解

    很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...

  8. 1.前端笔记之html

    title: 1.前端笔记之HTML date: 2016-04-04 23:21:52 tags: Python categories: Python --- 作者:刘耀 **出处:http://w ...

  9. 经验分享:CSS浮动(float,clear)通俗讲解(转载)

    很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...

随机推荐

  1. 配置mabatis,报Could not load driverClass ${jdbc.driverClassName}

    <!-- 扫描mapper --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" ...

  2. (转)rpm安装和卸载软件

    场景:在Linux中经常需要安装一些rpm软件,但是有时候安装失误就需要卸载这些软件包. 1 过程记录 1.1 安装 rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm ...

  3. (转)Spring Bean Scope 有状态的Bean 无状态的Bean

    有状态会话bean   :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一 ...

  4. ECMAScript 6 学习(二)async函数

     1.什么是async函数 2.用法 2.1基本用法 3.语法 3.1返回promise对象 3.2promise状态的变化 3.3await命令 1.什么是async函数 async函数也是异步编程 ...

  5. 简单聊聊不可或缺的Nginx反向代理服务器--实现负载均衡【上篇】

    今天又是新的一周,我养足了精神去对待新一周的工作,但是今天到公司发现还是有一点空闲时间的,所以就想与之前接触过的Nginx再交往得更深一点儿. 什么是Nginx: Nginx是一款高性能的http服务 ...

  6. ue4粒子实现流血效果

    ---恢复内容开始--- 动作/射击游戏中,击中角色时常常伴随着血花效果,增强打击感的同时,也方便了玩家对命中与否的判断. 血液效果分两块,首先是受伤部位在受击瞬间产生血雾粒子,然后在身体.地面.墙面 ...

  7. 每周问题系列 - JavaFX界面没响应,Maven编译自动忽略rt包

    本人博客文章网址:https://www.peretang.com/weekly-problem-session-week-31/ 前言 新开一个系列, 用来记录每周遇到的问题 JavaFX界面没响应 ...

  8. theOS环境搭建

    http://joeyio.com/ios/2014/01/01/make-a-mobile-substrate-tweak-using-theos/~/Doucment>: cd mytwea ...

  9. /etc/shadow,/etc/passwd,/etc/shadow,/etc/passwd文件的内容解释

    1.1 /etc/passwd文件内容格式           该目录存储的是操作系统用户信息,该文件为所有用户可见 用户名: 密码 : uid  : gid :用户描述:主目录:登陆shell 举个 ...

  10. Csharp调用基于Opencv编写的类库文件

    现在将Csharp调用基于Opencv编写的类库文件(Dll)的方法定下来,我取名叫做GreenOpenCsharpWarper,简称GOCW. 一.CLR编写的DLL部分 1.按照正常方法引入Ope ...