如何在布尔玛中垂直居中放置文本和图标?

时间:2020-05-12 20:07:31

标签: html css vue.js flexbox bulma

我正在尝试在vue.js项目中使用布尔玛和flexbox将图标和文本居中,我试图遵循此问题的答案(How to vertically center elements in Bulma?)。我的图标垂直居中,但文本元素似乎偏心,其下方有几个像素的空白。它们都位于相同的基线上,但意味着它们与我的图标不一致(请参见下图)。

Text off centre with icon

我不确定我要去哪里哪里,我在下面包含了我的代码,请提供任何帮助

 <template>
   <div class="singleProjectContainer" :key="project.id">
     <ul class="columns is-flex projectPreview" style="border-bottom: 0.5px solid #c1c1c1;">
       <div class="column is-1 is-flex projectIcon">
         <li>
          <div v-if="project.projectType === 'Identity'"class="projectIcon" >
           <img src="../static/SVG/Identity-Circle.svg" alt="circle icon for branding & identity" />
         </div>
     </li>
   </div>
   <div class="projectTitle column is-4">
     <li> <h3>{{ project.Name }}</h3> </li>
     </div>
     <div class="projectSummary column is-7">
       <li> <p>{{ project.Summary }}</p> </li>
     </div>
   </ul>
 </div>
</template>

<script>
export default {
  name: 'ProjectItem',
  props: ['project'],
 }
</script>

<style scoped>

.columns {
  height: 100%;
  padding: 0;
  margin: 0;
 }

.singleProjectContainer {
 height: 72x;
 margin: 0px;
 }

.columns.projectPreview {
 -webkit-box-align: center;
 -ms-flex-align: center;
  align-items: center;
 }

.projectIcon {
 padding: 0 0 0 10px;
 height: 100%;
 }

.projectTitle {
 height: 100%;
}

.projectIcon img {
height: 20px;
width: 20px;
}

.projectTitle h3 {
 font-size: 1.2em;
 font-family: 'Sporting Grotesque_Regular';
 color: black;
}

</style>

1 个答案:

答案 0 :(得分:1)

.is-vcentered选择器仅与columns相关: https://bulma.io/documentation/columns/options/#vertical-alignment

.columns.is-vcentered {
    align-items: center;
}

布尔玛> = 0.9.1

自布尔玛0.9.1开始,我们可以使用flexbox helpers

is-flex结合使用时,所有Flexbox CSS属性都可以作为布尔玛的助手使用:

  • 灵活方向
  • flex-wrap
  • 证明内容
  • align-content
  • align-items
  • align-self
  • 自由成长
  • 弯曲收缩

示例:

<div class="is-align-items-center is-flex"></div>

布尔玛<0.9.1(旧答案)

对于列表-(通过内置方法)(由助手进行)以对齐图标和文本(至今)。 一种解决方案-使用核心is-flex一种 CSS自定义样式(对于align-items: center;)。

Flexbox示例:

/* one custom class (not from bulma core) */
li.vcenter{
  align-items: center;
}
<div class="container">
  <ul class="list">
    <li class="list-item is-flex vcenter">
      <span class="icon has-text-danger">
        <i class="fas has-text-success fa-2x fa-adjust"></i>
      </span>
      <h2 style="margin-left: 10px; font-size: 60px;  line-height: 1;">Hello world</h2>
      <h3 style="margin-left: auto;">Right text</h3>
    </li>
    <li class="list-item  is-flex vcenter">
      <span class="icon has-text-danger">
        <i class="fas has-text-danger fa-2x fa-exclamation-triangle"></i>
      </span>
      <h2 style="margin-left: 20px; font-size: 20px;">Item 2</h2>
      <h3 style="margin-left: auto;">Right text</h3>
    </li>
  </ul>
</div>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.8.2/css/bulma.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">

相关:How to center text vertically with a large font-awesome icon?