去除inline-block之间的间隙
在使用display: inline-block;时,这些inline-block之间会有间隙,根据无双 - 《去除inline-block元素间的空隙》的说法,这个间隙是4px或者8px的距离(与浏览器有关),如果间隙是确定的,那根据这个我们就可以用CSS来避免这个间隙。根据之前的经验,也发现了可以通过改变HTML代码的结构来规避这个信息。
假设<ul>之间的<li>都是inline-block,最早我的做法是直接不换行,把所有标签连着写:
<ul>
<li>这里是文字内容</li><li>这里是文字内容</li><li>这里是文字内容</li>
<ul>
这个方法虽然有效,但的确不算最“优雅”的办法,尤其在<li>有很多例如class之类的属性的时候会很大程度地影响阅读。
从HTML结构上入手
从上面可以看出规避inline-block间隙的办法就是使HTML元素之间本身没有间隙,于是问题的思路就清楚了,因为元素的标签分为开始标签和结束标签,只要使上一组<li>的结束标签紧挨着下一组<li>的开始标签,像这样...</li><li>...就可以了,于是HTML结构还可以改成这样:
<ul>
<li>这里是文字内容</li
><li>这里是文字内容</li
><li>这里是文字内容</li>
<ul>
<!--这样上一个元素的结束标签就是与下一个元素的开始标签紧挨着的了,浏览器会认为它们没有间隙-->
还可以写成这样:
<ul>
<li>这里是文字内容</li><!--
--><li>这里是文字内容</li><!--
--><li>这里是文字内容</li>
<ul>
<!--利用注释来完成元素之间的连接,其实原理是一样的-->
也可以这样:
<ul>
<li>
这里是文字内容</li><li>
这里是文字内容</li><li>
这里是文字内容</li>
<ul>
<!--和这样:-->
<ul>
<li>这里是文字内容
</li><li>这里是文字内容
</li><li>这里是文字内容</li>
<ul>
这些方法都是通过改变HTML结构来实现元素之间无间隙,本质都是一样的。我个人比较喜欢用的是第二种方法,只需要改变一个符号的位置就可以。
从CSS上入手
除了从HTML结构上入手外,根据上面说的间隙距离是固定的,此外,这个根本上还是属于样式问题,所以还可以从CSS上来解决这个间隙。CSS解决间隙的办法有这些:
采用负边距:利用负边距来抵消间隙
ul li{
display: inline-block;
margin-right: -4px;
}
font-size:把inline-block的父元素font-size设为0也可以,因为<li>被当作inlie-block处理,所以也有内联元素的性质,因此可以用处理内联元素的属性来处理这些inlie-block
ul{
font-size: 0;
-webkit-text-size-adjust: none;
}
li{
display: inline-block;
font-size: 14px;
}
/*根据张鑫旭大神的文章,chrome浏览器会有默认最小字体大小,所以在这里要对chrome做单独的处理*/
letter-spacing和word-spacing:原理同设置font-size相同。
ul{
letter-spacing: -4px;
}
ul li{
letter-spacing: 0;
}
/*以及word-spacing,这俩的原理是一样的*/
ul{
word-spacing: -4px;
}
ul li{
word-spacing: 0;
}
结语:以上是一些我暂时认为比较通用,不会造成更大影响的处理办法。当然还有各种各样的好的处理办法,还有时候会遇到一些特殊情况,那时候就需要具体情况,具体分析,具体解决了。
参考文章:
张鑫旭 - 《去除inline-block元素间间距的N种方法》
无双 - 《去除inline-block元素间的空隙》
去除inline-block之间的间隙的更多相关文章
- GIS地理工具案例教程——批量去除多边形的之间的间隙
GIS地理工具案例教程--批量去除多边形的之间的间隙 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 问题:几乎所有的手工生产的数据,都存在多边 ...
- CSS3如何去除 inline block 元素之间多出的空格
display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...
- inline和inline-block的间隙问题
我们在前端布局的时候,会偶尔发现,在具有inline/inline-block属性的元素间存在一小段间隙,网上有些文章说这个间隙是6px,但我觉得应该是一个空格的宽度. 这里以inline-block ...
- img之间的间隙问题
前言:关于基线(base line),中线(middle line),行高(line height)的了解还是比较浅的,所以引用前辈的成果,稍带解释下 1)行高:两行文字之间"基线" ...
- 多个Img标签之间的间隙处理方法
1.多个标签写在一行 <img src="/i/eg_tulip.jpg" alt="郁金香" height="100px"/> ...
- 当li设置为line-block时,元素之间出现间隙的原因和解决方法
原因 因为浏览器默认把inline元素之间的空白符(Tab.空格.换行)渲染成一个空格.而如下述代码,两个li元素之间的换行符被渲染成一个空格,则元素之间产生了间隙. 用Chrome浏览器将场景模拟出 ...
- [原创]ie6,7中td和img之间有间隙
情形描述 开发工具:VS2010: 浏览器版本:IE6以上,火狐,谷歌: 页面布局设计:Table+Img布局: 项目预览问题:火狐,谷歌,IE8以上未出现问题,IE6,IE7图片之间有间隙. 分析原 ...
- 【Web】[原创]ie6,7中td和img之间有间隙
情形描述 开发工具:VS2010: 浏览器版本:IE6以上,火狐,谷歌: 页面布局设计:Table+Img布局: 项目预览问题:火狐,谷歌,IE8以上未出现问题,IE6,IE7图片之间有间隙. 分析原 ...
- 如何消除inline-block元素之间的间隙?
一.问题现象 在CSS布局中,如果我们想要将多个行内块元素并排,会发现同行显示的inline-block元素之间会出现一定的空隙,这就是换行符/空格导致的,叫做换行符/空格间隙. 1 <!DOC ...
随机推荐
- OAF_文件系列5_实现OAF解析XML文件javax.xml.parsers(案例)
20150729 Created By BaoXinjian
- Android 常见问题收集 (持续更新)
gridview中设置item的高度. 一.BaseAdapter中的getView中设置 AbsListView.LayoutParams param = new AbsListView.Layou ...
- bootloader制作过程
主机环境:Ubuntu10.04.4 LTS 使用工具:buildroot-201208 目 标 板:S3C2410 --------------------------------------- ...
- location.href跳转不正确
今天写这个随笔的用意是为了记录我遇到的一种情况,导致我页面无法正确跳转 location.href跳转页面其实很简单,只要附上url就可以了,但是今天我在测试一个跳转时是这么写的: location. ...
- spring security method security
参考 Spring Security 官方文档 http://www.concretepage.com/spring/spring-security/preauthorize-postauthoriz ...
- javascript对象属性的赋值解析
代码如下: function Animal(){} function Dog (age){ this.name = 'fuck you' ; this.age = age } var dog = ne ...
- 转:RTC搭建android下三层应用程序访问服务器MsSql-客户端
原文:http://www.cnblogs.com/delphi007/p/3346084.html android下stringgrid已知问题: 通过点击时获取对应行的值有问题,在win下调试正常 ...
- 转(Delphi 新窑洞):使用delphi 开发多层应用(十七)使用RTC web 服务器返回JSON
RTC作为delphi 的最专业的web 应用服务器,如果客户端要使用JSON 的话,那么使用RTC 应该也是一种 非常好的选择.下面我们做一个使用RTC web 服务器返回数据库JSON 的例子. ...
- php 连接mongodb 增查改删操作
查询 <?php $m=new MongoClient('mongodb://admin:admin@localhost:27017/admin'); $db=$m->hndb; $cc= ...
- linux网络完全与防护
7.1 网络封包联机进入主机的流程 7.1.1 封包进入主机的流程 1.经过防火墙的分析 iptables 主要功能是封包过滤 主要分析TCP/IP的封包表头来进行过滤的机制 分析的是OSI的第二 ...