一. span和div的区别

1.span是行级元素,div是块级元素
2.span占用的宽度是内容的宽度,而div默认是一行。
所以一般在页面中,只有一行或不到一行文字用span,元素占据多行时用div。

二. 问题

下图是希望得到的效果

div在两个span的下方,但是如果这么写,

div和span的位置重叠,因为对span元素设置了float属性,从而导致浮动塌陷,解决办法是将span元素的高度计算进去,但是因为span元素是行级元素,无法设置高度,所以需要其他解决办法。

三. 解决办法

1. 设置div高度

这样就可以了。

2. 设置div属性display

将div设置为display: inline-block,使其既具有block元素的特性,可以设置宽度和高度,同时也具有inline元素的不换行的特性。
但是这是对第二个span元素设置的float: right属性不生效,因为display: inline-block会使元素按行依次排列,所以第二个span元素的float: right不生效,要想达到想要的效果,可以通过设置margin-left来实现。

3. 设置div属性overflow

将div设置为overflow: hidden,使其形成BFC,可以使div高度自动计算,从而和下面的div不会发生重叠。

4. 设置content属性position

将content设置为position: absolute,所以content会去找第一个position属性不为static的父元素,即html<body>,于是就会相对于html<body>向下移动30px。

这种方法虽然也可以解决问题,但是也会带来新的问题,因为position: absolute会导致content元素脱离文档流,如果在content元素下面还有其他元素,那么其他元素位置可能会和content元素重叠。
例如,

所以又发生了同样的问题,这种方法不推荐。

四. 总结

对于span和div都用时,同时span元素设置float属性时,还是对span外加div使其变成块级元素并设置高度,才不会使其后面的元素受到影响。

最新文章

  1. mysql salve从库设置read only 属性
  2. hdfs shell 命令以及原理
  3. linux web php 安全相关设置
  4. ThinkPHP缓存微信公众号access_token
  5. su:认证失败
  6. hdu 4714
  7. angularjs modal 嵌套modal的问题
  8. KVO详解
  9. thinkphp3.2开发网页实现第三方登录
  10. Java多线程学习之wait、notify/notifyAll 详解
  11. 解读“Deep Neural Decision Forests” 2015 Winner of the David Marr Prize
  12. Oracle day01 select where关键字
  13. Zookeeper 客户端命令
  14. 基于ROS完成寻迹运动
  15. SQL*Plus命令
  16. java-网络通信-索引
  17. Python导入jar包
  18. Linux环境下配置maven环境
  19. python常用模块-调用系统命令模块(subprocess)
  20. ping telnet ssh netstat

热门文章

  1. multipages-generator今日发布?!妈妈再也不用担心移动端h5网站搭建了!
  2. 关于openGL、GPUImage、ios直播相关不错的博客
  3. C/C++判断字符串是否包含某个子字符串
  4. JS - 创建只读属性
  5. JS 引擎
  6. 纯CSS3写一个立方体并在鼠标悬停的时候无限循环旋转
  7. Delphi XE2 之 FireMonkey 入门(12) - 动画(上)
  8. SharpBrowser
  9. Newtonsoft.Json源码中的C#预处理指令
  10. Jmeter学习前的基本了解