【问题标题】:how to implement the vertical alignment when changing <div> block size更改 <div> 块大小时如何实现垂直对齐
【发布时间】:2019-10-04 13:33:46
【问题描述】:

如何在更改&lt;div&gt; 块大小时实现垂直对齐(在我的示例中 - 绿色块)。

在我的示例中需要改变的是,当浏览器窗口调整大小时发生垂直对齐(中间)侧块。

vertical-align: middletop : calc(50% - 25px) 属性不起作用。

示例: http://jsfiddle.net/vsdu0cn8

我的情况和需要什么

(来源:imageup.ru

代码:

<html>
  <head>
    <style>
      body {
        margin: 0px;
        padding: 0px;
        font-size: 0px;
      }

      .menu-block {
        max-width: calc(2 * 75px + 7 * (50px + 2 * 5px));
        background-color: #ff8080;
      }

      .menu-block .menu-edge {
        display: inline-block;
        position: relative;
        left: 0px;
        width: 75px;
        height: 50px;
        vertical-align: top;
        background-color: #80ff80;
      }

      .menu-block .menu-container {
        display: inline-block;
        width: calc(100% - 2 * 75px);
        text-align: center;
        background-color: #ff80ff;
      }

      .menu-block .menu-container .menu-element {
        display: inline-block;
        width: 50px;
        height: 50px;
        margin: 0px 5px;
        font-size: 20px;
        background-color: #ffff80;
      }
    </style>
  </head>
  <body>
    <div class='menu-block'>
      <div class='menu-edge'></div>
      <div class='menu-container'>
        <div class='menu-element'>#1</div>
        <div class='menu-element'>#2</div>
        <div class='menu-element'>#3</div>
        <div class='menu-element'>#4</div>
        <div class='menu-element'>#5</div>
        <div class='menu-element'>#6</div>
        <div class='menu-element'>#7</div>
      </div>
      <div class='menu-edge'></div>
    </div>
  </body>
</html>

【问题讨论】:

  • 为什么不使用display: flex;并将sideblock的内容居中对齐?
  • 抱歉,我无法理解您想要什么。您能否更具描述性或提供图片来说明您想要的内容。

标签: html css alignment vertical-alignment


【解决方案1】:

通过使用display:flex 设置容器,您可以使用align-items: center 以使您的文本垂直居中。

请查看更新后的JSFiddle:

HTML:

<div class = 'menu-block'>
    <div style="display:flex; align-items: center">
    <div class = 'menu-edge'></div>
    <div class = 'menu-container'>
      <div class = 'menu-element'>#1</div>
      <div class = 'menu-element'>#2</div>
      <div class = 'menu-element'>#3</div>
      <div class = 'menu-element'>#4</div>
      <div class = 'menu-element'>#5</div>
      <div class = 'menu-element'>#6</div>
      <div class = 'menu-element'>#7</div>
    </div>
    <div class = 'menu-edge'></div>
  </div>
</div>

【讨论】:

  • 很抱歉,您的示例不起作用 - 当我更改浏览器窗口的大小时,黄色块 (1..7) 没有排列成几行,绿色块 -未垂直对齐
  • 您好,您问的是垂直对齐,我以为您在谈论文本居中。请尝试更具体地说明您的要求。我还是不明白……
  • 您好,我已经更新了之前的解决方案,请查看更新后的 JSFiddle:jsfiddle.net/oronbdd/vsdu0cn8/2
  • Oron Ben-David 看看我的例子imageup.ru/img41/2396110/example.png 在你的情况下 - 顶部的绿色块。而且我需要 - 绿化块在中间
  • 对不起,复制了错误的网址,这是更新的:jsfiddle.net/oronbdd/vsdu0cn8/3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多