display:inline-block元素之间空隙的产生原因和解决办法

2023-11-13

display:inline-block是一种布局方法,它相比于与浮动、定位最大的不同就是其没有父元素的匿名包裹特性,这使得display:inline-block属性的使用非常自由,可与文字,图片混排,可内嵌block属性元素,可以置身于inline水平的元素中。

在CSS布局中,如果我们想要将一些元素在同一行显示,其中的一种方法就是把要同行显示的元素设置display属性为inline-block。但是你会发现这些同行显示的inline-block元素之间经常会出现一定的空隙,这就是“换行符/空格间隙问题”

<!DOCTYPE html>
<html>
<head>
  <title>display:inline-block元素之间空隙的产生原因和解决办法</title>
  <style type="text/css">
  	.parent .child {
      display: inline-block;
      background-color: #fdfd04;
      width: 100px;
      height: 100px;
    }
  </style>
</head>
<body>
  <div class="parent">
    <div class="child">child1</div>
    <div class="child">child2</div>
  </div>
</body>
</html>

页面效果:注意被设置display:inline-block的元素之间的间隙

 

空隙产生的原因

元素被当成行内元素排版的时候,元素之间的空白符(空格、回车换行等)都会被浏览器处理,根据white-space的处理方式(默认是normal,合并多余空白),原来HTML代码中的回车换行被转成一个空白符,在字体不为0的情况下,空白符占据一定宽度,所以inline-block的元素之间就出现了空隙。这些元素之间的间距会随着字体的大小而变化,当行内元素font-size:16px时,间距为8px。

解决空隙的办法

办法一:解决元素之间的空白符

<!-- 将前一个标签结束符和后一个标签开始符写在同一行 -->
<div class="parent">
  <div class="child">child1
  </div><div class="child">child2
  </div>
</div>
<!-- 将所有子元素写在同一行 -->
<div class="parent">
  <div class="child">child1</div><div class="child">child2</div>
</div>

缺点:代码的可读性变差。

方法二:为父元素中设置font-size: 0,在子元素上重置正确的font-size

<div class="parent" style="font-size: 0px">
  <div class="child" style="font-size: 16px">child1</div>
  <div class="child" style="font-size: 16px">child2</div>
</div>

缺点:inline-block元素必须设定字体,不然行内元素中的字体不会显示。 增加了代码量。

方法三:为inline-block元素添加样式float:left

缺点:float布局会有高度塌陷问题,点我获取解决办法

方法四:设置子元素margin值为负数

.parent .child + .child {
  margin-left: -2px
}

缺点:元素之间间距的大小与上下文字体大小相关;并且同一大小的字体,元素之间的间距在不同浏览器下是不一样的,如:font-size:16px时,Chrome下元素之间的间距为8px,而Firefox下元素之间的间距为4px。所以不同浏览器下margin-right的负值是不一样的,因此这个方法不通用。

注意:当marigin-right使用相对单位em来表示时,Chrome下可以正常去除间距,而Firefox下元素之间有重叠。

方法五:最优解在这,设置父元素,display:table和word-spacing

.parent{
  display: table;
  word-spacing:-1em; /*兼容其他浏览器,题主还未验证*/
}

点我了解,几个关于diaplay:table布局神器的绝妙应用场景 

解决空隙问题之后的页面效果:

与君共勉:再牛逼的梦想,也抵不住傻逼般的坚持!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

display:inline-block元素之间空隙的产生原因和解决办法 的相关文章

  • 力扣:287. 寻找重复数

    给定一个包含 n 1 个整数的数组 nums 其数字都在 1 n 范围内 包括 1 和 n 可知至少存在一个重复的整数 假设 nums 只有 一个重复的整数 返回 这个重复的数 你设计的解决方案必须 不修改 数组 nums 且只用常量级 O
  • QT 手动触发一个槽函数

    QT 手动触发一个槽函数 1 使用emit关键字即可 创建一个信号 2 然后在需要的地方使用 就可以了 3 要注意的是 4 自定义界面控件的信号与槽函数 在对ui界面的控件添加槽函数的时候 直接右键添加即可 在构造函数内也不会看到conne
  • phpcms thumb缩略图调用图片失真的解决方法

    thumb 函数用于缩放图片 问题起源于调用方式缺少参数 当原图大小与缩略图比例不一致会出现图片失真错位的问题 其表现形式为 string thumb string imgurl int width 100 int height 100 i
  • Redis系列2-单节点安装

    一 下载压缩包 链接 https pan baidu com s 1IvXq xxZI3YckPHxXFwH9w 提取码 hghj 二 打开master主节点 先拍快照 1 配置阿里云yum源 下载配置文件 wget O etc yum r
  • 【C++入门到精通】C++入门 —— 类和对象(了解类和对象)

    目录 一 类和对象的历史由来 二 面向过程和面向对象的初步认识 三 类 1 引子 2 类的定义 3 类的访问限定符及封装 访问限定符 访问限定符解释说明 struct 与 class 的区别 1 默认访问级别 2 继承权限 默认的继承方式
  • wildfly 配置 pinpoint

    wildfly版本10 pinpoint版本1 8 4 set JAVA OPTS JAVA OPTS Djboss modules system pkgs org jboss logmanager com navercorp pinpoi
  • debian和archlinux下使用fcitx5-rime中州韵输入法之双拼及美化

    1 安装fcitx5和fcitx5 rime 中州韵输入法 apt install fcitx5 fcitx5 rime 2 启用fcitx5 debian用im config im config archlinux用 nano xprof
  • 使用反射技术实现的导入Excel文件到数据库的公共方法

    还是干脆 利索直接上代码最实惠 1 定义接口类IImportService public interface IImportService
  • R语言—随机抽样

    文章目录 专题 随机抽样 简单随机抽样 sample函数 srswor函数 srswr函数 分层抽样 专题 随机抽样 简单随机抽样 从总体中抽取样本的方法很多 最常用的方法是简单随机抽样 简单随机抽样 从容量为N的总体中 任意抽取n个单位作
  • consul学习与常用命令和使用教程

    目录 consul是什么 常用命令 API 实例1 新建服务API 注册服务 查询服务 consul是什么 Consul是分布式的 高可用的 可横向扩展的用于实现分布式系统的服务发现与配置 consul就是提供服务发现的工具 做服务发现的框
  • pyqt5按钮点击时传递参数(通过lambda表达式)

    pyqt5中按钮点击事件的响应 常见的是下面的方式 self btn clicked connet self click method 现在想在按钮click的时候能够传递参数 可以借助lambda表达式 self btn clicked
  • 数字IC手撕代码---百题斩

    前言 本篇导览目录 用来索引笔者写的其他手撕代码文章 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手
  • 线性代数的本质(六)——线性空间

    文章目录 线性空间 线性空间 子空间 坐标与同构 线性变换与矩阵 基变换与坐标变换 线性空间 线性空间 Grant 普适的代价是抽象 仔细分析就会发现 关于向量空间的一切概念及有关定理都不依赖于向量的具体表现形式 有序数组 也不依赖于向量加
  • 17、SysTick—系统定时器

    17 SysTick 系统定时器 文章目录 17 SysTick 系统定时器 1 SysTick简介 2 SysTick寄存器介绍 3 SysTick 定时实验 3 1 硬件设计 3 2 软件设计 本章参考资料 Cortex M3 内核编程
  • 【硬件电子】基础知识点学习记录

    眼图 USB信号质量判断通过下面哪个参数来判断 A 眼图 B 电压 C 信噪比 D 失真度 解析 眼图测试主要是用来检测高速串行传输的信号质量 本题选A 眼图 是由于示波器的余辉作用 将扫描所得的每一个码元波形重叠在一起 从而形成眼图 眼图
  • numa节点间CPU利用率不均衡 - wakeup affinity

    最近遇到服务器numa节点间cpu利用率不均衡 清除sched domain的flags中的AFFINE WAKEUPS标志位是一个优化方法 但是如果直接将AFFINE WAKEUPS关闭 将无法充分利用L2 L3 cache缓存命中带来的

随机推荐

  • JMeter软件的安装(超详细教程)

    JMeter软件的安装 超详细教程 1 jdk的安装 1 1jdk的环境变量配置 2 JMeter的安装 1 1JMeter的环境变量配置 3 JMeter的运行 第一个问题 为什么下载JMeter要先下载jdk 因为JMeter是Apac
  • 数据库还原-bak文件

    数据库还原 我知道有俩种方式 一种方式是直接在数据库上操作 一种是在数据库里用代码还原 第一种方法 1 数据库上右击 选择还原文件和文件组 2 选择目标数据库 选择bak文件 确定即可还原数据库 一般情况下这样就可以还原数据库了 但有时会报
  • nginx报错:./configure: error: C compiler cc is not found, gcc 是已经安装了的

    源码安装nginx报错 找不到gcc 但是实际上gcc是存在的 如下 configure checking for OS Linux 3 10 0 957 el7 x86 64 x86 64 checking for C compiler
  • GJB1188A校验C语言算法

    GJB1188A校验和算法 先将2个字节数据拼接为一个字 16字节 然后循环右移 之后模2算法合成 按位异或 就是 运算符 最后再反向移位 循环右移 消息队列中第一个字不移位 第二个右移1位 第三个右移2位 按位异或 相同为0 不同为1 消
  • rk3399 Android9.0 ota升级失败

    rk3399 Android9 0 ota升级失败 问题 在rk3399 Android9 0 项目中需要 ota 功能 user版本编译完ota升级包后 在同版本整包升级时遇到如下问题 抓到的logcat内容如下 1044 2343 D
  • 数据安全风险分析及应对策略研究

    报告从理论与实践层面对当前企业面临的内外部数据安全风险进行分析与研究 完成了以下几方面的探索 一是梳理了当前数据安全面临的突出问题 二是提出了数据安全体系建设的行动思路和关键举措 三是提出了数据安全建设发展建议 关注公众号 互联互通社区 回
  • angular自动化测试--protractor

    前戏 面向模型编程 测试驱动开发 先保障交互逻辑 再调整细节 by 雪狼 为什么要自动化测试 1 提高产出质量 2 减少重构时的痛 反正我最近重构多了 痛苦经历多了 3 便于新人接手 angular自动化测试主要分 端到端测试和单元测试 很
  • 专访戴文渊:第四范式(现在)是一家怎样的公司?

    李根 发自 凹非寺 量子位 报道 公众号 QbitAI 第四范式创始人及CEO戴文渊 第四范式是一家备受关注的公司 仅创始团队成员来看 哪一个不是计算机 机器学习领域响当当的名字 戴文渊是ACM2005全球冠军 百度机器学习系统带队打造者
  • RecyclerView中item布局的"match_parent"属性失效--LayoutInflate的深入了解

    用recyclerview 给item布局使用了match parent属性 运行后不起作用 查了下 是在onCreateViewHolder中加载布局时候出了问题 一开始用的View Inflate方法 查看源码后 发现View infl
  • Java学生个人信息录入

    编写 Java 程序显示学生的个人信息 定义类Student 该类中应该有三个私有属性 姓名 name 年龄 age 性别 sex 输入 第一行为一个数 表示录入学生个数 第二行依次为学生姓名 年龄 性别 最后一行输入一个学生的姓名 输出
  • 【selenium】python+selenium+unittest,关于每次执行完一个测试用例都关闭浏览器等时间较长的问题之解决方案...

    我一直在思考第一个博客应该写什么 然后我就解决了开通博客后解决的第一个问题 择题不如撞题 如果大多数人和我一样 接触python selenium unittest是从selenium IDE开始的话 你也一定会遇到这样的问题 我们写了5个
  • 论文阅读_大模型_ToolLLM

    英文名称 ToolLLM Facilitating Large Language Models to Master 16000 Real world APIs 中文名称 TOOLLLM 帮助大语言模型掌握16000多个真实世界的API 文章
  • telnet出现Connection closed by foreign host

    2018 10 26 执行命令 telnet smtp exmail qq com 465 出现信息 root pengman Desktop telnet 10 223 30 128 7027 Tring 10 223 30 128 70
  • 50 道 Java 基础编程练习题

    https gold xitu io post 58a4276f61ff4b006c899609
  • CMake 入门实战(精)

    http www hahack com codes cmake 从实例入手 讲解 CMake 的常见用法 Contents 什么是 CMake 入门案例 单个源文件 多个源文件 自定义编译选项 安装和测试 支持 gdb 添加环境检查 添加版
  • Java/JDK 21正式发布!15个特性一览

    订阅专栏 JDK 21已经于2023年9月19日正式发布 本文总结了JDK 21发布的新特性 发布版本说明 根据发布的规划 这次发布的 JDK 21 将是一个长期支持版 LTS 版 LTS 版每 2 年发布一个 上一次长期支持版是 21 年
  • s24服务器维护时长,服务器维护:艾锑人告诉您Mbps和mb/s换算知识

    影响我们一生百倍差距的四大效应 观察者效应 你的世界是什么样是由你的观察决定的 这个效应是在 潜能突破 研习营课堂上发现的 我们有个练习叫三生万物 每个人都会成为一次观察者角色 当大家在成为其他角色时 他们总是发现不了自己的问题 无论我们怎
  • 7.opencv——边缘检测( 拉普拉斯(Laplacian),Sobel,Canny边缘检测)

    边缘检测 边缘检测 拉普拉斯 Laplacian 边缘检测 Sobel边缘检测 Canny边缘检测 拉普拉斯 Laplacian Sobel Canny对比 边缘检测 qquad 各类图像中 由于不同物体对电磁波的反射特性不同 在物体与背景
  • Windows中使用GCC介绍

    Windows中使用GCC介绍 GCC介绍 GCC是由许多组件组成的 GCC原名为GNU C语言编译器 GNU C Compiler 只能处理C语言 但其很快扩展 变得可处理C 后来又扩展为能够支持更多编程语言 如Fortran Pasca
  • display:inline-block元素之间空隙的产生原因和解决办法

    display inline block是一种布局方法 它相比于与浮动 定位最大的不同就是其没有父元素的匿名包裹特性 这使得display inline block属性的使用非常自由 可与文字 图片混排 可内嵌block属性元素 可以置身于