消除li横排后空隙

浏览器预览后,咦,为啥跟预想的不一样呢?为啥<li>之间会有空白框框呢?

原因分析:

笔者在网上看了一些资料,并没有一个确切的答案,但较为可信的原因是:浏览器的默认行为是把inline元素间的空白字符(空格换行tab)渲染成一个空格,也就是我们上面的代码<li>换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度

解决方案:

知道了原因,就可以寻找解决办法了,

方法一:既然是因为<li>换行导致的,那就可以将<li>代码全部写在一排,如下

<div class="wrap">
<h3>li标签空白测试</h3>
<ul>
<li class="part1"></li><li class="part2"></li><li class="part3"></li><li class="part4"></li>
</ul>
</div>

方法二:我们为了代码美观以及方便修改,很多时候我们不可能将<li>全部写在一排,那怎么办?既然是空格占一个字符的宽度,那我们索性就将<ul>内的字符尺寸直接设为0,将下面样式放入样式表,问题解决。

.wrap ul{font-size:0px;}

方法三:本来以为方法二能够完全解决问题,但经测试,将li父级标签字符设置为0在Safari浏览器依然出现间隔空白;既然设置字符大小为0不行,那咱就将间隔消除了,将下面代码替换方法二的代码,目前测试完美解决。同样随来而来的问题是li内的字符间隔也被设置了,我们需要将li内的字符间隔设为默认。

.wrap ul{letter-spacing: -4px;}

之后记得设置li内字符间隔

.wrap ul li{letter-spacing: normal;}

结束语:

这个空白间隔不仅仅是将<li>设置为display:inline-block;后会出现,其他元素被设置为内联块状元素后都会出现这样的问题,所以此方法并不仅仅适用于<li>标签间的空白,其他的也同样适用。

很好的文章,解决了自己的问题,为加深印象,自己摘抄了一遍。原文:http://www.iyaxi.com/2016-06-30/1019.html

时间: 2024-10-14 05:13:06

消除li横排后空隙的相关文章

ul的li在消除默认样式后会缩进显示的解决方案

ul在{list-style:none;}后会缩进显示li的内容,如下图显示: 要想实现li和左边对齐,则需要对ul设置样式{margin:0;padding:0;}即可:

IE6/IE7中li底部4px空隙的Bug

当li的子元素中有浮动(float)时,IE6/IE7中<li>元素的下面会产生4px空隙的bug. 代码如下: <ul class="list"> <li><div>vapour</div></li> <li><div>百度</div></li> <li><div>淘宝</div></li> <li><

Ul li 横排 菜单

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

消除view旋转后边缘有锯齿的情况

view的layer中有个属性叫 allowsEdgeAntialiasing: 在形变后有边缘有锯齿的话 可以 view.layer.allowsEdgeAntialiasing = YES; 消除锯齿 如果直接在*-Info.plist配置 Renders with edge antialiasing = YES 会导致UIAlertView显示有问题.

如何消除选定TextBox后的光标但又不失去焦点。

情景描述: 选择TextBox里的内容 Name:textTile 但是没有光标. 相关实现代码: [DllImport("user32", EntryPoint = "HideCaret")] private static extern bool HideCaret(IntPtr hWnd); private void textTitle_DoubleClick(object sender, EventArgs e) { HideCaret(textTitle.H

java去除字符串中重复、不重复、消除重复后字符

import java.util.HashSet;import java.util.Set; public class Main { public static void main(String[] args) { String str = "aaasd"; System.out.println("原字符串: "+str); Set<Character> set1 = new HashSet<Character>(); Set<Char

【转】消除左递归

转自:http://guanjy0129.blog.163.com/blog/static/111549445201061491810507/ 一个文法含有下列形式的产生式之一时: 1)A→Aβ,A∈VN,β∈V* 2)A→Bβ,B→Aα,A.B∈VN,α.β∈V* 则称该文法是左递归的. 然而,一个文法是左递归时,不能采取自顶向下分析法. 消除左递归方法有: a)把直接左递归改写为右递归: 设有文法产生式:A→Aβ|γ.其中β非空,γ不以A打头. 可写为:A→γA' A'→βA'|ε 一般情况

jquery怎么在点击li标签之后添加一个在class,点击下一个li时删除上一个class?

思路:点击当前li元素后是用removeClass()删除所有兄弟元素(使用siblings()获取)的class样式,然后使用addClass()为当前li添加class. 具体演示如下: 1.HTML结构:设计三个li元素 <ul id="test"> <li>Glen</li> <li>Tane</li> <li>John</li> </ul> 2.css样式:设计一个类selecte

java实现消除文法的左递归

package com.siwanghu.syntaxanalyzer.bean; public class Grammar { private String left; private String right; private int id; private static int ID = 0; public Grammar() { super(); id = ID++; } public Grammar(String left, String right) { super(); this.