【问题标题】:How to fix flexbox example for an apple device?如何修复苹果设备的 flexbox 示例?
【发布时间】:2019-12-13 00:00:47
【问题描述】:

我想用 three.js 创建一个响应式 Web 应用程序。

我做了一个骨架,但这似乎只能在 PC 和 Android 智能手机上正确运行。苹果设备如 macbook iphone 和 ipad 存在问题。似乎在这些设备中,底部的工具栏最终不在屏幕上

我已经在 PC 和一些 Android 智能手机设备上尝试过该应用程序,它似乎可以工作,而在 IPAD 设备上却有问题。

这是minimal example

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script>
    <script src="scripts/OrthographicTrackballControls.js"></script>


    <link rel="stylesheet" href="styles/toolbar.css">
    <title>Document</title>
<style>
    html,body{
        width: 100%;
        height:100%;
        overflow: hidden;
        margin: 0px;
        padding: 0px;
        background: linear-gradient( #EAF0F8,  #749ACF);
    }

    .button{
        flex: 0 0 50px;
        background-color: transparent;
        min-height: 71px;
        display: block;
    }


.container-row
{
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: row;
    background-color: transparent;
}

.container-column
{
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    flex:1;
    background-color: transparent;
}

canvas{
    width: 100%;
    height: 100%;
    min-height: 10px;
    background: transparent;
}

#sliderDiv{
    display: flex;
    flex: 0 0 70px;
    background-color: transparent;
    order: 1;
    /*margin-bottom: 10px;*/
}

#playerDiv{
    display: flex;
    flex: 0 0 50px;
    background-color: transparent;
}

.hspaceExpand{
    flex:1;
    background-color: transparent;
    min-width: 0px;
}

#notes
{
    background-color: #ddffdd;
    border : 6px solid #4CAF50;
    flex: 0 0 300px;
    display: none;
}
#canvasKf
{
    background-color: red;
    flex: 0 0 500px;
    display: none;
}
#containerSP
{
    margin-top: 10px;
    margin-bottom: 10px; 
    display: flex;
    flex-direction: column;
}

#viewToolBarMobile
{
    position:absolute;
    background-color: rgba(0,0,0,0.3);
    bottom:0px;
    width: 100%;
    height: 292px;;
    display: flex;
    flex-direction:row;
    justify-content: center;
    display: none;
}

#toolbar2
{
    position: relative;
    background-color: transparent;
    min-width: 252px;
}

#toolbar{
    display: none;
}

/* media queries */
@media screen and (min-width:600px)
{
    #notes
    {
        display:block;
    }
    #canvasKf{

        display:block;
    }

    #openToolBarBtn
    {
        display: none;
    }

    #toolbar{
    display: block;
    }

    #viewToolBarMobile
    {
        display: none;
    }
    #toolbar2
    {
        display: none;
    }

    #containerSP
    {
        margin-left: 10px;
        margin-right: 10px;
    }

}



@media screen and (min-width:1300px)
{
    #containerSP
    {
        flex-direction: row;
    }

    #playerDiv{
        margin-right: 10px;
    }


}

</style>


</head>
<body>

<div id="main-container" class="container-row"> 
    <div id=notes>
            note<br>
            note<br>
            note<br>
            note<br>
            note<br>

    </div>
    <div id="central-container" class="container-column"> 
        <div class="container-row" style="position: relative">
            <div id="toolbar" style="position: absolute">
                    <button id="leftBtn" class="rectangle"> L  </button>
                    <button id="rightBtn" class="rectangle"> R  </button>
                    <button id="upBtn" class="rectangle-up"> U  </button>
                    <button id="frontBtn" class="rectangle-up"> FR  </button>
                    <button id="downBtn" class="rectangle-up"> D  </button>
                    <button id="elementBtn" class="rectangle-up"> EL  </button>
                    <button id="arcSupBtn" class="rectangle-up"> AS  </button>
                    <button id="arcInfBtn" class="rectangle-up"> AI  </button>
                </div>
            <canvas id="canvas3d"> </canvas> 
        </div>
        <div id="containerSP">
            <div id="sliderDiv">
                <div class="hspaceExpand"></div>
                <img src="http://yobit.altervista.org/imgMod/slider.png" style="width:340px">
                <div class="hspaceExpand"></div>
            </div>
            <div id="playerDiv">
                    <div class="hspaceExpand"></div>
                    <img src="http://yobit.altervista.org/imgMod/buttonPlayer.png" style="width:340px">
                    <div class="hspaceExpand"></div>
            </div>
        </div>
        <div id="openToolBarBtn" class="button">
            <div class="container-row">
                    <div class="hspaceExpand"> </div>
                    <img src="http://yobit.altervista.org/imgMod/buttonView.png " style="width:340px">
                    <div class="hspaceExpand"> </div>
            </div>
    </div>
 </div>
<canvas id="canvasKf"></canvas>
<div id=viewToolBarMobile>
    <div id="toolbar2">
            <button id="leftBtn" class="rectangle"> L  </button>
            <button id="rightBtn" class="rectangle"> R  </button>
            <button id="upBtn" class="rectangle-up"> U  </button>
            <button id="frontBtn" class="rectangle-up"> FR  </button>
            <button id="downBtn" class="rectangle-up"> D  </button>
            <button id="elementBtn" class="rectangle-up"> EL  </button>
            <button id="arcSupBtn" class="rectangle-up"> AS  </button>
            <button id="arcInfBtn" class="rectangle-up"> AI  </button>
        </div>
    <button id="closeBtn" style="position: absolute; right:0%"> X  </button>    
</div>

</body>
<!-- <script src="kfgui.js"> </script>  -->
<script src="scripts/view3d.js"></script>
<!-- <script src="viewToolBar.js"> </script>   -->
</

</html>

【问题讨论】:

    标签: html css


    【解决方案1】:

    display: flex 并非所有浏览器类型都支持。为了适应所有浏览器的弹性显示,请使用以下内容:

    display: -webkit-box;   /* OLD - iOS 6-, Safari 3.1-6, BB7 */
    display: -ms-flexbox;  /* TWEENER - IE 10 */
    display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10 */
    display: flex;         /* NEW, Spec - Firefox, Chrome, Opera */
    

    您需要根据浏览器使用正确的供应商前缀。通过使用上述所有方法,您将考虑到大多数现代浏览器。

    查看here 的简要说明以及使用display: flex 的工作示例

    查看this 了解有关 Stackoverflow 的其他说明。

    如果这能解决您的问题,请告诉我们。

    【讨论】:

    • 我尝试用您建议的字符串块替换 display:flex 的每个实例,但这并不能解决问题。我试过 ipad 3(chrome 版本 71.0.3578.89)
    • @MarinaBuc,你指的是#viewToolBarMobile吗?它可能与您的 flex-direction 或宽度有关?
    • @MarinaBuc 也许您可以发布一张 Apple 设备上正在发生的事情的图片,以便更清楚地了解正在发生的事情?
    • sliderDiv 控件的一部分在屏幕外
    • 它可能在#sliderDiv{ display: flex; flex: 0 0 70px; background-color: transparent; order: 1; /*margin-bottom: 10px;*/ } 处具有 70px 的 flex-basis 值。您是否尝试过将该值更改为 0 到 1 之间的数字?有关如何正确使用 flex 属性的说明,请参阅此链接:css-tricks.com/snippets/css/a-guide-to-flexbox
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多