display : -webkit-box-inline 的理解

发现:

最近在做移动端的东西,说起移动端弹性盒子布局真是无往不利,用起来特别爽,我也是偶尔间发现的这个属性并且它的用法,在网上基本查不到这个属性的资料(个人看法)。如果没有听说过(display:box)的朋友建议去别人家的博客看看CSS3就可以直接command+w了,由字看意,是不是能联想到  display:inline 这个属性,不知道的可以看看我的上一篇随笔, 之所有在前面加上-webkit-是因为太多人吧inline-box理解成内联盒子,-webkit是webkit内核的浏览器对于css新属性的实验性质支持。

概念:

display:box | inline-box 叫做伸缩布局盒模型,这个属性是最早的版本,但移动端支持的不错,最新标准时display:flex | inline-flex

我们首先可以这么想 display:inline-box 是一个具有 display:inline特性的并且也具有 display:box 特性的一个组合体,它只能显示盒子内大小的东西并且可以使用display:box的一系列属性。

实例:

我们先上一段代码:

1  <style>
 2         * {
 3             padding:0;
 4             margin: 0;
 5         }
 6         .content{
 7             background-color:#ddd;
 8         }
 9 
10         .content1{
11             background-color: #0f0;
12         }
13 
14         .content2{
15             background-color: #0000ff;
16         }
17 
18         .content{
19             display: -webkit-box;
20         height: 300px;
21         }
22 
23         .content{
24             -webkit-box-orient: horizontal;
25         }
26 
27         .content .content2,
28         .content .content1{
29             -webkit-box-flex: 1;
30         }
31 
32         .content .content1{
33             width: 40px;
34         }
35 
36     </style>
37 <body>
38     <div class="content">
39         <div class="content1">固定的盒子</div>
40         <div class="content2">产品的名称<br/>产品的介绍</div>
41     </div>
42 </body>

运行以后细心的朋友会发现,我给content1盒子设置了40px的宽度,但是它没有任何效果,原因是-webkit-box-flex: 1;它补充了左右2个盒子的大小,到这里会有人骂我,"如果想保持这个特性就直接把 content1 加上 display: inline-block 就可以了么,用的着你这样唧唧歪歪!”

原因

但我想说的是如果我想让里面的文字垂直居中呢? 你说你有办法,我也相信有办法,但是如果里面的内容是一张图片呢?如果我们想让图片垂直居中,但同时不想让图片变形呢?是不是费点劲?肯定会有这样的需求“左边图片,右边上面是产品标题,下面是产品介绍” 这里我们第一联想到的就是盒子的pack和align,里面的元素基本上都会垂直居中,于是我们将content1 改成-webkit-box 并且加上box-pack:center; box-align:center;属性 这个时候我们发现里面的内容确实垂直居中了但是宽度还是没有变化。

这时候试着将 content1的盒子改成 -webkit-inline-box  我们会惊喜的发现:

1.盒子的大小变成40px了

2.盒子内的文字也垂直居中了

3.带有inline特点的盒子 竟然能够改变大小

这时候我们重新总结一下,能够改变自身大小而且初始化大小只有盒子内容积的第一印象肯定是 inline-block ,这时候我不由的惊叹了这么好用的特性竟然没发现很多人在用!我这里我再总结一下。

display : -webkit-inline-box

拥有以下特性:

  1. 拥有display:inline-block的特性:将对象昂呈递为内联对象,但是对象的内容作为块对象呈递,旁边的内联对象会被呈递在同一行内,允许空格。 我的粗俗解释 - 盒子初始化时只能够容纳子元素的容积大小,并且可以改变盒子本身大小。
  2. 拥有display:box 特性,能够使用CSS3其内特性

个人觉得运用的合理的话这个属性特别好用。

最终示例代码:

1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
 6     <title></title>
 7     <style>
 8         * {
 9             padding:0;
10             margin: 0;
11         }
12         .content{
13             background-color:#ddd;
14         }
15 
16         .content1{
17             background-color: #0f0;
18         }
19 
20         .content2{
21             background-color: #0000ff;
22         }
23 
24         .content,
25         .content .content2{
26             display: -webkit-box;
27             display: -moz-box;
28             display: box;
29         }
30 
31         .content .content2,
32         .content .content1{
33             -webkit-box-align: center;
34             -moz-box-align: center;
35             box-align: center;
36             -webkit-box-pack: center;
37             -moz-box-pack: center;
38             box-pack: center;
39         }
40 
41         .content {
42             height: 300px;
43         }
44 
45         .content{
46             -webkit-box-orient: horizontal;
47             -moz-box-orient: horizontal;
48             box-orient: horizontal;
49         }
50 
51         .content .content2,
52         .content .content1{
53             -webkit-box-flex: 1;
54             -moz-box-flex:1;
55             box-flex:1;
56         }
57 
58         .content .content1{
59             width: 300px;
60             height: 100%;
61             display: -webkit-inline-box;
62         }
63 
64         .content .content1 img{
65             width:100%;
66         }
67 
68     </style>
69 </head>
70 <body>
71     <div class="content">
72         <div class="content1"><img src="3.jpg.680.510.jpg"></div>
73         <div class="content2">产品的名称<br/>产品的介绍</div>
74     </div>
75 </body>
76 </html>

时间: 2024-10-08 17:37:52

display : -webkit-box-inline 的理解的相关文章

区别CSS中display:box;inline;none以及HTML中 &lt;frame&gt; 标签&lt;table&gt; 标签的 frame 属性

区别display:box:display:inline:display:none三者的不同 display:block的特点是: block是Display默认的值.总是在新行上开始:该对象随后的内容自动换行;行高以及顶和底边距都可控制:宽度缺省是它的容器的100%,除非设定一个宽度:<div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子,意思是他们默认显示方式是block: display:inl

2016/2/25 1, margin auto 垂直方向测试 无效 2,margin重叠 3,哪些是块状哪些是内联 4,display:block inline 导航栏把内联转块状最常见+ 扩展

1.利用margin auto完成首页居中,并自行研究,竖直方向用margin auto,是什么效果#container{width:1002px;margin: 0px auto;}    竖直方向上margin:auto;无效.2.测试margin重叠的发生条件及现象,并自行搜索“父子div”也会发生margin重叠,写出代码及效果图. <!DOCTYPE html> <html> <head> <title>测试父子DIV-margin</tit

CSS3 display:flex和display:box有什么区别

父级元素有display:box;属性之后.他的子元素里面加上box-flex属性.可以让子元素按照父元素的宽度进行一定比例的分占空间. 如: html: <article>   <section>01</section>   <section>02</section>   <section>03</section></article> article{   width:600px;   height:200p

display:block;inline;inline-block大总结

总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通常被现实为独立的一块,会单独换一行:inline元素则前后不会产生换行,一系列inline元素都在一行内显示,直到该行排满. 大体来说HTML元素各有其自身的布局级别(block元素还是inline元素): 常见的块级元素有 DIV, FORM, TABLE, P, PRE, H1~H6, DL,

Webkit Box 模型属性备忘

-webkit-box-orient: horizontal||vertical 设置或检索弹性盒模型对象的子元素的排列方式.对应的脚本特性为boxOrient.需设置容器的display:-webkit-box; CSS样式: html,body,div{ margin:0px; padding:0px;} .orient{display:-webkit-box;-webkit-box-orient:horizontal; width:600px; margin:0 auto;} .orien

css3中display和box小结

display:table用处: 1.创建登高列 2.实现大小不确定元素的垂直居中 3.容器内子项目数目未知,子项目平均分配容器的水平空间 float必须指定其宽度才行,不确定的话就用display:table-cell box-sizing的属性值:content-box(default),border-box,padding-box. 1.content-box,border和padding不计算入width内 2.padding-box,padding计算入width内 3.border-

display:block、inline、inline-block的区别--2014/11/25

1.它们de概念.理论: 一,块元素(block): 一般是其他元素的容器元素,块元素一般都从新行开始,它可以容纳内联元素和其他块元素. 常见块元素: div,form,table,p,h1~h6,ul,ol,dl,li等等. 特点:1)总是在新行上开始: 2)高度,行高以及顶和底边距都可控制: 3)宽度默认是它的容器的100%,除非设定一个宽度. 二,内联元素(inline): 一般都是基于语义级(semantic)的基本元素.内联元素只能容纳文本或者其他内联元素.(别称:内嵌元素.行内元素)

display:inline、block、inline-block的区别 以及display其它的属性

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. nline和block可以控制一个元素的行宽高等特性,需要切换的情况如下: 让一个inline元素从新行开始: 让块元素和其他元素保持在一行上: 控制inline

display:inline、block、inline-block的区别 摘】

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是: 和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图片

display:inline、block、inline-block

display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是:  和