写给后端的前端笔记:浮动(float)布局
写给后端的前端笔记:浮动(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)布局的更多相关文章
- 写给后端的前端笔记:定位(position)
写给后端的前端笔记:定位(position) 既然都写了一篇浮动布局,干脆把定位(position)也写了,这样后端基本上能学会css布局了. 类别 我们所说的定位position主要有三类:固定定位 ...
- 5月8日上课笔记-浮动float
IO文件复制 字符流(只能对文本文件进行操作) Reader Writer 字节流(对所有文件都能操作) InputStream OutputStream 一.浮动 边框弧度 border-radiu ...
- 2.前端笔记之css
title: 1.前端笔记之CSS date: 2016-04-05 23:05:51 tags: 前端 categories: w3c --- 作者:刘耀 **出处:http://www.liuya ...
- 前端笔记-html
前端笔记html 前端三大利器,html(本源),css(着装),js(动作) html 学习html就是学习一套规则能够被浏览器识别,在页面中展示,一个页面只能运行一个html 标签 <> ...
- 【Web】CSS中的浮动float
CSS中的float 文章目录 CSS中的float 1.float浮动属性 2.float文字环绕图片 3.float浮动的真正原因以及副作用分析 4.清除浮动的四种解决方法 5.实际应用 导航效果 ...
- CSS浮动(float,clear)通俗讲解
首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...
- 经验分享:CSS浮动(float,clear)通俗讲解
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
- 1.前端笔记之html
title: 1.前端笔记之HTML date: 2016-04-04 23:21:52 tags: Python categories: Python --- 作者:刘耀 **出处:http://w ...
- 经验分享:CSS浮动(float,clear)通俗讲解(转载)
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
随机推荐
- 使用Publish Over SSH插件实现远程自动部署
背景: 现场的部署环境开放外网环境困难,只有一台机器能够开发外网,应对该情况,所有的补丁文件需要直接在master机器上面生成,然后命令移动到其他的服务器上面去. 这里使用到了jenkins的Publ ...
- Web Service--第一次接触web service
Web Service 首发于开源中国 1. 背景 中国移动短信网关需求,要能够发送短信.开发材料只有一个短信发送配置:包括ID,password,code,url.一个jar包还有一个老旧的html ...
- 电脑装windows与Centos双系统时引导问题
(本文对电脑如何装windows系统和centos系统不进行详细赘述.) 电脑装双系统时,首先要安装windows系统,在硬盘中划分一块空闲的分区,用来安装centos系统(可以借助"软碟通 ...
- Spring依赖注入的简化配置
一, 很久很久以前, 当我们不用@Autowire注解时, 依赖注入要么通过setter方法, 要么通过构造方法; 需要在配置文件里配置一大堆property-ref.......... 二, 若使用 ...
- file-API 实现添加图片 预览缩略图(自己学习)
首先看看 "效果图" : 我们最终实现的就是点击右侧的"相机"按钮添加想要添加的图片然后可以根据需要删除(点叉删除本条)或再次添加图片,并显示缩略图....走起 ...
- ajax-jquery方法-初步入门01(整理)
-----------------------------------2017.07.21写----------------------------------------- 相比较原生javascr ...
- UICollectionView基本使用详解(OC)
概述 UICollectionView是从iOS6开始引入使用的,目前应用非常广泛,很牛逼!老外的博客也是这么说的(传送门) ## 与UITableView的初步比较 UITableView应该是大家 ...
- Angular2 VS Angular4 深度对比:特性、性能
欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ 在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一. Google的Angular团队已于3月 ...
- hdu--4148--Length of S(n)
#include<iostream> #include<string> #include<cstring> void priTable(); using names ...
- mybatis 详解(七)------一对一、一对多、多对多
前面几篇博客我们用mybatis能对单表进行增删改查操作了,也能用动态SQL书写比较复杂的sql语句.但是在实际开发中,我们做项目不可能只是单表操作,往往会涉及到多张表之间的关联操作.那么我们如何用 ...