清理浮动的三种常用方法以及如何居中一个浮动元素

千里之行始于足下

今天看到一个题目说如何居中一个float:left的元素的题目,我蛮以为用margin:0 auto 就可以解决了。然而,试验之后,发现事实并非如此,才发现自己对于这方面的知识竟是相当忙乱!于是撇下手头事务,翻书查资料温习了这部分‘简单’的内容。并总结如下。

一、清理浮动的三种方法。

当给元素设置了float属性之后,我们知道,元素便会脱离文档流的束缚,像一片水中浮动的树叶随波逐流。但是,在浮动的情况下,可能会导致网页内容出现一些我们并不想让其发生的干扰,例如其父元素的包裹作用将失去作用,假如你给父元素设置了漂亮的背景它却不见了,岂不惹人烦恼!于是,清理浮动属性带来的干扰就十分重要了。我们常常有三种方法。

方法一:在浮动元素后面添加一个标签(例如<br/>),并给此标签设置clear:both; 样式。但是其缺点是会增加多于的无用的不必要标记。

方法二:给其父元素设置浮动属性,这样会使其父元素也拥有了这项技能,也就不会影响了~但是这种做法可能会导致其它不需要浮动子元素也受到其浮动的影响。

方法三:给其父元素设置 overflow:hidden; 样式,也能达到我们需要的效果。其原理很简单,因为overflow属性定义在包含的内容对于指定的尺寸太大的情况下元素应该如何反应,当其hidden的时候父元素的边框就会紧贴着子元素。So,达到了我们需要的效果。但是其会在某些情况下产生滚动条或者截断内容,当然这种情况我们大可以谨慎操作避免的。

所以综上,我们优先考虑第三种方法,或者第二种,酌情使用~

二、如何居中一个设置了float:left的元素

对于一个没有浮动的元素,我们通常可以通过对其设置 margin:0 auto; 来实现元素的居中,但是这个方法对于浮动元素却失去了作用,其实我们可以理解的是,在脱离文档流后,浮动的力量其实就是auto的力量,所以他它会自动向左浮动。

那么,此情此景,应该怎么样来实现居中的效果呢?仔细考虑,会有这样一个方法。

首先给此元素设置一个宽度值,先设置它的 margin-left:50% ,这个时候元素的左边缘正好位于其父元素的中央,然后设置其position:relative;left:负本元素宽度的一半,这样的目的是将本元素向左移动其宽度的一半,这个时候可保证本元素的中间点位于父元素的中央。实例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>元素居中问题</title>
<style type="text/css">
#main{
  width: 70%;
  background-color: #666;
  overflow: hidden;
}
#div1{
  width:30%;
  height: 200px;
  float: left;
  background-color: blue;
  margin-left:50%;
  position:relative; left:-15%;
}
</style>
</head>
<body>
<div id="main">
  <div id="div1">
    <p>居中吧!div!</p>
  </div>
</div>
</body>
</html>

就这。再接再厉~

时间: 2024-08-04 08:34:08

清理浮动的三种常用方法以及如何居中一个浮动元素的相关文章

如何居中div?如何居中一个浮动元素?

如何居中div? 给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 如何居中一个浮动元素? <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:html5="http://www.w3.org/html5/"> <head> <meta charset="u

如何居中一个浮动元素?

CSS代码 1 width:500px; height:300px; float:left; margin-left:50%; position:relative; left:-250px; background-color:#CCC; 代码解读 首先设置块元素的宽度和高度,这里宽度是必须的,高度可以不设,我设置了块的背景色,以给大家看效果.实现居中关键在于 margin-left:50%; position:relative; left:-250px; 设置margin-left:50%;后浮

如何垂直居中元素(浮动元素&amp;居中一个&lt;img&gt;)?

1.如何居中一个浮动元素? 方法一:已知元素的高度 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /* 方法一:已知元素的高宽*/ #div1{ background-color:#6699FF; width:200px; height:20

关于清除浮动的几种方法

很多人都有研究闭合浮动元素的问题,但是解决方法却不一样,也并不是每一种方法都尽善尽美.闭合浮动元素(或者叫清除浮动)是web标准设计中经常会遇到的一个问题,因此,这里我想总结一下目前经常用到的几种方法,并比较一下他们的易用性和适用环境.如果你有更好的方法不妨提出来大家一起讨论. 问题的提出: 最简单的一种情形就是我们把一个小的.固定宽度的div元素(比如导航.引用等)和其他元素内容一起包含在一个大的div中.比如下面这段代码: <div id="outer"> <di

清除浮动的原理和方法

本文复制自 http://blog.csdn.net/clare504/article/details/39524215. 1. 问题的由来有这样一种情形:在一个容器(container)中,有两个浮动的子元素.<div>        <div style="float:left;width:45%;"></div>        <div style="float:right;width:45%;"></di

CSS 清除浮动的4种方法

此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景.<style type=”text/css”> <!– *{margin:0;padding:0;} body{font:36px bold; color:#F00; text-align:center;} #layout{background:#FF9;} #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;} #right{flo

css清除浮动的几种方法整理

此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景. <style type="text/css"> <!– *{margin:0;padding:0;} body{font:36px bold; color:#F00; text-align:center;} #layout{background:#FF9;} #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;}

css清除浮动的几种方法以及对应规范说明

css清除浮动的几种方法以及对应规范说明 1.{clear:both;}设置了clear 属性的元素,其上边框位置会紧贴浮动元素的 margin-bottom 边界位置渲染,使包含浮动元素的容器高度正常.所以适用于浮动元素后面容器之内有个非浮动元素,或是额外添加一个新的空元素. 2..after- clear-float :after{content:""; display:block; clear:both;}利用伪类添加新元素,原理同上,所以只适用于父容器最后一级子元素是浮动的,即

Json数据的序列化与反序列化的三种常用方法介绍

以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待... 本文主要介绍在Json数据的序列化与反序列化的过程中我经常用到的三种工具的基本使用方法,及其他们之间 的比较...希望能够对读者们有一些帮助... 这里介绍到的三种解析与生成Json数据的方法分别是:标准JSON解析与生成方法.使用gson解析与生成JSON数据 .使用fastJsson解析与生成JSON数据. 首先,这些工具都可以到