影响布局的inline-block的空白符的问题

  昨天切页面时,进行布局时,想改变以下方法换换口味,所以就抛弃了float方法,采用了display:inline-block方法,没想到却随之而来的带来了一个想不通的问题,那就是空白。废话不多说,上代码。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    li{ width:50px; height:20px; background-color:#C90; display:inline-block;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
</body>
</html>

效果如上图所示,每个li之间都会有空格,这影响到我们对页面的布局。

一、造成的原因

inline-block水平呈现的元素之间,如果有换行或空格分隔,那么元素之间会有间距。

二、解决的方法

1、去除元素间的空白或者换行

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    li{ width:50px; height:20px; background-color:#C90; display:inline-block;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li><li>li</li><li>li</li><li>li</li>
    </ul>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    li{ width:50px; height:20px; background-color:#C90; display:inline-block;}
</style>
</head>
<body>
    <ul class="box">
        <li>
        li</li><li>
        li</li><li>
        li</li><li>
        li</li>
    </ul>
</body>
</html>                                                                                                  
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    li{ width:50px; height:20px; background-color:#C90; display:inline-block;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li
        ><li>li</li
        ><li>li</li
        ><li>li</li>
    </ul>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    li{ width:50px; height:20px; background-color:#C90; display:inline-block;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li><!--
        --><li>li</li><!--
        --><li>li</li><!--
        --><li>li</li>
    </ul>
</body>
</html>

2、利用margin负外边距

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    li{ width:50px; height:20px; background-color:#C90; display:inline-block; margin-right:-8px;}//不过这个间距是根据字体的大小来调的,不具有普适性
</style>
</head>
<body>
    <ul class="box">
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
</body>
</html>

3、因为空白字符也是字符,所以可以设置父元素的font-size:0,子元素重新定义font-size大小;但是这种方法在Safari中是无效的。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    .box{ font-size:0;}
    li{ width:50px; height:20px; background-color:#C90; display:inline-block; font-size:12px;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
</body>
</html>

4、使用letter-spacing

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    .box{ letter-spacing:-8px;}
    li{ width:50px; height:20px; background-color:#C90; display:inline-block; letter-spacing:normal;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
</body>
</html>

//Opera浏览器下问题:最小间距1像素,然后,letter-spacing再小就还原了

5、使用word-spacing

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>inline-block的空白符</title>
<style type="text/css">
    .box{ word-spacing:-8px;}
    li{ width:50px; height:20px; background-color:#C90; display:inline-block; word-spacing:normal;}
</style>
</head>
<body>
    <ul class="box">
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
</body>
</html>
时间: 2024-10-24 06:17:55

影响布局的inline-block的空白符的问题的相关文章

CSS display:inline|block|inline-block差异

display:inline|block|inline-block三属性的区别和联系,block就是将元素显示为块级元素,inline就是将元素 显示为行内元素,CSS display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格. 详解CSS display:inline|block|inline-block的区别 ◆CSS display:block CSS display:block就是将元素显示为块级元素. blo

移动端 软键盘 弹出时 影响布局

移动端 软键盘 弹出时 会影响布局 1)前段时间作的移动端页面,因为高度只有1页所以用了height:100%;width:100%; ios下点击输入框弹出软键盘时,布局没有大影响. 当输入框可能被软键盘压到时,在一部分安卓下却出了问题,华为自带浏览器和UC会有布局上的问题. 原因可能是因为,软键盘弹出时,改变了height,使height:100%,不能达到原来的高度. 解决办法: $(document).ready(function () { $('body').height($('bod

inline block inline-block总结

一.block表示块级元素,其元素通常会单独成一块,独占一行: 二.inline表示内联元素,不会产生换行,其排版会在一行显示,直到一行被占满. 三.常见的块级元素有 DIV, FORM, TABLE, P, PRE, H1~H6, DL, OL, UL 等:常见的内联元素有 SPAN, A, STRONG, EM, LABEL, INPUT, SELECT, TEXTAREA, IMG, BR        等. 四.一般使用display:block与display:inline来改变元素的

inline,block,inline-block解析

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是:  和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图

Android软键盘弹出不影响布局的方法

The AndroidManifest.xml File android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified&q

移动端input的虚拟键盘影响布局

移动布局经常会使用绝对定位(absolute)和固定定位(fixed)来布局一个层.然后这个层上面会有一些信息,当这个层上面为input时,移动端输入信息则会弹出虚拟键盘,从而会影响我们的布局,给我们带来困扰.经常碰到却很少整理,再次碰到又是一头雾水,趁着这次有空,我把我测试成功的方法记录下来.具体看自己情况应用,纯属个人试验. 情况一.用absolute写的一个层(class名为elayer),层设置有背景颜色,然后层上面布局有input.当点击input软键盘弹出后,这个层向上面移动背景随之

display:inline/block/inline-block

display:inline; 内联元素,简单来说就是在同一行显示.display:block; 块级元素,简单来说就是就是有换行,会换到第二行.display:inline-block; 就是在同一行内的块级元素. 说概念太模糊,来个真实案例吧. <a href="#" style="display:inline;width:100px;height:100px;background:#ccc;">链接一</a><a href=&qu

UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性

很久没有写视图布局,最近发现写布局很不顺手,总结一下在处理UIScrollview的时候种种注意事项: 1. self.automaticallyAdjustsScrollViewInsets = NO; iOS7之后,当你在Nav上添加TableView的时候,你会发现tableView的位置并不是从你的起点开始的 ,这是因为在iOS7之后,如果nav上添加的第一个视图是UIScrollView的时候,系统会默认添加上64的间隔,解决方法是  你把第一个视图添加一个0.1的View使SCrol

关于 inline block 元素之间的空格

本篇文章由:http://xinpure.com/about-the-inline-block-element-between-spaces/ 说点什么 display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的... 最简单的方法就是把 inline-block 元素之间的回车删除,就是代码显示有点不美观,影响阅读. 方法总结 以下方法不保证浏览器兼容性问