垂直居中百分比高度工具栏中的图像/图标

时间:2013-06-30 08:55:08

标签: css html5 cordova vertical-alignment statusbar

我正在为PhoneGap应用程序编写状态栏。它需要看起来像这样:

____________________________________________________________
|[Icon] [Logo]            [Text]               [Icon][Icon]|
------------------------------------------------------------

图标是相同尺寸的方形图像(条形高度的50%,垂直居中),但高度与徽标不同,应该填充100%的条形高度。该文本是当前页面标题。

状态栏高度是总屏幕高度的百分比,我不能使用固定高度。我目前的结构如下:

<div class="statusbar">
  <div class="left">
    <img src="a.png" class="icon" />
    <img src="logo.png" class="logo" />
  </div>

  <span class="ptitle">Text</span>

  <div class="right">
    <img src="b.png" class="icon" />
    <img src="c.png" class="icon" />
  </div>
</div>

我尝试在适当的地方使用display: table;display: table-cell;,但图标高度(设置为100%)最终会填满整个屏幕,除非我将它们设置为position:absolute;这使我无法将它们并排放置。

如何在垂直居中的同时放置这些组件(左中右)?

2 个答案:

答案 0 :(得分:1)

这是怎么回事?

/* page set up */
html, body { height:100%; margin:0; }

/* diagnostic coloring */
.statusbar { background:#FFC; }

/* status bar height is percentage of screen height  */
.statusbar { height:20%; }

/* icon heights to be 50% of status bar. logo height to be 100% of status bar.
   All vertically centered */
.logo { height:100%; }
.icon { height:50%; }
img { vertical-align: middle; }

/* line box positioning */
.statusbar { text-align:justify; }
.statusbar > div { display:inline-block; height:100%;}
.statusbar:after { content:''; width:100%; display: inline-block;}

JSFiddle:http://jsfiddle.net/hAq2E/3/

答案 1 :(得分:1)

根据您的要求,这里有一个类似的答案(相同的基本方法),其中使用了行高,并将高度调整为内容:

http://codepen.io/gcyrillus/pen/dlvCp

header * {display:inline-block;
  vertical-align:middle;
  line-height:1.2em;
  margin:0 10px;
}
header {
  text-align:justify;
  line-height:0;
  background:#bbb;
  padding:0;  
  box-shadow:0 0 5px;
}
header:after {
  content:'';
  display:inline-block;
  width:99%;
  vertical-align:top;

}