一、前言

  平时在实现ui的设计稿的时候会遇见一些小问题,比如莫名其妙的间距,明明没有加margin和padding,但是就是会出现间距,这就是两个span标签的间距问题。我们今天就这个问题进行分析。

二、现象描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><span>hello</span><span>world</span><span>helloworld</span>
</body>
</html>

  我们看这样一段代码,他展示出来的效果是这样的

  可以看到,我们的span上没有应用任何样式,但是仍然出现了间距。
  又或者是下面这段代码;

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.inline-block {display: inline-block;width: 100px;height: 100px;border: 1px solid black;}</style>
</head>
<body><div class="inline-block"></div><div class="inline-block"></div>
</body>
</html>

  他的效果是这样的:

  我们也可以很明显的看到,两个div直接出现了间隙。那么,这个间隙到底是怎么出现的呢?

三、原因

  导致这个现象出现的原因很简单,我们知道多个空格或者回车浏览器都会解析成空格,其实,我们span与span之间敲的回车,就被解析成了空格。所以,那一点间隙,其实就是这个空格,如果不理解,看下面这段代码就能理解了。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><span>hello world</span><br><span>helloworld</span><br><span>hello</span><span>world</span>
</body>
</html>

  他的效果是这样的;

  怎么样,是不是一模一样,这下你能理解为什么我们没有加margin和padding,没有添加任何样式,他们之间也存在间距了吧?

四、解决方案

  既然知道了原因,那这个问题就很好解决了。

  • 代码中不要写空格:
    既然这个问题是空格导致的,那我们不要空格或者回车,这个问题就解决了

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><span>hello</span><span>world</span><br><span>hello</span><span>world</span>
    </body>
    </html>
    

      像上面这种写法,展现出来的效果就是:

      这样两个单词之间的间距就没有啦,不过这种写法会导致我们的代码不整洁,对于有强迫症的小伙伴来说是接受不了的,我们可以用其他的方法来解决这个问题。

  • 通过css去消除间距
      既然它出现了间距,那我们啥也不管,把它弄掉就行了,我们可以用样式把间距去掉,比如用margin/word-spacing/letter-spacing等:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body=><span>hello</span><span style="margin-left: -5px;">world</span><div style="word-spacing: -40px;"><span>hello</span><span>world</span></div>
    </body>
    </html>
    

      效果是下面这样的:

      可以看到这样也能消除间距,但是如果使用margin,不能保证在任何情况下两个单词都恰好没有间距。而自己在chrome中测试发现,word-spacing的负值足够大的情况下,不会将两个单词重叠,只会紧紧贴住。所以设置一个负值较大的word-spacing看起来是一个比较好的方法,但是不清楚在其他浏览器中是否和chrome保持一致。

  • 通过设置font-size消除间距
      这种方法是我平时喜欢用的,既然空格占了位置,那么我们把font-size设置为0,空格就不会占位置了,同时再单独设置子元素的字体大小,就能干掉这个间隙了。

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><div style="font-size: 0;"><span style="font-size: 20px;">hello</span><span style="font-size: 20px">world</span></div>
    </body>
    </html>
    

      他的效果是这样的:

五、结语

  总的来说,肯定有很多方法可以去掉这个空隙,但是最普遍的集中方法就是这几种了。同时,只要我们知道了这个空隙为何而来,我们就能对症下药,找到解决问题的办法。

span标签的间距问题相关推荐

  1. 两个span标签(或i标签)之间有间隙的问题

    有三个i标签,中间一个放文字,前后两个放的是iconfont 效果图如下: 会发现三个i标签渲染出来之后中间会有挺大的空隙: 尝试设置边距为0无果: 解决方法: 方法一:(不推荐) 去掉三个i标签前后 ...

  2. 行内标签(最常用的:a标签、img标签、span标签)

    a 标签: 功能: 从一个页面跳转到其他页面,或者是当前页面的其他位置. 属性: href :指定跳转的目标路径. 值可以是一个外部网站的地址: 也可以是一个内部网页的地址 target: _self ...

  3. 使用span标签为文字设置单独样式

    这一小节讲解<span>标签,我们对<em>.<strong>.<span>这三个标签进行一下总结: 1. <em>和<strong& ...

  4. html语言中span,html元素span标签的使用方法及作用

    html元素 标签是一个没有任何语义的行内元素,不对设置任何样式,则不会有任何视觉效果.有关该标签的使用方法及作用详解如下: 标签的定义 标签属于行内元素,无任何特殊语义. 标签主要用于定义文本样式, ...

  5. JQ和Js获取span标签的内容

    转自:https://www.cnblogs.com/anniey/p/6439021.html html: 1 <span id="content">'我是span标 ...

  6. php html class,如何使用HTML span标签的class属性?这里有关于class属性的详解

    本篇文章主要为大家讲述的就是关于HTML span标签的class属性的一些用法,这个是需要配合css样式一起来使用的,现在可以稍微说点css样式的基本,对有过基础的人来说都很容易.那现在就让我们一起 ...

  7. html5无意义标签,无意义的div和span标签

    HTML 元素是块级元素,它是可用于组合其他 HTML 元素的容器. 元素没有特定的含义.除此之外,由于它属于块级元素,浏览器会在其前后显示折行. 如果与 CSS 一同使用, 元素可用于对大的内容块设 ...

  8. 圆点html span,HTML span 标签

    定义和用法: 标签被用来组合文档中的行内元素.在行内定义一个区域,也就是一行内可以被划分成好几个区域,从而实现某种特定效果.本身没有任何属性. 在IE6下,span元素浮动时一定要把span元素放在a ...

  9. html:(8):span标签和q标签

    使用<span>标签为文字设置单独样式 这一小节讲解<span>标签,我们对<em>.<strong>.<span>这三个标签进行一下总结: ...

  10. js正则表达式匹配span标签

    1.js正则表达式匹配span标签 const spans = htmlStr.match(/<span (.*?)>(.*?)<\/span>/g) 2.js正则表达式–获取 ...

最新文章

  1. 电脑测速软件_康佳电视免费看直播,如何安装第三方软件?2个方法值得收藏...
  2. android截取字符串工具类,StringsUtil字符串工具类---灵活截取
  3. 《大道至简》一书第三版,与编辑就本书写作风格的讨论
  4. 如何让程序运行在所有CPU核心上
  5. 如何运行python代码
  6. PLC与旋转编码器的连接
  7. 【软件测试】使用C++ Test 进行静态测试
  8. Mac下打印机提示保持以备鉴定无法进行打印
  9. IT十年人生过客-十八-路过机遇
  10. Nginx负载均衡是酱紫做的
  11. Python: sys.path.append()用法
  12. 5、蓝桥杯之手机尾号评分
  13. JSTL自定义标签(三)
  14. 漫画:什么是蓝绿部署?
  15. 居间服务费用合理节税,如何进行税收筹划?
  16. 基于SSM的婚纱影楼系统
  17. Harbor安装(待补充)
  18. geni与ancestry分析
  19. linux查看日志文件内容命令tail、cat、tac、head、echo
  20. 半导体分立器件静态参数测试系统 DCT1401 天光测控

热门文章

  1. 求陈敏老师所著的《OPNET物联网仿真》中的模型IOT_Simulation.rar,万分感谢!
  2. 为什么我们买了股票就不涨被套,股票割肉就飞了?
  3. 国潮正当时,把优秀传统文化融入时代脉搏
  4. JAVA中interface接口的使用
  5. 这个夏天,飞到北纬18°去玩海——带着小样儿去三亚(二)
  6. java 前置系统报文通讯方式_基于Geronimo的银行通讯前置系统的设计
  7. 调节e18-d80nk的测量距离_没有倒车影像,用这个方法判断后方墙壁距离,这个距离感这样练习...
  8. U盘文件夹变成应用程序
  9. CloudStack快速安装使用
  10. Qt构建时出现Makefile Error 1的解决办法