当前位置: 首页 > Web前端 > CSS

我们都知道神奇的inline-block

时间:2023-03-31 02:06:59 CSS

inline-block展示:inline-block表示元素是内联的,即不会单独占一行,但是可以定义宽高。那么如果一个元素定义了display:inline-block但没有定义宽度呢?这个元素的宽度是多少?答案由内部元素决定,但不会超过'包含块'的宽度(前提是没有定义min-width这样的属性)。技术术语是'shrink-to-fit'(缩小到合适)。inline-block代表元素buttonbutton是一个典型的inline-block元素。我们知道在使用按钮的时候,宽度是没有定义的。按钮上的文字越多,按钮越宽。见图1:这证明了inline-block元素的第一点,宽度由内部元素决定。我们再来看,同样是一个按钮,给按钮容器一个宽度,当按钮文本超出容器宽度时,可以看到文本自动换行如下图。‘shrink-to-fit’的一个应用需求:页面上的某个文本内容是动态的,可能是几个词,也可能是一句话。然后我希望当文字少的时候显示在中间,超过一行的时候显示在左边。如何实现?核心html和css代码如下:文本内容

文本内容-文本内容-文本内容-文本内容-文本内容-文本内容-文本内容

.box{text-align:center;;}.content{显示:内联块;文本对齐:左;}看效果:可以看到,文字少的时候,显示在中间,换行的时候,显示在左边。所以为什么?仔细看页面结构会发现,box上的center作用于content元素,使得content元素居中显示,并且当文字的总宽度不超过box的宽度时,内容的宽度由文本的宽度决定。即文本总是充满内容元素,所以不管是左、中还是右,对内容元素的影响都是一样的。就像软袋装水一样,是水决定了袋子的大小。这时候袋子里全是水,自然无所谓。中、左、右。但是不止一行就不一样了,因为内容被拉长了(第一行),所以内容的左边对里面的文字有影响。non-inline-block的作用是什么?如果内容不是行内块会是什么样子?我们先分析一下。p元素是一个块级元素,所以它会自动填充一行,无论里面有多少文本。这样,内容的左边就会生效,也就是说,当文字少,文字多的时候,文字会显示在左边。看看效果是不是这样:是真的。参考张新旭新书《css 世界》的demo。