由居中问题想到的inline-block的间距问题

PS:文章是自己学习中遇到的疑惑,以及自己搜索的解决方案,其中多有不足,欢迎指正。

开始关注到inline-block之间的间距问题还是在设置居中的时候遇到的。话不多说先上居中代码:

html结构(尽管吐槽我的命名吧...)

<div class="big">
    <div class="small"></div>
</div>

css样式

        .big {
            width: 400px;
            height: 400px;
            background-color: pink;
            text-align: center;
        }
        .big:before {
            content: "";
            display: inline-block;
            height: 100%;
            vertical-align: middle;
        }
        .small {
            display: inline-block;
            width: 200px;
            height: 175px;
            background-color: darkred;
            vertical-align: middle;
        }

css代码中并没有太难的知识,这样的运行出来的效果是这样式的:

近乎完美的居中效果对不,而且并没有通过设置margin或者position来处理,这样就能解决在不同浏览器下面像素差距的问题。

但是细心的人已经发现其实small在左右并不是居中的,左边看起来像是被扇了一巴掌,肿肿的。。。

然后这一巴掌会造成一个我郁闷了很久的问题,我修改了一下css样式

.small {
            display: inline-block;
            width: 400px;          /* 我把子盒子的宽度改为了400px和父盒子的宽度一样一样的 */
            height: 175px;
            background-color: darkred;
            vertical-align: middle;
        }

这样到底会出现什么效果呢?上图

我擦类,明明子盒子和父盒子宽度一样,怎么还上天了呢?不对,怎么还下地了呢?  哦,这时候已经不能称之为盒子了,我觉得把子盒子看作一个图片会更加的合适。

于是创造的伪类before(注意已经 display: inline-block;)和small就产生了一个间距,这个间距导致small不能完整的显示在父盒子内,于是就出现了换行。

那么想要让small能够完整的显示在父盒子内的话就必须清除掉行内块元素之间的间距。

大神的解决方案传送门:戳这里

看完个人觉得如果盒子内没有其它文字设置需求的话设置font-size还是一个十分简洁有效的方法,而且还可以清除掉图片下边的几像素的距离。

当然如果盒子内还有其它文字需求可以单独设置字体大小或者直接用margin的负值来解决也可以。

				
时间: 2024-07-31 14:14:22

由居中问题想到的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

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元素的特点是:  和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图

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

关于 inline block 元素之间的空格

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

[CSS3] CSS Display Property: Block, Inline-Block, and Inline

Understanding the most common CSS display types of block, inline-block, and inline will allow you to get the most out of your HTML and use CSS Frameworks like Bootstrap to their fullest. Takeway: Inline: Can NOT add height and width. But can add marg

自适应居中

一.窗体居中 1 position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; /*height: 50px; width: 165px; */ 简析: position:固定位置显示(absolute|fixed): [absolute:窗口大小由上层position为absolute.fixed.relative的子父关系窗口决定:fixed:窗口大小由上层层position为fixed的子父关系窗口决定] t

多种居中方法

1.快标签自身水平居中: 当一个有宽度的块标签设置margin:0 auto时将实现自身的水平居中,示例脚本如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>float</title> <style type="text/css"> #container { margin: 0 auto; width: 90

理解vertical-align或“如何竖向居中”&lt;转&gt;

在各种技术论坛里经常会有这样的问题提出,“我如何能将这个东西竖向居中?”这个问题通常会跟随着这样一句话,“我使用了 vertical-align:middle,但是不管用! ” 这个问题其实有三个层面的原因 HTML布局通常都不是专门针对竖向呈现而设计的.这很自然,一般文字占宽会自动扩展,内容的高度是依据内容的多少和有效宽度而定.很显然,横向宽度和横向布局很容易实现:竖向高度和布局被动跟随横向布局适应. vertical-align:middle没有按预期的设想起作用的原因通常是程序员没有理解其