float属性

父级坍塌现象

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style type="text/css">
  7. * {
  8. margin:;padding:;
  9. }
  10. .container{
  11. border:1px solid red;width:300px;
  12. }
  13. #box1{
  14. background-color:green;float:left;width:100px;height:100px;
  15. }
  16. #box2{
  17. background-color:deeppink; float:right;width:100px;height:100px;
  18. }
  19. #box3{
  20. background-color:pink;height:40px;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25.  
  26. <div class="container">
  27. <div id="box1">box1 向左浮动</div>
  28. <div id="box2">box2 向右浮动</div>
  29. </div>
  30. <div id="box3">box3</div>
  31. </body>
  32. </body>
  33. </html>

例子如上:.container和box3的布局是上下结构,上图发现box3跑到了上面,与.container产生了重叠,但文本内容没有发生覆盖,只有div发生覆盖现象。这个原因是因为第一个大盒子里的子元素使用了浮动,脱离了文档流,导致.container没有被撑开。box3认为.container没有高度(未被撑开),因此跑上去了。

>>>>解决方法:

1、固定高度

给.container设置固定高度,一般情况下文字内容不确定多少就不能设置固定高度,所以一般不能设置“.container”高度(当然能确定内容多高,这种情况下“.container是可以设置一个高度即可解决覆盖问题。

或者给.container加一个固定高度的子div:

  1. <div class="container">
  2. <div id="box1">box1 向左浮动</div>
  3. <div id="box2">box2 向右浮动</div>
  4. <div id="empty" style="height: 100px"></div>
  5. </div>
  6. <div id="box3">box3</div>

但是这样限定固定高度会使页面操作不灵活,不推荐!

2、清除浮动(推荐)。

clear语法:
clear : none | left | right | both

取值:
none : 默认值。允许两边都可以有浮动对象
left : 不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许有浮动对象

但是需要注意的是:clear属性只会对自身起作用,而不会影响其他元素。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: ;
  9. }
  10.  
  11. .r1{
  12. width: 300px;
  13. height: 100px;
  14. background-color: #7A77C8;
  15. float: left;
  16. }
  17. .r2{
  18. width: 200px;
  19. height: 200px;
  20. background-color: wheat;
  21. float: left;
  22. clear: left;
  23.  
  24. }
  25. .r3{
  26. width: 100px;
  27. height: 200px;
  28. background-color: darkgreen;
  29. float: left;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34.  
  35. <div class="r1"></div>
  36. <div class="r2"></div>
  37. <div class="r3"></div>
  38.  
  39. </body>
  40. </html>

把握住两点:1、元素是从上到下、从左到右依次加载的。

2、clear: left;对自身起作用,一旦左边有浮动元素,即切换到下一行来保证左边元素不是浮动的,依据这一点解决父级塌陷问题。

思考:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: ;
  9. }
  10.  
  11. .r1{
  12. width: 300px;
  13. height: 100px;
  14. background-color: #7A77C8;
  15. float: left;
  16. }
  17. .r2{
  18. width: 200px;
  19. height: 200px;
  20. background-color: wheat;
  21. float: left;
  22. clear: both;
  23.  
  24. }
  25. .r3{
  26. width: 100px;
  27. height: 200px;
  28. background-color: darkgreen;
  29. float: left;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34.  
  35. <div class="r1"></div>
  36. <div class="r2"></div>
  37. <div class="r3"></div>
  38.  
  39. </body>
  40. </html>
  1. '''
  2.  
  3. .clearfix:after { <----在类名为“clearfix”的元素内最后面加入内容;
  4. content: "."; <----内容为“.”就是一个英文的句号而已。也可以不写。
  5. display: block; <----加入的这个元素转换为块级元素。
  6. clear: both; <----清除左右两边浮动。
  7. visibility: hidden; <----可见度设为隐藏。注意它和display:none;是有区别的。
  8. visibility:hidden;仍然占据空间,只是看不到而已;
  9. line-height: ; <----行高为0;
  10. height: ; <----高度为0;
  11. font-size:; <----字体大小为0;
  12. }
  13.  
  14. .clearfix { *zoom:;} <----这是针对于IE6的,因为IE6不支持:after伪类,这个神
  15. 奇的zoom:1让IE6的元素可以清除浮动来包裹内部元素。
  16.  
  17. 整段代码就相当于在浮动元素后面跟了个宽高为0的空div,然后设定它clear:both来达到清除浮动的效果。
  18. 之所以用它,是因为,你不必在html文件中写入大量无意义的空标签,又能清除浮动。
  19. <div class="head clearfix"></div>
  20.  
  21. '''

3、overflow:hidden

overflow:hidden的含义是超出的部分要裁切隐藏,float的元素虽然不在普通流中,但是他是浮动在普通流之上的,可以把普通流元素+浮动元素想象成一个立方体。如果没有明确设定包含容器高度的情况下,它要计算内容的全部高度才能确定在什么位置hidden,这样浮动元素的高度就要被计算进去。这样包含容器就会被撑开,清除浮动。

position(定位)

1 static

static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。

2  position: relative/absolute

relative: 相对定位。

相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。

注意:position:relative的一个主要用法:方便绝对定位元素找到参照物。

absolute: 绝对定位。

定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

重点:如果父级设置了position属性,例如position:relative;,那么子元素就会以父级的左上角为原始点进行定位。这样能很好的解决自适应网站的标签偏离问题,即父级为自适应的,那我子元素就设置position:absolute;父元素设置position:relative;,然后Top、Right、Bottom、Left用百分比宽度表示。

另外,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: ;
  9. }
  10. .outet{
  11. /*position: relative;*/
  12.  
  13. }
  14. .item{
  15. width: 200px;
  16. height:200px ;
  17. }
  18. .r1{
  19. background-color: #7A77C8;
  20. }
  21. .r2{
  22. background-color: wheat;
  23. /*position: relative;*/
  24. position: absolute;
  25. top: 200px;
  26. left: 200px;
  27. }
  28. .r3{
  29. background-color: darkgreen;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34.  
  35. <div class="item r1"></div>
  36. <div class="outet">
  37.  
  38. <div class="item r2"></div>
  39. <div class="item r3"></div>
  40. </div>
  41.  
  42. </body>
  43. </html>

总结:参照物用相对定位,子元素用绝对定位,并且保证相对定位参照物不会偏移即可。

3  position:fixed

fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这 是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。

在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: ;
  9. }
  10. .back{
  11. background-color: wheat;
  12. width: %;
  13. height: 1200px;
  14. }
  15. span{
  16. display: inline-block;
  17. width: 80px;
  18. height: 50px;
  19. position: fixed;
  20. bottom: 20px;
  21. right: 20px;
  22. background-color: rebeccapurple;
  23. color: white;
  24. text-align: center;
  25. line-height: 50px;
  26.  
  27. }
  28. </style>
  29. </head>
  30. <body>
  31.  
  32. <div class="back">
  33. <span>返回顶部</span>
  34. </div>
  35. </body>
  36. </html>

CSS部分的更多相关文章

  1. Matplotlib数据可视化(3):文本与轴

      在一幅图表中,文本.坐标轴和图像的是信息传递的核心,对着三者的设置是作图这最为关心的内容,在上一篇博客中虽然列举了一些设置方法,但没有进行深入介绍,本文以围绕如何对文本和坐标轴进行设置展开(对图像 ...

  2. CSS的未来

    仅供参考 前言 完成<CSS核心技术与实战>这本书,已有一个多月了,而这篇文章原本是打算写在那本书里面的,但本章讲解的内容,毕竟属于CSS未来的范畴,而这一切都还不能够确定下来,所以这一章 ...

  3. 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

    记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...

  4. 前端css兼容性与易混淆的点

    一.常用的骨灰级清除浮动 .clearfix:after { content: "."; display: block; height:; clear: both; visibil ...

  5. 理解CSS外边距margin

    前面的话   margin是盒模型几个属性中一个非常特殊的属性.简单举几个例子:只有margin不显示当前元素背景,只有margin可以设置为负值,margin和宽高支持auto,以及margin具有 ...

  6. 理解CSS视觉格式化

    前面的话   CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...

  7. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  8. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  9. 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  10. 梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画

    CSS动画并不是绝对比JavaScript动画性能更优越,开源动画库Velocity.js等就展现了强劲的性能. 一.两者的主要区别 先开门见山的说说两者之间的区别. 1)CSS动画: 基于CSS的动 ...

随机推荐

  1. ML(附录4)——拉格朗日乘数法

    基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=C 的约束条件下的极值的方法.其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将 ...

  2. js过滤输入的emoji表情

    因为emoji表情是Unicode编码, 在某些流浪器上会显示乱码, 有的数据库字节不够也无法存储, 网上有很多解决此类问题的办法, 最简单的莫过于将emoji表情替换成文本, 比如 [表情][表情] ...

  3. js正则表达式只能是数字、字母或下划线

    //只能是数字.字母或下划线 function isValid(str) { var reg = /^\w+$/g; return reg.test(str); }

  4. Python中列表(list)、字典(dict)排序的程序

    Python3 中的排序,在 Sorting HOW TO 中已经讲得很清楚了.来个实际的例子,对下面的这个 list 依据创建时间排序: pages = [{'title': '十年学会程序设计', ...

  5. PCA原理解释

      上图讲述的两组数据,可以看到左图的数据离散度比较大,相关性比较弱,右图数据的相关性比较强:我们在使用PCA的时候,就是要将相关性强的数据进行降维,以减少处理的数据量. 那么怎么描述数据的相关性呢? ...

  6. Executor与ExecutorService

    ExecutorService 接口继承了 Executor 接口,是 Executor 的子接口. Executor 接口定义了 execute()方法用来接收一个Runnable接口的对象,而 E ...

  7. RedHat如何关闭防火墙

    1.查看防火墙是否已开启 #可以查看到iptables服务的当前状态. service iptables status​ 上图表示防火墙已关闭. 2.关闭防火墙 关闭防火墙的方法为:   1)永久性生 ...

  8. OpenWrt路由器通过LuCI界面实现Guest SSID功能

    转自: http://blog.ltns.info/linux/guest_ssid_over_openwrt_router/ 之前尝试过 Tomato路由器设置VLAN实现Guest SSID功能, ...

  9. javaweb下载中的一个问题

    如果你发现,response头以及contentType都已经设置没错,但出现浏览器将下载的文件内容显示到新窗口 那么解决方案就是在请求的时候不要产生新的窗口

  10. AXI Quad SPI

    AXI Quad SPI 信息来源