display:inline-block替换float的问题

拜读了大神的博客以后http://www.zhangxinxu.com/wordpress/?p=1194,对float有了新的认识,尝试用display:inline-block来替换用float实现的内容。具体过程如下:

首先,我们创建几个div:

<div class="container">
    <div class="content">
        <div class="logo"></div>
        <div class="search"></div>
    </div>
</div>    

然后,设定基本样式:其中内容块设置属性display:inline-block;

.container{
        height: 100px;
        width: 100%;
        background-color: #f90;
      }
      .content{
        margin-left: auto;
        margin-right: auto;
        width: 80%;
        background-color: #a6c0f9;
      }
      .logo{
        height: 100px;
        width: 80px;
        display: inline-block;
        background-color: pink;
      }
      .search{
        height: 100px;
        width: 550px;
        background-color: green;
        display: inline-block;
        vertical-align: top;
      }

表现是这样子的:

我们发现logo和search这两个div中间有缝隙,这是我们预料到的,因为html代码中的空格也显示了出来。但是高度为什么也多出来一点(大约1px)呢?

尝试把空格全都去掉:中间的缝隙没有了,但是高度超出容器的范围还是存在。

为两个div中间加上内容,显示为:

发现下面多出来的1px消失了!

把内容去掉,用font-size:0;来解决缝隙问题:

多余的地方也清除了。

但是height多出来的地方还是不知道什么原因。把display去掉就没有这个问题,似乎是出在inline-block上,但是查了display:inline-block的其他资料,并没有找到答案,其他浏览器也都有这个问题。百思不得其解,希望了解的人能指点一二,and日后找到答案一定要来更新。

我们继续在search内添加一个input:

<div class="container">
    <div class="content">
        <div class="logo"></div>
        <div class="search">
          <input type="text" class="search_input" />
        </div>
    </div>
  </div>    

发现结果变成了这样:

给input加上border后恍然大悟,原来是因为对齐。给search加上vertical-align: top;之后,一切就显示正常啦

PS:之前学CSS,只要知道干什么了就拿来用了,出了问题也是东拼西凑的勉强解决就万事大吉,这样是非常不好的。最近发现还是要多看看专业书多查文档,掌握标准的人才能掌握天下啊~~

时间: 2024-11-14 10:55:01

display:inline-block替换float的问题的相关文章

CSS display:inline|block|inline-block差异

display:inline|block|inline-block三属性的区别和联系,block就是将元素显示为块级元素,inline就是将元素 显示为行内元素,CSS display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格. 详解CSS display:inline|block|inline-block的区别 ◆CSS display:block CSS display:block就是将元素显示为块级元素. blo

display:inline/block/inline-block

display:inline; 内联元素,简单来说就是在同一行显示.display:block; 块级元素,简单来说就是就是有换行,会换到第二行.display:inline-block; 就是在同一行内的块级元素. 说概念太模糊,来个真实案例吧. <a href="#" style="display:inline;width:100px;height:100px;background:#ccc;">链接一</a><a href=&qu

display:inline、block、inline-block的区别

block元素的特点是: 元素另起一行: 行宽高边距可控制: <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. inline元素的特点是: 和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图片的宽度,不可改变. <span>, <a>, <label>, <input>, <img>, <strong&

display:inline、block、inline-block的区别 以及display其它的属性

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. nline和block可以控制一个元素的行宽高等特性,需要切换的情况如下: 让一个inline元素从新行开始: 让块元素和其他元素保持在一行上: 控制inline

display:inline 跟 display:block 跟 display:inline-block区别

我来说句人话吧.display:inline; 内联元素,简单来说就是在同一行显示.display:block; 块级元素,简单来说就是就是有换行,会换到第二行.display:inline-block; 就是在同一行内的块级元素. 说概念太模糊,来个真实案例吧. <a href="#" style="display:inline;width:100px;height:100px;background:#ccc;">链接一</a> <a

display:inline、block、inline-block的区别 摘】

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是: 和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图片

display:inline、block、inline-block

display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是:  和

【转】display:inline、block、inline-block的区别

转自:http://www.cnblogs.com/jdonson/archive/2011/06/10/2077932.html display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就

[CSS3] CSS Display Property: Block, Inline-Block, and Inline

Understanding the most common CSS display types of block, inline-block, and inline will allow you to get the most out of your HTML and use CSS Frameworks like Bootstrap to their fullest. Takeway: Inline: Can NOT add height and width. But can add marg

2016/2/25 1, margin auto 垂直方向测试 无效 2,margin重叠 3,哪些是块状哪些是内联 4,display:block inline 导航栏把内联转块状最常见+ 扩展

1.利用margin auto完成首页居中,并自行研究,竖直方向用margin auto,是什么效果#container{width:1002px;margin: 0px auto;}    竖直方向上margin:auto;无效.2.测试margin重叠的发生条件及现象,并自行搜索“父子div”也会发生margin重叠,写出代码及效果图. <!DOCTYPE html> <html> <head> <title>测试父子DIV-margin</tit