【问题标题】:Angular - Phonegap - "min-height: 100%" not working at allAngular - Phonegap - “最小高度:100%”根本不工作
【发布时间】:2014-09-12 14:18:08
【问题描述】:

我有这个 html 文件:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
        <link rel="stylesheet" type="text/css" href="css/platform.css" />
        <title>1001Carros</title>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/angular.min.js"></script>
        <script type="text/javascript" src="js/angular-route.min.js"></script>
        <script type="text/javascript" src="js/angular-resource.min.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript">
            document.addEventListener("deviceready", function(){
                angular.bootstrap(document, ['Application']);
            }, false);
        </script>
    </head>
    <body ng-view></body>
</html>

使用这个样式表:

/* Low density (120), mdpi */
@import url('main-android-ldpi.css') screen and (-webkit-max-device-pixel-ratio: 0.9999999);
@import url('main-android-ldpi-portrait.css') screen and (-webkit-max-device-pixel-ratio: 0.9999999) and (orientation: portrait);
@import url('main-android-ldpi-landscape.css') screen and (-webkit-max-device-pixel-ratio: 0.9999999) and (orientation: landscape);
/* Medium density (160), mdpi */
@import url('main-android-mdpi.css') screen and (-webkit-min-device-pixel-ratio: 1);
@import url('main-android-mdpi-portrait.css') screen and (-webkit-min-device-pixel-ratio: 1) and (-webkit-max-device-pixel-ratio: 1.4999999) and (orientation: portrait);
@import url('main-android-mdpi-landscape.css') screen and (-webkit-min-device-pixel-ratio: 1) and (-webkit-max-device-pixel-ratio: 1.4999999) and (orientation: landscape);
/* High density (240), hdpi */
@import url('main-android-hdpi.css') screen and (-webkit-min-device-pixel-ratio: 1.5);
@import url('main-android-hdpi-portrait.css') screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.9999999) and (orientation: portrait);
@import url('main-android-hdpi-landspace.css') screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.9999999) and (orientation: landscape);
/* Extra high density (320), xhdpi */
@import url('main-android-xhdpi.css') screen and (-webkit-min-device-pixel-ratio: 2);
@import url('main-android-xhdpi-portrait.css') screen and (-webkit-min-device-pixel-ratio: 2) and (orientation: portrait);
@import url('main-android-xhdpi-landscape.css') screen and (-webkit-min-device-pixel-ratio: 2) and (orientation: landscape);

 /****************************************************************************************************************
 * En realidad estos estilos que estan aca valen tambien para iPhone - tengo que moverlos a algun css en comun. *
 ****************************************************************************************************************/
html, body {
    min-height: 100%;
    margin: 0;
    background-color: green;
}

/*...*/

#block-content {
    background-color: #0058a9;
    min-height: 100%;
}

#block-footer {
    margin-bottom: 0;
    background-color: #bbbbbb;
}

#block-content-ender {
    clear: both;
}

/*...*/

在那些@imported 文件中,没有更多关于#block-footer#block-contenthtmlbody#block-content-ender 的规范被定义。

最后,ng-view(在body 标签中)指令通过ngRoute 正确地将以下内容放入其中:

<div id="block-logo">
    <button id="btn-go-main" class="btn-blue-gradient"></button>
</div>
<div id="block-search">
    <div id="search-box">
        <div id="search-box-btn" ng-click="doSearch()"></div>
        <input type="text" id="search-box-text" ng-model="searchText" placeholder="Buscar Ej. Rojo, Chevrolet, Vitara" />
    </div>
</div>
<div id="block-content">
    <div id="floating-guys">
        <div id="tall-guy"></div>
        <div id="short-guy"></div>
    </div>
    <div id="main-menu">
        <ul id="options" class="menu">
            <li ng-repeat="button in buttons"
                ng-attr-id="button.id"
                ng-class="{'menu-row': true, 'section': button.section, 'clickable': !button.section}"
                ng-style="button.styles"
                ng-click="button.click()">
                {{ button.text }}
            </li>
        </ul>
    </div>
    <div id="block-content-ender"></div>
</div>
<div id="block-footer">
    Lugar para el banner de pie
</div>

阅读样式后,您会注意到htmlbody 的最小高度为100%。出于调试目的,它们具有green 背景颜色。

还可以注意到#block-logo#block-search#block-content#block-footer不属于文件中的任何标签,而是包含在ng-view-holder内(即body标签) .

人们还可以注意到#block-content 的定义类似于htmlbody

#block-content {
    background-color: #0058a9;
    min-height: 100%;
}

除了因为它有类似蓝色的背景颜色。

我所期望的是#block-content 的最小高度应该是身体的高度(即,由于#block-content 的背景是蓝色的,我希望看到一个剩余的、空的、类似蓝色的部分在底部)。

不幸的是,#block-content 中的 min-height 样式不起作用:它根本没有效果 - 如果我删除它也是一样的(即因为身体的背景是绿色的,我居然在底部看到了一个残留的绿色部分)。

除此之外,内容按我的预期工作 - ngRoute 完全没有问题。

我的问题是:为什么?我的目的是让这样的块至少有身体的高度。

我也尝试过在 body 中有一个 div 并持有 ng-view 指令:

<!DOCTYPE html>
<html>
    <!-- -same head -->
    <body>
        <div id="content" ng-view></div>
    </body>
</html>

有自己的风格:

/* this style still existed */
html, body {
    min-height: 100%;
    margin: 0;
    background-color: green;
}

#content { min-height: 100%; background-color: red; }

但两者都没有效果(即#content 的背景是红色的 -> 我预计剩余的红色部分;但我看到剩余的绿色部分 -> 后面的 body)。

再次:我怎样才能强制使用这种 100% 高的 div?

注意:这不是关于背景颜色的。我实际上需要将#block-footer 固定到底部,底部至少为设备高度的 100%(它将包含页脚横幅)。

【问题讨论】:

    标签: html css angularjs cordova


    【解决方案1】:

    关于您的身高问题——您需要将html 标记明确设置为100% 高度。子元素只能使用具有明确设置高度的父元素的参考高度属性。在html 明确设置高度后,您可以将body 设置为min-height 100%

    关于您的页脚,将页脚粘贴到可视视口的底部:

    footer {
        position: fixed;
        height: 100px;
        bottom: 0;
        width: 100%;
    }
    

    【讨论】:

    • 这可能会有所帮助,但如果由于某种原因,网站的实际内容达到 100% 或更多,则固定页脚会与该内容重叠。另外,如果我需要我的#block-content 有一个自定义背景,如果页面内容高度低于 100%,我不会看到它跨越到底部
    • html 和 body 的最小高度已经达到 100%。我试着让它们有 height:100% 而不是 min-height:100%,效果是一样的。
    • 是的!它通过使用高度而不是最小高度来工作!有缓存问题(或者可能是 IDE 没有保存它)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多