清除行内元素之间HTML空白的几种解决方案

行内块(inline-block)是非常有用的特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时,行内元素之间的空白有时候显示在屏幕上那是相当的讨厌

 

至今我还记得年轻是在IE6上开发的那些苦逼日子,特别希望IE浏览器采用 inline-block 的显示方式.
行内块(inline-block)是非常有用的,特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时。
问题来了,HTML源码中行内元素之间的空白有时候显示在屏幕上那是相当的讨厌。
当然,有一些技巧(方法)可以用来清除他们:比如粗暴地完全删除空白,或者其他的方法:

解决方案1: font-size:0;
最好的方法是在外层元素上设置font-size:0;同时在内层元素上指定字体具体的大小。

复制代码
代码如下:

ul.inline-block-list { /* 比如 ul 或者 ol元素 */
font-size: 0;
}
ul.inline-block-list li {
font-size: 14px; /* 设置具体的字体大小 */
}

为了抵消外层元素的字体属性,在内层元素必须指定 font-size 属性,当然这很简单。
假若代码是一种复杂的嵌套关系,那么你可能不好去计算或指定这些字体属性,但在大多数情况下,这就是你想要的效果!

解决方案2: HTML 注释
这种方法比较渣,但是效果也不错。使用HTML的注释标记顶替元素之间的空白:

复制代码
代码如下:

<ul>
<li>Item content</li><!--
--><li>Item content</li><!--
--><li>Item content</li>
</ul>

一个字来形容: 渣.如果用2个字来形容,那就是"渣渣",用3个字来形容,"解决了"。

解决方案3: 指定margin属性值为负数
和方案2类似,这个也比较渣。可以使用行内元素的margin属性来抵消空白:

复制代码
代码如下:

ul.inline-block-list li {
margin-left: -4px;
}

这是最糟糕的解决方案了,因为你必须根据具体情况去计算,有时候还不对。你应该尽量避免这样做。

虽然这些方案都不是很理想,但是如果不这样处理,那你的HTML代码结构可能就非常混乱,成为标准的垃圾代码。
因为行内元素非常好用,所以这并不是一个小心避免的雷区,作为开发人员,学会处理这种空白问题也是很重要的。

时间: 2024-07-28 13:58:26

清除行内元素之间HTML空白的几种解决方案的相关文章

【原】行内元素产生水平空隙是bug吗

重构工程师们在设计代码时,有喜欢手动删除行内元素之间产生的额外空隙,并通过设置margin或padding来获取想要间距吗?如代码: <div class=""><span class="bgr">去掉了间距</span><span class="bgr">去掉了间距</span><span class="bgr">去掉了间距</span>&l

[HTML/CSS]盒子模型,块级元素和行内元素

目录 概述 盒子模型 块级元素 行内元素 可变元素 总结 概述 在div+css中,了解块级元素和行内元素还是非常有必要的,比如:对行内元素使用width属性就会失效.虽然自己不是做前端的,但是,在项目中,曾经也弄过从前端布局,也吃过这方面的亏.今天,群里有朋友问起这个,就趁着学习一下,也算是查漏补缺吧,虽然,谈不上精通,但是了解,还是很有必要的. 盒子模型 css盒子模型分为两种,一种是遵循w3c标准的标准盒子模型,另外一种就是IE盒子模型. 标准盒子模型 IE盒子模型 通过上面两张图可以看出

CSS块元素和行内元素的相互转换

块元素和行内元素可以使用display进行相互转换 display:inline ->转为行内元素(例如div) display:block ->转为块元素(例如a) 例: <html> <head> <title>块元素和行内元素的相互转换</title> <link rel="stylesheet" style="text/css" href="test.css" />

Css块内元素和行内元素

行内元素(inline element),又叫内联元素: 内联元素可容纳文本或者其它内联元素,常见的内联元素有<span>.<a>.<input>. 块元素(block element): 块元素一般都从新行开始,可以容纳文本.其它内联元素和其它块元素. 即使内容不满一行,块元素也要把整行占满,而且会换行显示,常见的块元素有<div>.<p>. 某些CSS属性可能对行内元素不生效,这与浏览器的版本和类型有关, 因此,要尽可能使用块元素定位. 例:

行内元素、块元素都有哪些

行内元素只占内容的宽度,块元素不管内容多少都要占全行,下面为大家介绍下常见的行内元素及块元素有哪些,感兴趣的朋友可以参考下,希望对大家有所帮助   1.行内元素只占内容的宽度,块元素不管内容多少都要占全行. 2.行内元素只能容纳文本和其他行内元素,块元素可以容纳行内元素和块元素.(与浏览器有关) 3.有些css属性对行内元素不生效,建议尽可能使用块元素定位.(与浏览器有关) 4.常见的行内元素有:<a>.<span>.<input type="xxx"&g

解决css中inline-block元素之间有空白问题解决办法

 代码如下 复制代码 <!DOCTYPE html> <html>     <head>         <meta charset="UTF-8" />         <style type="text/css">             * {                 margin: 0;                 padding: 0;             }           

CSS网页制作教程:display属性行内元素和块级元素

文章简介:内联(行内)元素.块级元素区别. A:行内就是在一行内的元素,只能放在行内:块级元素,就是一个四方块,可以放在页面上任何地方. B:说白了,行内元素就好像一个单词:块级元素就好像一个段落,如果不另加定义的话,它将独立一行出现.C:一般的块级元素诸如段落<p>.标题<h1><h2>....列表,<ul><ol><li> .表格<table>.表单<form>.DIV<div>和BODY<

CSS行内对齐的黑魔法

本文和以前的文章类似,orange 尽量带给大家分享实际项目中的坑怎么填,当然只是提供思想,方法很多欢迎讨论,还有就是对于刚上手前端的新人不是特别友好,没关系,涉及到基础知识我会对应的进行指引,给出链接或给出提示,大家可以自行 Google(百度). 说到行内对齐大家可能会想到类似水平对齐,垂直对齐总结类型的文章,既然我们叫 黑魔法 就不会是基础的对齐教程,基础教程的文章好多,大家想必都知道多种方法实现对齐 <!--more--> 项目背景 还是 orange 所在公司的移动端项目,上案例 截

求教如何去除table每行之间的空白间隙?

问题描述 <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type&qu