一. 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使其变成块级元素并设置高度,才不会使其后面的元素受到影响。
