使用CSS垂直对齐div中的图像

时间:2017-07-26 16:47:44

标签: html css

我正尝试在div中垂直对齐图像。我有div显示彩色背景,我需要将其他对象放在div内,但是垂直居中。

Trying to align the arrow with the word Ground

我曾试图解释一个小伙伴。

JSFiddle

4 个答案:

答案 0 :(得分:1)

要垂直居中儿童,您只需为元素直接父级添加display: flexalign-items: center,其所有子级将垂直居中。

使用你的标记就像(从你的风格中删除否定top-margin):



#wrapper-new {
  width: 100%;
}

#record-section {
  width: 100%;
  float: left;
  height: 100%;
  border-bottom-width: 1px;
  border-bottom-style: solid;
  border-bottom-color: #333;
  height: 80px;
}

#room-section {
  width: 20%;
  background-color: #E9E9E9;
  display: inline-block;
  float: left;
  height: 80px;
}

.direction-image {
  margin-top: 8px;
  vertical-align: middle;
  background-repeat: no-repeat;
  background-image: url(https://s2.postimg.org/te7o9w9ix/orbitor_small_17.png);
}

.room-name {
  font-family: Tahoma, Geneva, sans-serif;
  font-size: 30px;
  font-weight: bold;
  color: #006;
  /* remove display: inline-block; */
  display: flex; /* new */
  align-items: center; /* new */
  /* remove margin-top: -60px; */
  margin-left: 100px;
  width: 200px;
  float: left;
  margin-right: 30px;
}

.floor-name {
  font-family: Tahoma, Geneva, sans-serif;
  font-size: 26px;
  font-weight: bold;
  color: #666;
}

<div id="wrapper-new">
  <div id="record-section">
    <div id="room-section">
      <div class="direction-image">
        <div class="room-name">Box
          <div class="floor-name">Ground</div>
        </div>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

首先,你应该摆脱margin-top: -60px中的.room-name。然后有两个文本,而不仅仅是一个。看看下面的设置,我认为这可能是你想要的(?)中心的关键部分是相对位置,:50%和变换:translatey(-50%),但也是背景位置背景图片。

&#13;
&#13;
#wrapper-new {
  width: 100%;
}

#record-section {
  width: 100%;
  float: left;
  height: 100%;
  border-bottom-width: 1px;
  border-bottom-style: solid;
  border-bottom-color: #333;
  height: 80px;
}

#room-section {
  width: 20%;
  background-color: #E9E9E9;
  display: inline-block;
  float: left;
  height: 80px;
}

.direction-image {
  display: inline-block;
  background-repeat: no-repeat;
  background-image: url(https://s2.postimg.org/te7o9w9ix/orbitor_small_17.png);
  background-position: 0 center;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

.room-name {
  font-family: Tahoma, Geneva, sans-serif;
  font-size: 30px;
  font-weight: bold;
  color: #006;
  display: inline-block;
  margin-left: 100px;
  width: 200px;
  float: left;
  margin-right: 30px;
}

.floor-name {
  font-family: Tahoma, Geneva, sans-serif;
  font-size: 26px;
  font-weight: bold;
  color: #666;
}
&#13;
<div id="wrapper-new">
  <div id="record-section">
    <div id="room-section">
      <div class="direction-image">
        <div class="room-name">Box
          <div class="floor-name">Ground</div>
        </div>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果您不想使用flexbox(旧浏览器不支持),您可以添加 line-height:100px (或其他一些数字)(如果父级有身高{ {1}})

&#13;
&#13;
100px
&#13;
.box{
height:100px;
width:100px;
color:white;
background-color:red;
line-height:100px;
}
&#13;
&#13;
&#13;

答案 3 :(得分:0)

尝试使用flexbox:JSFiddle

  <div id="wrapper-new">
  <div id="record-section">
    <div id="room-section">
         <div class="direction-image"> 
            <div class="room-name">Box
              <div class="floor-name">Ground</div>
         </div>
      </div>
  </div>
</div>

.wrapper {
    width: 200px;
    height: 200px;
    display: flex;
    align-items: center;
    background-color: #FFFFFF;
}

您可以通过将包装器的align-items属性更改为居中来更改垂直对齐内部项目的方式。