响应 - 将图标和文本对齐到菜单项的中心

时间:2018-01-29 06:43:43

标签: html css responsive-design responsive

我有多个水平显示的菜单项。在每个菜单项中,我都有一个跨度图标(数据图标)和一个文本。它们以text-align:center为中心。一些菜单项文本很长。一切都没问题,直到我进入小屏幕。

问题是,当文本中断到下一行时,它会在菜单项容器内居中并位于图标下方。

有没有办法防止和居中项目文本本身,但也将图标和文字置于菜单容器的中心?

.mycontainer {
  width: 50%;
  background: green;
  text-align: center;
  float: left;
}

.big-icon {
  font-size: 40px;
}

.small-text {
  font-size: 12px;
  position: relative;
  top: -15px;
}
<div class="menu">
  <div class="mycontainer">
    <span class="big-icon">Big Icon</span>
    <span class="small-text">This is very very very very very very very very very long text</span>
  </div>
  <div class="mycontainer" style="background: yellow;">
    <span class="big-icon">Big Icon</span>
    <span class="small-text">This is short text</span>
  </div>
</div>

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

尝试使用 Flexbox

Stack Snippet

.menu {
  display: flex;
  flex-wrap: wrap;
}

.mycontainer {
  padding: 20px;
  box-sizing: border-box;
  width: 50%;
  background: green;
  text-align: center;
  display: flex;
  align-items: center;
  flex-direction: row;
  justify-content: center;
}

.big-icon {
  font-size: 40px;
  flex-shrink: 0;
}

.small-text {
  font-size: 12px;
  position: relative;
  flex: 0 1 40%;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<div class="menu">
  <div class="mycontainer">
    <span class="fa fa-address-book-o fa-4x"></span>
    <span class="small-text">This is very very very very veryveryveryveryverylongtext</span>
  </div>
  <div class="mycontainer" style="background: yellow;">
    <span class="fa fa-address-book-o fa-4x"></span>
    <span class="small-text">This is short text</span>
  </div>
</div>

答案 1 :(得分:0)

您可以使用css网格来简化这一过程。

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr; 
}
p {
  grid-column: 3/5;
}
h1 {
  grid-column: 1/3;
}

答案 2 :(得分:0)

.menu {
  display: grid
}

.mycontainer {
  display: grid;
  grid-gap: 10px; // adds padding to columns
  grid-template-columns: 1fr 1fr; //defines two columns (1/2 each)
  align-items: center; //Centers children vertically
  justify-items: center; //Centers children horizontally
  background: green
}

.big-icon {
  font-size: 40px
}

.small-text {
  font-size: 12px
}

这是JSFiddle:jsfiddle

更多信息:Alligator io aligment tutorial