如何在保持垂直居中的同时将元素对齐?

时间:2017-09-01 00:07:27

标签: html css css3 flexbox

我想要'威廉·马切西'和'联系'文字垂直居中,使用'联系人'标题右侧的按钮。当我尝试float: right时,联系人文字会移动,因此它会高于威廉·马切西的威廉·马切西'文本。



html {
  height: 100%;
  background-repeat: no-repeat;
  background-color: green;
}

body {
  font-size: 87.5%;
  /* Base font size on 14px */
  font-family: sans-serif;
  line-height: 1.5;
  text-align: justify;
  margin: 0 auto;
  padding: 0;
}

a {
  text-decoration: none;
  color: inherit;
}

.header div {
  margin: 0 auto;
  width: 70%;
  clear: both;
  padding: 0;
}

.header {
  background-color: #FCFCFC;
  width: 100%;
  padding: 0;
  margin: 0 auto;
  /*height: 5em;*/
}

.heading,
.contactButton {
  display: inline-block;
  padding: 0;
  margin: 0;
  vertical-align: middle;
  line-height: 3em;
  height: 3em;
  font-family: 'Nunito', sans-serif;
}

.heading {
  font-size: 3em;
  padding: 0;
  margin: 0;
}

.contactButton {
  font-size: 2em;
  text-align: right;
  padding: 0;
  margin: 0;
  float: right;
}

<body class="body">
  <div class="header">
    <div>
      <h1 class="heading">William Marchesi</h1>
      <a class="contactButton" href="#contact">Contact</a>
    </div>
  </div>
</body>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:1)

以下是许多可能的解决方案之一,在联系人按钮上使用position:absolute

html {
    height: 100%;
    background-repeat: no-repeat;
    background-color: green;
}

body {
    font-size: 87.5%; /* Base font size on 14px */
    font-family: sans-serif;
    line-height: 1.5;
    text-align: justify;
    margin: 0 auto;
    padding: 0;
}

a {
    text-decoration: none;
    color: inherit;
}

.header div {
    margin: 0 auto;
    padding: 0;
    text-align:center;
}
.header {
    background-color: #FCFCFC;
    padding: 0;
}

.heading, .contactButton {
    padding: 0;
    margin: 0;
    vertical-align: middle;
    line-height: 3em;
    font-family: 'Nunito', sans-serif;
}
.heading {
    font-size: 3em;
    padding: 0;
    margin: 0;
}

.contactButton {
    font-size: 2em;
    text-align: right;
    padding: 0;
    margin: 0;
    position:absolute;
    top:0.8em;
    right:1em;
}
<div class="header">
      <div>
          <h1 class="heading">William Marchesi</h1>
          <a class="contactButton" href="#contact">Contact</a>
      </div>
  </div>

答案 1 :(得分:0)

您可以使用margin-left而不是float

html {
    height: 100%;
    background-repeat: no-repeat;
    background-color: green;
}

body {
    font-size: 87.5%; /* Base font size on 14px */
    font-family: sans-serif;
    line-height: 1.5;
    text-align: justify;
    margin: 0 auto;
    padding: 0;
}

a {
    text-decoration: none;
    color: inherit;
}

.header div {
    margin: 0 auto;
    width: 70%;
    clear: both;
    padding: 0;
}
.header {

    background-color: #FCFCFC;
    width:100%;
    padding: 0;
    margin: 0 auto;

    /*height: 5em;*/
}

.heading, .contactButton {
    display: inline-block;
    padding: 0;
    margin: 0;
    vertical-align: middle;
    line-height: 3em;
    height: 3em;
    font-family: 'Nunito', sans-serif;
}
.heading {
    font-size: 3em;
    padding: 0;
    margin: 0;
}

.contactButton {
    font-size: 2em;
    text-align: right;
    padding: 0;
    margin-left: 59%;
}

答案 2 :(得分:0)

这是一个灵活的解决方案,使居中简单易行:

&#13;
&#13;
body {
  background-color: green;
  font-size: 87.5%;
  margin: 0;
  padding: 0;
}

.header {
  display: flex;
  justify-content: space-around; /* horizontal alignment of children */
  align-items: center;           /* vertical alignment of children */
  height: 6rem;
  background-color: #FCFCFC;
}

.heading {
  font-size: 3em;
  font-family: 'Nunito', sans-serif;
}

.contactButton {
  font-size: 2em;
  font-family: 'Nunito', sans-serif;
}

a {
  text-decoration: none;
  color: inherit;
}
&#13;
<body class="body">
  <div class="header">
    <h1 class="heading">William Marchesi</h1>
    <a class="contactButton" href="#contact">Contact</a>
  </div>
</body>
&#13;
&#13;
&#13;

jsFiddle

更多关于flex中心的信息:

浏览器支持: 所有主流浏览器except IE < 10都支持Flexbox。最近的一些浏览器版本,例如Safari 8和IE10,需要vendor prefixes。要快速添加前缀,请使用Autoprefixerthis answer

中的更多详细信息

答案 3 :(得分:0)

您可以使用flexbox(display: flex)轻松完成此操作。

尝试my jsFiddle