如何使用CSS内联元素

时间:2016-04-14 11:38:16

标签: html css

我正在尝试将菜单栏放在我网站的顶部。 它应该像这样说: enter image description here

红色方块是我的按钮。

我的问题是我的标题和我的按钮不在同一行。所以我尝试使用一个表,但是两个都对齐了左边。 之后我使用float: right;作为我的按钮。 它现在正确对齐,但在下一行。

如何解决这个问题,以便我的按钮和标题位于同一行,并与我的照片对齐。

HTML:

<div id="topbar">
   <h1>Fahrplan</h1>
   <button type="button" id="settings"></button>
</div>

CSS:

h1 {
  height: 44px;
  margin: 0;
  color:#FFFFFF;
  text-align: center;
  font-family: Helvetica, sans-serif;
  font-size: 16px; 
  line-height: 44px;
}
#topbar button {
  height: 20px;
  width: 20px;
  float: right;
}

5 个答案:

答案 0 :(得分:4)

对于这种情况,您可以考虑使用position s。

&#13;
&#13;
#topbar {
  position: relative;
}

h1 {
  margin: 0;
  color:#FFFFFF;
  text-align: center;
  font-family: Helvetica, sans-serif;
  font-size: 16px; 
  line-height: 44px;
  background: #99f;
}
#topbar button {
  height: 20px;
  width: 20px;
  position: absolute;
  top: 50%;
  right: 5px;
  margin-top: -10px;
}
&#13;
<div id="topbar">
  <h1>Fahrplan</h1>
  <button type="button" id="settings"></button>
</div>
&#13;
&#13;
&#13;

我在position和按钮上都给了#topbar#topbar位置relative,按钮位置absolute

#topbar {
  position: relative;
}
button {
  position: absolute;
  top: 50%;
  right: 5px;
  margin-top: -10px;
}

我还使用一半高度的负边距将按钮调整为垂直居中。希望这会有所帮助。

答案 1 :(得分:2)

我建议您使用absolutetranslateY()将您的按钮垂直对齐。

Demo(注意:我在jsFiddle上使用SCSS,所以不要混淆语法)

header {
  height: 40px;
  background: tomato;
  position: relative;

  h4 {
    line-height: 40px;
    text-align: center;
  }

  button {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 10px;
  }
}

<强>解释

我正在使用position: absolute;将按钮移到右侧。对于按钮的垂直居中,您可以使用top: 50%transform在标题中间垂直轻推按钮。它将始终保持垂直居中,而不会声明任何静态height

答案 2 :(得分:1)

为了您的兴趣,以下是使用内联块的方法。

&#13;
&#13;
div > * {
  display:inline-block;
  vertical-align:middle;
}
h1 { 
  width:100%;
  text-align:center;
  margin-right:-40px;
  background-color:#4F81BD;
  color:#FFF;
  font-family: Helvetica, sans-serif;
  font-size: 16px; 
  height: 44px;
}
button {
  height: 30px;
  width: 30px;
  margin-right:-6px;
  border: 3px solid #8C3836;
  border-radius:5px;
  background-color:#C0504D;
}
&#13;
<div id="topbar">
   <h1>Fahrplan</h1>
   <button type="button" id="settings"></button>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

以下是使用http://tachyons.io

执行此操作的快速演示
<div class="bg-light-gray dt w-100">
  <div class="dtc v-mid w3"></div>
  <div class="dtc v-mid tc pv3">
    <h1 class="mv0 f5">Headline</h1>
  </div>
  <div class="dtc v-mid tr w3 pr2">
    <button class="bg-black br2 h2 w2"></button>
  </div>
</div>

CSS:     .br2 {       border-radius:.25rem;     }

.dt {
  display: table;
}

.dtc {
  display: table-cell;
}

.h2 {
  height: 2rem;
}

.w2 {
  width: 2rem;
}

.w3 {
  width: 4rem;
}

.w-100 {
  width: 100%;
}

.bg-black {
  background-color: #111;
}

.bg-light-gray {
  background-color: #eee;
}

.pr2 {
  padding-right: .5rem;
}

.pv3 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.mv0 {
  margin-top: 0;
  margin-bottom: 0rem;
}

.tr {
  text-align: right;
}

.tc {
  text-align: center;
}

.f5 {
  font-size: 1rem;
}

.v-mid {
  vertical-align: middle;
}

演示: https://jsfiddle.net/r21mdrzs/

缺点是你包含一个空div。好的一面是,即使你放大或缩小,改变按钮的字体大小或大小,一切都将始终与中间对齐,无论如何。根据我的经验,这比使用幻数值进行定位要脆弱。

答案 4 :(得分:-1)

提供标题浮动属性;

.classNameGiveToHeading {
  float: left;
}
.buttonClassName {
  float: right;
}

给&#34;浮动:正确&#34;你喜欢他们两个。