【问题标题】:HTML CSS: Grid Container Align Icons in Vertical Middle [duplicate]HTML CSS:网格容器在垂直中间对齐图标[重复]
【发布时间】:2019-07-11 05:58:13
【问题描述】:

如何将这些项目在方框中间对齐?我尝试了所有垂直对齐中间,对齐内容,flex center,文本对齐

尽量避免使用下面答案建议中的 div,除非需要,还有其他方法吗?

.material-icons
{
   align-items: center;
   justify-content: center;
   text-align:center;
   vertical-align: middle;
   border-color:black;
   border-width:1px;
   border-style:solid;

}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
      rel="stylesheet">

<div class="grid-container" id="gridid1556351f5ece4ee3a7dce6962be48e39" style="  display: grid;
                    grid-template-columns: repeat(1, 250px);
                    grid-template-rows: repeat(2, 250px);
                    grid-gap: 1px;
                    padding: 0px;
                    align-items: stretch;
                    position: relative; ">
<i class="material-icons" style="font-size:48px;">notifications</i>
  <i class="material-icons" style="font-size:48px;">delete</i>

【问题讨论】:

    标签: html css svg material-design


    【解决方案1】:

    您可以使用此选择器.grid-container i,并使用 Flexbox 将图标垂直和水平居中:


    .grid-container {
        display: grid;
        grid-template-columns: repeat(1, 250px);
        grid-template-rows: repeat(2, 250px);
        grid-gap: 1px;
        padding: 0px;
        align-items: stretch;
        position: relative; 
    }
    
    
    .grid-container i {
        display: flex;
        align-items: center;
        justify-content: center;
        border: 1px solid black;
    }
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
          rel="stylesheet">
    
    <div class="grid-container" id="gridid1556351f5ece4ee3a7dce6962be48e39">
        <i class="material-icons" style="font-size:48px;">notifications</i>
        <i class="material-icons" style="font-size:48px;">delete</i>
    </div>

    【讨论】:

    • 这是最有效的方法吗?为什么我的 CSS 属性在上面不起作用?必须有另一种方式 align-items: center;证明内容:中心;文本对齐:居中;垂直对齐:中间;
    • 我使用@Soothran 的解决方案更新了我的答案。
    【解决方案2】:

    为了使用网格使其工作,我将&lt;i&gt; 包装在&lt;p&gt; 元素中,&lt;p&gt; 得到justify-self: center; align-self: center;

    .grid-container {
      display: grid;
      grid-template-columns: repeat(1, 250px);
      grid-template-rows: repeat(2, 250px);
      grid-gap: 1px;
      padding: 0px;
      position: relative;
    }
    p {
      justify-self: center;
      align-self: center;
    }
    
    .material-icons {
      border-color: black;
      border-width: 1px;
      border-style: solid;
    }
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
          rel="stylesheet">
    
    <div class="grid-container" id="gridid1556351f5ece4ee3a7dce6962be48e39">
      <p><i class="material-icons" style="font-size:48px;">notifications</i></p>
      <p><i class="material-icons" style="font-size:48px;">delete</i></p>
      
    </div>

    【讨论】:

    • 有趣,khan 想要这样做,.grid-container i { ,不确定哪个答案更好甚至更重要,不过谢谢!
    【解决方案3】:

    通过添加display:flex 属性将.material-icons 类设为弹性容器。您可能需要增加此样式的 css 优先级以覆盖默认显示样式.material-icons

    .grid-container > .material-icons{
    display:flex;
    }
    

    【讨论】:

    • 这不行,你在codepen上试过了吗?显示:弹性;
    • 因为材质 css 覆盖了您的自定义样式。因此,您可以放置​​ !important 属性(显示:flex !important)或在加载材料 css 后加载自定义 css 文件
    • 您能提供代码笔等的工作示例吗?谢谢
    • @Soothran 是对的,你可以输入display: flex
    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2011-06-14
    • 2013-12-26
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多