加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

html – 3个inline-block div,正好33%的宽度不适合父级

发布时间:2020-12-14 21:38:30 所属栏目:资源 来源:网络整理
导读:这是一个常见的问题,但我不知道为什么会这样。 我有一个父div,里面的div我有3个div,宽度设置为33%(完全不是33.3%!)并显示:inline-block。 在Chrome中,它的效果很好,但是在Mozilla和Opera中它并没有(我还没有在IE中测试)。我认为问题可能在算法浏览
这是一个常见的问题,但我不知道为什么会这样。

我有一个父div,里面的div我有3个div,宽度设置为33%(完全不是33.3%!)并显示:inline-block。

在Chrome中,它的效果很好,但是在Mozilla和Opera中它并没有(我还没有在IE中测试)。我认为问题可能在算法浏览器中用来计算像素大小的百分比。但是当我检查DOM指标时,我发现父项的宽度是864px,孩子的是285px(这是正确的:864 * .33 = 285.12)。但为什么不适合父母呢? 285 * 3 = 855,比父母的宽度小9px!

哦,是的,填充,边距和边框的所有div设置为0和DOM指标确认。

解决方法

HTML空间中的源代码

在HTML源代码中,当您有文本或图像行或内嵌块的元素时,如果它们之间有空格(空格,制表符或新行),则会在单个空格字符之间添加一个空白字符他们在页面呈现时。例如,在以下HTML中,四个内容之间将出现一个空格:

one
two
<img src="three.png"/>
<span style="display: inline-block;">four<span>

这对于文本行以及出现在文本行内的小图像或HTML元素非常有帮助。但是,当将内联块用于布局目的而不是在文本段落内添加内容时,会成为问题。

删除额外的空间

避免在内嵌块元素之间添加的额外4px左右的空间的最安全的跨浏览器方式是删除HTML标签之间的HTML源代码中的任何空格。

例如,如果你有一个ul与3个浮动li标签:

<-- No space,tabs,or line breaks between </li> and <li> -->
<ul>
    <li>...</li><li>...</li><li>...</li>   
</ul>

不幸的是,这损害了网站的可维护性。除了使代码不可读,它严重损害了数据和格式的分离。

如果另一个程序员以后出现,并决定将每个li标签放在源代码中的单独行上(不知道标签为何在同一行上,或者可能通过HTML Tidy运行,甚至没有机会注意到任何相关的HTML评论),突然网站有一个可能难以识别的格式错误。

考虑浮动元素

空白行为强烈地表明,使用内联块进行一般布局的目的可能不合适,可以将其用于除文本段落内的内容之外的任何内容。

此外,在某些情况下,内嵌块内容非常难以完全风格和对齐,尤其是在旧版浏览器上。

快速总结其他解决方案

>将关闭标签放在与下一个打开的标签相同的行上,它们之间没有空格。
>使用HTML注释来填充关闭标签和下一个打开标签之间的所有空格(如@Arbel建议的)。
>向每个元素添加一个负的左边距(通常为-3px或-4px,基于font-size)。我不推荐这个特别的方法。
>将容器元素的font-size设置为0或0.01em。这在Safari 5中不起作用(不确定后续版本),并且可能会干扰响应设计网站,或任何使用除px以外的字体大小单位的网站。
>使用JavaScript或jQuery从容器中删除仅空白的文本节点。这在IE8和更早版本中不起作用,因为当元素之间只有空格时,文本节点不会在这些浏览器中创建,尽管元素之间仍然添加了空格。
>为容器设置字母间距和字间距(建议为@PhillipWills)。 Further info.这需要在网站上标准化em大小,这可能不是所有网站的合理选择。
>添加文本空间崩溃:丢弃;到容器(以前称为空白 – 空间崩溃)。不幸的是,任何浏览器都不支持this CSS3 style,而且还没有完全定义标准。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读