html/css解决inline-block内联元素间隙的多种方法总汇
序
display有几种属性:
inline是内联对象,比如<a/> 、 <span/>标签等,可以“堆在一起”显示,宽高由内容决定,不能设置;
block是块对象,比如<div/>、<p/>标签等,要占一整行,但是宽高可以自定义;
为了弥补inline和block的不足,又扩充了inline-block属性;inline-blcok可以将对象呈递为内联对象,而内容作为块对象呈递。
但是display:inline-block;在IE6/7中不兼容:解决办法:
display:inline-block;*dsiplay:inline;*zoom:;
为什么会有间隙
inline元素之间本身就存在间隙,是不是这个间隙引起的呢?最终原因是由于inline元素中间的空白符引起的,解决办法:就是去掉空白符。
解决方案
1、改变书写结构
<ul>
<li>item1</li><li>item2</li><li>item3</li><li>item4</li><li>item5</li>
</ul>
<ul>
<li>
item1</li><li>
item2</li><li>
item3</li><li>
item4</li><li>
item5</li>
</ul>
<ul>
<li>item1</li
><li>item2</li
><li>item3</li
><li>item4</li
><li>item5</li>
</ul>
<ul>
<li>item1</li><!--
--><li>item2</li><!--
--><li>item3</li><!--
--><li>item4</li><!--
--><li>item5</li>
</ul>
以上几种均可以完美的达到去除间隙的作用。但是,从代码的可读性上看,或多或少有一些不足。如果使用到了打包工具或者自写脚本,在上线前将响应HTML代码打包成一行,即可。
2、使用font-size:0
 .space {
     font-size: ;
    -webkit-text-size-adjust:none;//兼容Chrome
 }
 .space a {
     font-size: 12px;
 }
基本上可以解决大部分浏览器下inline-block元素之间的间距(IE7等浏览器有时候会有1像素的间距)。不过有个浏览器,就是Chrome, 其默认有最小字体大小限制,因为,考虑到兼容性,我们还需要添加: -webkit-text-size-adjust:none;
3、使用margin负值
 @media screen and (-webkit-min-device-pixel-ratio:) { div { margin-right: -8px; } }/*谷歌 HACK 方法*/
除谷歌外的其他浏览器间隙是4px,使用margin:-4px; 唯独谷歌是 双倍的8px,需要给谷歌单独设置 margin:-8px;
4、使用letter-spacing或word-spacing
 .space {
     letter-spacing: -3px;
 }
 .space a {
     letter-spacing: ;
 }
该方法基本可以搞定所有浏览器 ,不过Opera浏览器下有蛋疼的问题:最小间距1像素,然后,letter-spacing再小就还原了。
 .space {
     word-spacing: -6px;
    display: inline-table;/*兼容Chrome*/
 }
 .space a {
     word-spacing: ;
 }
word-spacing的负值只要大到一定程度,其兼容性上的差异就可以被忽略。因为,貌似,word-spacing即使负值很大,也不会发生重叠。
5、丢失结束标签
<ul>
<li>item1
<li>item2
<li>item3
<li>item4
<li>item5
</ul>
此方法虽然可以解决此问题,但是在Doctype为xhtml时将报错,所有方法是否适用须视情况而定。
6、W3C推荐 导航方法(兼容IE6等)
<style type="text/css">
body,div,h1,ul,li{margin:; padding:;}
ul,li{list-style:none;}
a{text-decoration: none;}
.nav a{background: red;color:#fff;padding: 10px 20px;margin-right: -4px;line-height: 40px;*margin-right: -8px;/* ie 下面也是 -8px*/}
@media screen and (-webkit-min-device-pixel-ratio:) { .nav a { margin-right: -8px; } }/*谷歌 HACK 方法*/
.nav ul li{display:inline;}
.nav a:hover{text-decoration: underline;}
</style>
<div class="nav">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">服装城</a></li>
<li><a href="#">食品</a></li>
<li><a href="#">团购</a></li>
<li><a href="#">夺宝岛</a></li>
<li><a href="#">闪购</a></li>
<li><a href="#">金融</a></li>
</ul>
</div>
办公资源网址导航 https://www.wode007.com
不使用hack方法的话,每个li紧挨着即可,不要留空格等间隙。
7、YUI 3 CSS Grids的处理
 .yui3-g {
     letter-spacing: -.31em; /* webkit */
     *letter-spacing: normal; /* IE < 8 重置 */
     word-spacing: -.43em; /* IE < 8 && gecko */
 }
 .yui3-u {
     display: inline-block;
     zoom: ; *display: inline; /* IE < 8: 伪造 inline-block */
     letter-spacing: normal;
     word-spacing: normal;
     vertical-align: top;
 }
8、其他方法
 li {
     display:inline-block;
     background: orange;
     padding:10px;
     word-spacing:;
     }
 ul {
     width:%;
     display:table;  /* 调教webkit*/
     word-spacing:-1em;
 }
 .nav li { *display:inline;}
结语
其他去除间距的方法肯定还有,欢迎大家通过评论方式进行补充。
html/css解决inline-block内联元素间隙的多种方法总汇的更多相关文章
- block(块级元素)和 inline(内联元素) 的区别
		block(块级元素)和 inline(内联元素) 的区别 (2009-01-05 10:32:07) 转载▼ 标签: 杂谈 分类: div+css div这样的块级元素,就会自动占据一定矩形空间,可 ... 
- inline(内联元素)和block(块级元素) 的区别
		块级元素,默认是独自占据一行的.比如是<p>.<h1>.<h2>.<h3>.<h4>.<h5>.<h6>.<u ... 
- css position, display, float 内联元素、块级元素
		position属性:position属性指出一个元素的定位方法.有4种可能值:static, relative, absolute or fixed: static:默认值,元素按照在文档流中出现的 ... 
- CSS font-size: 0去除内联元素空白间隙
		我们在编写HTML标签的时候,通常会使用换行,缩进来保证代码的可读性.同时,在编写CSS样式的时候,也会需要把一些元素设置为inline或inline-block.这样一来,有时在页面中会出现意外的空 ... 
- 转帖 css的块元素、内联元素、内联块元素、display属性、浮动、定位
		块元素 块元素,也可以称为行元素,布局中常用的标签如:div.p.ul.li.h1~h6.dl.dt.dd等等都是块元素,它在布局中的行为:1.支持全部的样式.2.如果没有设置宽度,默认的宽度为父级宽 ... 
- 18 12  27  css  盒模型使用  以及相关技巧问题  元素溢出  块元素、内联元素、内联块元素
		盒子模型的实际尺寸 盒子的width和height设置的是盒子内容的宽和高,不是盒子本身的宽和高,盒子的真实尺寸计算公式如下: 盒子宽度 = width + padding左右 + border左右 ... 
- CSS 中的内联元素、块级元素以及display的各个属性的特点
		CSS的内联元素和块级元素 块级元素<h1>-<h6>.p.dt是不可以内联块级元素的 1.block和inline这两个概念是简略的说法,完整确切的说应该是 block-le ... 
- CSS 中的内联元素、块级元素、display的各个属性的特点
		CSS的内联元素和块级元素 块级元素<h1>-<h6>.p.dt是不可以内联块级元素的 1.block和inline这两个概念是简略的说法,完整确切的说应该是 block-le ... 
- css中块级元素、内联元素(行内元素、内嵌元素)
		Block element 块级元素 顾名思义就是以块显示的元素,高度宽度都是可以设置的.比如我们常用 的<div>.<p>.<ul>默认状态下都是属于块级元 ... 
随机推荐
- Java实现 洛谷 P1618 三连击(升级版)
			import java.util.Arrays; import java.util.Scanner; public class Main { private static Scanner cin; p ... 
- WebService之Spring+CXF整合示例
			一.Spring+CXF整合示例 WebService是一种跨编程语言.跨操作系统平台的远程调用技术,它是指一个应用程序向外界暴露一个能通过Web调用的API接口,我们把调用这个WebService的 ... 
- k8s学习-安全
			4.8.安全 4.8.1.概念 一些内容可参考4.6.2.Secret的内容 说明 Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务.API Server 是集群 ... 
- intput子系统
			1.按键驱动程序的第一个版本:day07/04 //内核模块的基本要求 init.h module.h LICENSE struct cdev btn_cdev; b ... 
- 02.快捷键及基本dos命令
			无论是使用Windows.Linux操作系统,还是在IDE中,快捷键都是系统本身的标配,事实上,Ctrl+C.V这样的操作,可以帮我们节省大量的时间,如果在IDE中编写代码,除了代码本身,将其余所有的 ... 
- TCP 三次握手的意义
			概述 在网络的传输层协议中, 存在着两大悍将: TCP 和 UDP . 从前, 我傻傻的以为自己对他们虽谈不上精通, 但还是知道的, 但是, 我错了, 我被自己问住了, 我傻了. 啥也不是. UDP ... 
- Excel只想显示一部分日期,怎样把其余部分隐藏起来?
			问题:只想显示一部分日期,怎样把其余部分隐藏起来? 方法:分列 Step1:选中需要修改的单元格——数据——分列. Step2:固定宽度——点击下一步. Step3:在建立分列处单击鼠标(若想取消 ... 
- Mysql:bit类型的查询与插入
			原文链接:https://www.cnblogs.com/cuizhf/archive/2013/05/17/3083988.html Mysql关于bit类型的用法: 官方的资料如下: 9.1.5. ... 
- Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)
			1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ... 
- Android学习笔记Intent二
			上篇随笔大概写了了Intent学习的大纲,这篇通过代码理解下Intent的ComponentName属性的使用 ComponentName,中文意思是组件名称,通过Intent的setsetCompo ... 
