css - 在 CSS Grid 元素中定位元素

标签 css css-grid

我试图将一个 div 放在网格标题的中心,但我的许多尝试都失败了。

这是代码笔的链接:https://codepen.io/ZeePintor/pen/OKxLRe

这是html代码:

  <!DOCTYPE html>
  <html lang="en">
  <head>
    <title>Ermesinde Clube de Karaté</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link href="https://fonts.googleapis.com/css?family=Montserrat:900|Work+Sans:300" rel="stylesheet">
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/style2.css">

  </head>
  <body>
    <div class="wrapper">
      <div class="header">
        <div class="brand">
            <img src="/images/eck_logo.png">
            <div class="page-headers">
              <h1>ECK</h1>
              <h3>ERMESINDE CLUBE KARATE</h3>
          </div>
        </div>
      </div>
      <div class="section1">Section1</div>
      <div class="section2">Section2</div>
      <div class="footer">Footer</div>
    </div>

  </body>
</html>

这是CSS:

.wrapper{
    display:grid;
    width:100%;
    background-color:#e3e3e3;
    grid-template-rows: 
    [grid-start hd-start] 100vh 
    [hd-end sc1-start] 100vh 
    [sc1-end sc2-start] 100vh 
    [sc2-end ft-start] 125px 
    [ft-end grid-end];
    grid-template-columns: 100%;
}

div div:hover{
    border:1px solid black;
}

/*
HEADER 
*/
.header{
    grid-row:hd;
    background-repeat: no-repeat;
    background-size: cover;
    background-image: url(../images/black_belt_stock_photo.jpg);
}

.brand{
    grid-row: brand;
    display:flex;
    justify-content:flex-end;
}

.brand img{
    border: 2px rgb(109, 12, 12) solid;
    border-radius: 50%;
}


.brand h1{
    color:white;
    font-family: 'Montserrat', sans-serif;
    font-weight: 900;
}

.brand h3{
    color:white;
    font-family: 'Work Sans', sans-serif;
    font-weight: 300;
}



.section1{
    grid-row:sc1;
}

.section2{
    grid-row:sc2;
}

.footer{
    grid-row:ft;
}

这应该是页面的大标题,当人们打开页面时,动画可能会添加到标题和图像中,但首先我想垂直居中,同时将元素对齐到最右边。

我尝试在 css 中移动,例如: - position:absolute; - 垂直对齐:居中; - 证明内容:正确;对齐内容:居中;

但是这些都不适合我,所以有人可以帮助我吗? 谢谢。

最佳答案

这可能对你有用:

.brand{
    grid-row: brand;
    display:flex;
    justify-content:flex-end;
    position: absolute;
    right: 2rem;
    top: 50%;
    margin-top: -160px; /* 1/2 image height */
}

关于css - 在 CSS Grid 元素中定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57328991/

相关文章:

css - 如何向包含已访问链接的列表元素添加样式?

css - 纯CSS向右滑动效果

css - 为什么网格模板区域中缺少网格区域名称会创建额外的轨道?

html - 如何重新排列和反转网格元素的顺序?

html - 适应屏幕的 div 高度

javascript - Div 在另一个 div 下方并在悬停时显示过渡

jquery - 更新分区 :after property using jQuery

html - 我不知道如何在某个断点后禁用声明

html - 我如何模仿有两个元素列表,而 css 中只有一个列表?

javascript - 使用 CSS Grids,有没有办法在使用 grid-auto-flow : column? 时包装隐式网格