【发布时间】:2018-01-05 17:57:37
【问题描述】:
我想做一个满足以下条件的页面:
- 它在第一部分包含一些文本和一个 第二部分的代码镜像
- 第一部分中的文本几乎是固定的(因此它们的高度几乎是固定的),我希望代码镜像的高度完全填满页面的其余部分。如果代码镜像中有很多文本,则使用滚动。
然后,我做这个plunker:
<style>
.rb {
display: flex;
flex-direction: column;
height: 100%;
}
.rb .CodeMirror {
flex: 1;
}
</style>
<div class="rb">
1<br/>2<br/>3<br/>4<br/>
<textarea ng-model="body" ui-codemirror="option"></textarea>
</div>
它在 Chrome 中完美运行,但在 Safari 中无法运行:代码镜像的高度不正确;我们立即看到了问题:
有谁知道如何解决这个问题?我曾经用calc(减去一个固定的像素)有一个解决方案,但我再也找不到了。
【问题讨论】:
-
加个
html, body { height: 100%; }怎么样 -
@LGSon 你能做一个特别是在 Safari 中的工作示例吗?
-
我没有 Safari,因此无法立即进行测试,尽管此示例应该可以工作:plnkr.co/edit/zCdU7Tn2rfvirXnD0kHM?p=preview
-
@LGSon Safari里不行,布局和我贴的一样。。。这个问题不容易。。。
-
你的
rb类有一个高度集height: 100%,对于一个基于百分比高度的元素,它的所有后代也需要height: 100%,<ui-view class="ng-scope">,<div ng-app="myApp">,<body>和<html>... 或将rb的高度更改为视口单位,即height: 100vh
标签: css cross-browser flexbox height ui-codemirror