网页布局——float浮动布局

我的主要参考资料是[Object object]的文章

float 布局应该是目前各大网站用的最多的一种布局方式了,但是也特别复杂,这里详细讲一下

首先,什么是浮动?

浮动元素是脱离文档流的,但不脱离文本流,这是什么意思呢,用过 word 的应该知道有一种图片环绕的方式是文字环绕吧,就是这种效果。

那么它有什么特点呢

  • 对自身的影响

    • float 元素可以形成块,如 span 元素。可以让行内元素也拥有宽和高,因为块级元素具有宽高
    • 浮动元素的位置尽量靠上
    • 尽量靠左(float:left)或右(float:right),如果那一行满足不了浮动元素的宽度要求,则元素会往下掉
  • 对兄弟元素的影响
    • 不影响其他块级元素的位置
    • 影响其他块级元素的文本
    • 上面贴非 float 元素
    • 旁边贴 float 元素或者边框
  • 对父级元素的影响
    • 从布局上 “消失”
    • 高度塌陷

什么是高度塌陷,举个例子吧

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>CSS 布局</title>
 6 </head>
 7 <style>
 8 *{
 9     margin: 0;
10     padding: 0;
11 }
12 .container{
13     width: 200px;
14     background-color:red;
15 }
16
17 .left{
18     background-color: yellow;
19     float: left;    /*float会将行元素转变成块元素display:inline-block;*/
20     height: 50px;
21     width:50px;
22 }
23 .right{
24     background-color: yellow;
25     float: right;    /*float会将行元素转变成块元素display:inline-block;*/
26     height: 50px;
27     width:50px;
28 }
29 </style>
30 <body>
31     <div class="container">
32         <span class="left">left</span>
33         <span>center</span>
34         <span class="right">right</span>
35     </div>
36     <div class="container" style="height: 200px;background: blue">
37     </div>
38 </body>
39 </html>

效果如下 :

        

从图中可以看出,两个 float 元素虽然包含在第一个 container 中,但是却超出了第一个 container 的范围,在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。
但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。

解决办法有下面几种

      1.父元素设置 overflow: auto 或者 overflow: hidden

效果如下
        

      2.给父元素加一个 after 伪类(清除浮动)

    .container::after{
        content:‘‘;
        clear:both;
        display:block;
        visibility:hidden;
        height:0;
    }

效果如下     

      

1.设计一个两栏布局

首先我们要明白为什么可以用 float 实现布局。其实上面的例子我们大概就可以看出来了,黄红黄这不就是一个标准的三栏布局吗。其实并没有,我们看看下面的例子

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>CSS 布局</title>
 6 </head>
 7 <style>
 8 *{
 9     margin: 0;
10     padding: 0;
11 }
12 .container{
13     width: 400px;
14     height: 200px;
15     margin: 10px auto;
16 }
17
18 .left{
19     background-color: yellow;
20     float: left;
21     height: 100%;
22     width:100px;
23 }
24 .right{
25     background-color: red;
26     height:100%;
27 }
28 </style>
29 <body>
30     <div class=container>
31         <div class=left></div>
32         <div class=right></div>
33     </div>
34 </body>
35 </html>

  效果如下:

      

2.设计一个三栏布局

讲完两栏布局再讲一下三栏布局,思路主要是左边一个浮动元素,右边一个浮动元素。这里有个小问题,中间的元素要写在最后,因为中间元素假设有块级元素的话,会影响右边浮动元素的定位,这里演示一下

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>CSS 布局</title>
 6 </head>
 7 <style>
 8 *{
 9     margin: 0;
10     padding: 0;
11 }
12 .container{
13     width: 400px;
14     height: 200px;
15 }
16
17 .left{
18     background-color: yellow;
19     float: left;
20     height: 100%;
21     width:100px;
22 }
23 .right{
24     background-color: green;
25     float: right;
26     height: 100%;
27     width:100px;
28 }
29 .middle{
30     background-color: red;
31     margin-left: 100px;
32     margin-right: 100px;
33     height:100%;
34 }
35 .container::after{
36     content: ‘‘;
37     display: block;
38     visibility: hidden;
39     clear: both
40 }
41
42 </style>
43 <body>
44     <div class=container>
45         <div class="left"></div>
46         <div class="middle"></div>
47         <div class="right"></div>
48     </div>
49 </body>
50 </html>

  效果如下:

      

因为浮动元素会把块级元素的位置空出来,所以这里右边的浮动元素把上面的位置空了下来,所以正确的写法应该是:
  

1      <div class=container>
2         <div class="left"></div>
3         <div class="right"></div>    <!-- 掉换了位置-->
4         <div class="middle"></div>
5      </div> 

  效果如下:

      

这样我们就实现了最基本的三栏布局

原文地址:https://www.cnblogs.com/jing-tian/p/10987298.html

时间: 2024-11-05 18:54:30

网页布局——float浮动布局的相关文章

float浮动布局的应用

一个浮动(左浮动或右浮动) 垂直环绕布局(浮动和清除浮动) 左右两列布局 注意:网页设计中应该尽量避免使用浮动 1.一个浮动(左浮动或右浮动) 当一个div里面含有浮动元素和非浮动元素,IE6,7中的浮动元素会出现错位现象. 解决方案:  ①将浮动元素位于非浮动元素的前面.②非浮动设置为浮动元素.③浮动元素设置margin-top的负值. <div class="title"><span>新闻列表</span><a href="jav

21_css布局2_浮动布局.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

盒子模型、网页自动居中、float浮动与清除、横向两列布局

1.CSS包含:标准文档流,浮动,绝对定位 标准文档流的特点:从上到下,从左到右,输出文档内容 盒子模型:块级元素(div ui li dl dt p)与行级元素(span strong img input) 盒子模型:边框(border)外边框(margin)内边框(padding)内容(content) 盒子3D模型:border. content+padding .background-img.background-color.margin <html> <head> <

左边logo 右边广告图片布局 div css左右浮动布局实例

左边logo 右边广告图片布局(div css左右浮动布局实例) 一般网页头部是左边网站标志logo,右边为广告图片或电话号码图片,这里DIVCSS5为大家介绍对float浮动使用实例布局介绍. 需要div+css布局案例效果图需要div+css布局案例效果图(缩小)一.DIVCSS5实例布局技术点说明 - TOP 1.图片切出说明:首先切好左边logo图片,右边广告图片(切图注意不影响图片质量情况尽量宽度高度尺寸切小).2.采用float:left和float:right布局:一般遇到内容靠左

拜拜了,浮动布局-基于display:inline-block的列表布局——张鑫旭

一.一抹前言 没有爱的日子,时间如指尖细沙,不知不觉就流逝了.写“CSS float浮动的深入研究.详解及拓展(一)”和“CSS float浮动的深入研究.详解及拓展(二)”似乎就在不久前,然而相隔差不多有一年之久了.文章最后留下了“浮动布局更好的替代方案是什么?”后文再介绍的预告. 由于自己肚子中的货物不足以撑起一篇足够质量的文章,所以关于“浮动布局更好的替代方案是什么?”的文章一直并未动笔.好在事物总是在发展的,我也是每天都是在进步,对于列表布局的思考也愈发成熟.加上正好前不久又有人询问我“

IOS自动布局中的浮动布局(6)----MyFloatLayout横空出世

前言 在MyLayout的6大布局中,每种布局都有不同的应用场景.且每种布局的子视图的约束机制不一样:线性布局MyLinearLayout.表格布局MyTableLayout.流式布局MyFlowLayout.浮动布局MyFloatLayout这四种布局的子视图之间的约束是通过添加到父布局的先后顺序来决定的:框架布局MyFrameLayout中的子视图则只跟父布局视图有关,而跟添加的先后顺序无关:相对布局中MyRelativeLayout的子视图则是通过设置视图之间的依赖关系来建立约束的,而跟添

css盒子布局,浮动布局以及显影与简单的动画

08.05自我总结 一.盒子布局 1.盒子布局的组成 margin border padding content 2.margin margin是外边距,控制盒子的显示位置相对于他的上一级 left.top控制自身,right.bottom影响兄弟 3.border 宽度:border-width 颜色:border-color 透明度:transparent 样式:border-style: 常用的样式 none:没有边框 solid:实线 dashed虚线 dotted点或者方框根据浏览器不

css float 浮动是个混球

得说,在学习 CSS 的时候就一直在疑惑,横排布局干嘛要用 float 这种属性, 用了还会高度塌陷,怎么不发明些高级点的属性来完成横排布局呢, 甚至所有人都告诉我摒弃表格布局,浮动布局才是 DIV+CSS 时代的产物. 以前我是没得选,现在想想,都过去这么多年了,也许我应该回去看看. 其实当时制定 CSS 的人也许根本就没想过会用 float 来布局,最多来个 word 的那种文本环绕就不错了, 或者说布局本来不是 float 的本职工作,你听过建房子有可能用左右浮动这种办法的吗... 即便如

归纳篇(一)CSS的position定位和float浮动

近期会更新一系列博客,对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.relative:生成相对定位的元素,相对于其所在普通的文档流位置进行定位: 3.static:默认值,没有定位,元素出现在正常的文档流中; 4.fixed:老IE不支持,和absolute一致,相对于窗口进行定位,当出现滚动条时,不随着滚动而滚动: 5.sticky:(CSS3)有兼