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

有三个i标签,中间一个放文字,前后两个放的是iconfont

效果图如下:

会发现三个i标签渲染出来之后中间会有挺大的空隙:

尝试设置边距为0无果:

解决方法:

方法一:(不推荐)

去掉三个i标签前后的空格(换行也不行),让它们连着写

的确有效果,但是这样代码太乱,看着难受;

方法二:

①将父元素font-size设置为0;

②在子元素(i)那里设置字体;

如果是span标签之间出现空隙,也可以用此方法解决。

update:

在实现如下图所示布局的时候,ul宽100%,li宽20%,inline-block并且没有左右内(外)边距,但是最后一个li还是被挤到了下一行

审查元素发现两个li之间其实是有一点空隙的(通过像素大厨测量大概是3px,通过查阅资料发现其实是4px),

解决方法:

①可以通过弹性布局display:flex来解决(默认会排列在一行,还要加一个flex-wrap:wrap让超出部分显示在下一行)

②给li设置float:left也可以解决

③同样地,ul的font-size设为0,li里面再具体设相应字体大小

④最直接但也是最不推荐的方法:li之间不换行也不要有空格

 

其实不仅是i和span,li甚至两张图片间出现缝隙的问题都可以用方法③解决。

上面提到的情况其实有共性:

①是内联元素或者内联块

②是其他元素的子元素

那么出现这个问题的原因是什么呢??

这是因为内联或者内联块是同行显示的,而为了代码的整洁和可读性,通常会在li标签之间换行;HTML默认将多个空格显示为一个,这就是为什么两个li之间(准确地说是内联或内联块元素之间)会默认有一点间距。

原因知道了,解决的思路也就变成:怎么去掉这些空格;

除了上面提到的方法,其实还有很多可以去掉间隙的方式,如加注释等,具体的可以看看这个:

 https://stackoverflow.com/questions/5078239/how-do-i-remove-the-space-between-inline-block-elements/5078297#5078297

 

 

 

 

<think>好的,我现在要解决用户的问题,如何用CSS让两个span标签并排显示。用户提到了参考引用中的display: inline-block和white-space: nowrap。首先,我需要回忆一下CSS中的display属性。 span默认是内联元素(inline),所以它们通常会在一行排列。但是如果内容太长者父容器宽度不够,可能会换行。用户可能遇到的情况是span被换行了,者希望它们保持在同一行,不受父容器宽度的影响。 根据引用[1],使用display: inline-block可以让元素保持内联的同时,可以设置宽高,而inline的话宽高会被忽略。所以正确的做法是给span添加display: inline-block,这样它们既可以并排,又可以调整尺寸。 另外,引用[2]提到使用white-space: nowrap来强制不换行。这可能适用于父容器,比如一个div包裹这两个span,设置nowrap可以防止内部元素换行。不过如果父容器宽度不够,元素可能会溢出。这时候可能需要结合overflow属性来处理。 接下来,我需要考虑如何将这些结合起来。可能的步骤是:首先将span设为inline-block,然后确保它们的容器不允许换行。比如: 父元素设置white-space: nowrap,span设置为display: inline-block。这样即使屏幕宽度不足,span也会强制在同一行显示,可能需要水平滚动者溢出隐藏。 但用户可能只是想让两个span正常并排,没有换行。所以更常见的做法是直接设置span为inline-block,者考虑使用flex布局。不过用户提到的是span标签,可能希望保持内联元素的性质,所以inline-block比较合适。 还需要注意,span之间如果有空格者换行符,可能会产生间隙。这时候可以通过设置父元素的font-size为0,者在HTML中去除空格来消除间隙。 总结步骤应该是:给每个span添加display: inline-block,可能需要父元素设置nowrap来确保不换行,同时处理可能的间隙问题。</think>要让两个`<span>`标签并排显示,可以通过以下步骤实现: --- ### 1. **使用 `display: inline-block`** 将`<span>`的显示模式设置为内联块元素,使其既保留内联特性(横向排列),又能设置宽高: ```css span { display: inline-block; } ``` *示例代码:* ```html <div class="container"> <span>第一个span</span> <span>第二个span</span> </div> ``` *效果:* 两个`<span>`横向排列,但若父容器宽度不足,仍会换行[^1]。 --- ### 2. **强制禁止换行(可选)** 若需严格禁止换行,可在父容器添加 `white-space: nowrap`: ```css .container { white-space: nowrap; } ``` *效果:* 即使父容器宽度不足,`<span>`也会强制横向排列(可能溢出)[^2]。 --- ### 3. **解决内联块元素间隙** `inline-block`元素间默认有空格间隙,可通过以下方法消除: #### 方法1:删除HTML中的空格 ```html <div class="container"> <span>第一个span</span><span>第二个span</span> </div> ``` #### 方法2:设置父容器字体大小为0 ```css .container { font-size: 0; } span { font-size: 16px; /* 重置子元素字体大小 */ } ``` --- ### 完整代码示例 ```html <style> .container { white-space: nowrap; /* 可选 */ } span { display: inline-block; padding: 8px; background: #f0f0f0; } </style> <div class="container"> <span>第一个span</span> <span>第二个span</span> </div> ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值