【问题标题】:CSS flexbox layout not working in safariCSS flexbox布局在Safari中不起作用
【发布时间】:2015-10-30 04:43:02
【问题描述】:

尝试使用 angular material 实现 flexbox 布局,其中导航和页脚具有固定高度,内容将是可滚动的(使用 md-content)并且页脚应该出现在可滚动内容之后。我的解决方案在 chrome 和 firefox 中运行良好,但在 safari 中不行。在 safari 中,页脚出现在视口底部,与可滚动内容重叠。有什么办法可以在所有浏览器中达到同样的效果?

html:

<!DOCTYPE html>
<html>

  <head>

    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/0.10.0/angular-material.min.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=RobotoDraft:300,400,500,700,400italic" />

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-animate.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-aria.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angular_material/0.10.0/angular-material.min.js"></script>

    <link rel="stylesheet" href="style.css" />

  </head>

  <body layout='column'>

    <div id='nav'>
      Nav
    </div>

    <md-content flex layout='column'>

      <div id='content' flex>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      </div>

      <div id='footer'>
        Footer
      </div>

    </md-content>

  </body>

</html>

css:

* {
  margin: 0;
}

body {
  overflow: hidden;
  max-width: 100%;
  max-height: 100%;
}

#nav{
  background-color: green;
  -webkit-flex: 0 0 65px;
  flex: 0 0 65px;
}

#content{
  background-color: blue;
}

#footer{
  background-color: red;
  -webkit-flex: 0 0 115px;
  flex: 0 0 115px;
}

plunkr:

http://plnkr.co/edit/ibi6v1LTy9dLducHuMdM

【问题讨论】:

    标签: css safari flexbox angular-material


    【解决方案1】:
    #content {
        -webkit-flex: 1 0 auto;
        flex: 1 0 auto;
    }
    

    足够了。

    【讨论】:

      【解决方案2】:

      您的层次结构有点不稳定,看来 Safari 正在为此苦苦挣扎。

      通过将页脚移动为 #nav 和 md-content 元素的同级元素,并删除多余的 flex 显示,您可以获得所需的布局。

      新的 HTML:

      <div id="nav">
            Nav
          </div>
      <md-content layout="column">
        <div id="content">
          <p>...</p>
          ...
          <p>...</p>
        </div>
      </md-content>
      <div id="footer">
        Footer
      </div>
      

      新的 CSS:

      #content{
        background-color: blue;
        -webkit-flex: 1 1;
        flex: 1 1;
      }
      

      Plunkr Example

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-12
      • 2018-05-23
      • 2013-06-13
      • 2015-08-19
      • 2019-01-16
      • 2017-09-30
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多