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>默认状态下都是属于块级元 ...
随机推荐
- git提交拉取远程仓库
https://gitee.com/ ---- 国内服务器 https:/github.com/ ---- 国外服务器 git init ---- 初始化(创建主分支)仓库 git clone 拉取 ...
- (十一)DVWA全等级SQL Injection(Blind)盲注--手工测试过程解析
一.DVWA-SQL Injection(Blind)测试分析 SQL盲注 VS 普通SQL注入: 普通SQL注入 SQL盲注 1.执行SQL注入攻击时,服务器会响应来自数据库服务器的错误信息,信息提 ...
- 制作seata docker镜像
seata是阿里巴巴的一款开源的分布式事务框架,官方已经支持docker了,但是因为业务的需要,需要自己定制. 制作docker镜像 官方的Dockerfile.下载seata-server-1.1. ...
- LeetCode 75,90%的人想不出最佳解的简单题
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的44篇文章,我们一起来看下LeetCode的75题,颜色排序 Sort Colors. 这题的官方难度是Medi ...
- 如何通过IAM打造零信任安全架构
万物互联时代来临,面对越来越严峻的企业网络安全及复杂的(如微服务,容器编排和云计算)开发.生产环境,企业 IT 急需一套全新的身份和访问控制管理方案. 为了满足企业需求,更好的服务企业用户,青云Qin ...
- svn版本库的使用
简单案例: 1.不管在哪个盘下(比如:C盘.D盘等),都先创建文件夹(这里我新建的文件夹是“项目”),创建好了就点击去,如下: 2.在自己新建的文件夹中再新建一个新的文件夹,如下: 3.选中你的文件夹 ...
- 搜索相关性算法在 DiDi Food 中的搜索
导读:今天给大家分享的主题是搜索匹配问题在 DiDi Food 中的一些探索与应用.本文首先介绍了搜索相关性的一些背景,之后介绍了业界常见的三种匹配模型,以及在DiDi Food业务中的模型效果对比. ...
- List集合排序的方法
1.list集合中的对象实现Comparable接口 public class User implements Comparable<User>{ private Integer id; ...
- 离职冷静期文件.doc
<中华人民共和国民法典>通过十三届全国人大三次会议表决,将于2021年1月1日起施行,其中#离婚冷静期#备受关注.多方人士表示,离婚冷静期设立的出发点,不是对婚姻自由的一种破坏,而是让当事 ...
- call,apply,bind的理解
2020-03-19 call,apply,bind的理解 先说区别call, apply基本上没什么不一样,唯一不一样的地方是传参方式不同 但是bind和call,apply有区别.bind是重新绑 ...