网格系统无法在移动设备或小屏幕上正确调整大小

Posted

技术标签:

【中文标题】网格系统无法在移动设备或小屏幕上正确调整大小【英文标题】:Grid system doesn't resize properly on mobile devices or small screen 【发布时间】:2018-03-15 19:26:16 【问题描述】:

命令col-xs-whatever 不起作用,并在移动视图或小屏幕上产生断线。

注意:我还测试了 Bootstrap 4 在文档中指定的 .col- 类,但它仍然不起作用。

它没有正确调整大小并堆积,这是相关代码:

.navbar
    background-image: cornflowerblue;

#mainNav
    border: 5px solid black;
    margin: 3%;
    background-color: white;

body
    background-color: grey;

#navContent
    background-color: white;
    margin: 3%;

#final
    border: 5px solid black;
    margin: 3%;
    background-color: white;

#searchFormContent
    margin: auto;
    width: 80%;

#navToggler
    float: right;

.navbar-toggler
    float:right;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<body>
    <div class="container-fluid">
        <section class="row" id="mainNav">
            <div class="col-12">
                <nav class="navbar sticky-top navbar-expand-md">
                    <div class="col-xs-1 col-md-2">
                        <a class="navbar-brand" href="#">Brand</a>
                    </div>

                    <div class="col-xs-10 col-md-7">
                        <form class="form-inline" id="searchForm" role="search">
                            <div class="input-group" id="searchFormContent">
                                <input class="form-control" type="text" placeholder="Busqueda">
                                <div class="input-group-btn">
                                    <button class="btn btn-secondary" type="button"><i class="fa fa-search"></i></button>
                                </div>
                            </div>
                        </form>
                        <span id="destiny1"></span>
                    </div>
                    <div class="col-xs-1 col-md-3">
                        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navToggler" aria-controls="navToggler" aria-expanded="false" aria-label="Toggle navigation">
                            <i class="fa fa-bars"></i>
                        </button>
                        <div class="collapse navbar-collapse" id="navToggler">
                            <ul class="navbar-nav">
                                <li class="nav-item"><a class="nav-link" href="#">Option 1</a></li>
                                <li class="nav-item"><a class="nav-link" href="#">Option 2</a></li>
                            </ul>
                        </div>
                        <span id="destiny2"></span>
                    </div>
                </nav>
            </div>
            </section>
            </div>
            </body>

【问题讨论】:

我可以在移动设备上查看您的设计视图吗? @SanjayPrajapati 这是移动设备中的屏幕截图。请注意,您可以在 sn-p 中看到仍然无法正常工作:imgur.com/JJpGzFe 但我需要你需要的移动视图屏幕短 已链接,查看我的上一个答案 我编辑了我的答案 【参考方案1】:

我不知道这是否是你想要的结果,因为你没有指定。

我将col-xs-whatever 更改为col-whatever 之后,您在row 上应用了边距和边框,并将CSS 应用于#mainNav,这就是为什么所有列都无法放入其中的原因。

所以我将row 移动到一个包装导航中,并从#mainNav 中删除了row

这里是修改代码:

.navbar
    background-image: cornflowerblue;

#mainNav
    border: 5px solid black;
    margin: 3%;
    background-color: white;

body
    background-color: grey;

#navContent
    background-color: white;
    margin: 3%;

#final
    border: 5px solid black;
    margin: 3%;
    background-color: white;

#searchFormContent
    margin: auto;
    width: 80%;

#navToggler
    float: right;

.navbar-toggler
    float:right;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">

<div class="container-fluid">
        <section id="mainNav">    
            <nav class="navbar sticky-top navbar-expand-md row">
                <div class="col-2 col-md-2">
                    <a class="navbar-brand" href="#">Brand</a>
                </div>    
                <div class="col-8 col-md-7">
                    <form class="form-inline" id="searchForm" role="search">
                        <div class="input-group" id="searchFormContent">
                            <input class="form-control" type="text" placeholder="Busqueda">
                            <div class="input-group-btn">
                                <button class="btn btn-secondary" type="button"><i class="fa fa-search"></i></button>
                            </div>
                        </div>
                    </form>
                    <span id="destiny1"></span>
                </div>
                <div class="col-2 col-md-3">
                    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navToggler" aria-controls="navToggler" aria-expanded="false" aria-label="Toggle navigation">
                                <i class="fa fa-bars"></i>
                            </button>
                    <div class="collapse navbar-collapse" id="navToggler">
                        <ul class="navbar-nav">
                            <li class="nav-item"><a class="nav-link" href="#">Option 1</a></li>
                            <li class="nav-item"><a class="nav-link" href="#">Option 2</a></li>
                        </ul>
                    </div>
                    <span id="destiny2"></span>
                </div>
            </nav>    
        </section>
    </div>

【讨论】:

感谢您的回答,仍然无法使用您的代码,请在此处查看它的外观:imgur.com/QrYUnLk 如果我将班级行移动到该部分,它会是一样的吗? 否,因为您将使用#mainNav 的 css 覆盖行样式。我现在编辑了我的答案,它应该可以工作我将行类移动到导航元素中。这是工作示例jsbin.com/luteyiyaxa/edit 在超窄屏幕上唯一的问题是你在 col-1 中的内容太宽而无法容纳所以它会跳到另一行,你应该考虑使用 col-2 col-8 col-2 结构效果很好。 仍然无法正常工作,这与您的代码在 Nexus 上的外观相同:imgur.com/PZgVdbC。也试过 col-2 col-8 col-2 但没有【参考方案2】:

根据 iamwtk 的建议,部分问题是您必须使用 col-XYZ 代替 col-xs-XYZ,但最大的问题是网格的内容:Brand 和 Busqueda 都超过了col,打破行...尝试使用 col 分布并更改“searchFormContent”的宽度使其动态;)

【讨论】:

以上是关于网格系统无法在移动设备或小屏幕上正确调整大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery mobile 调整图像大小以适应移动设备上的屏幕

移动设备的 CSS 字体大小

移动到网站中心(如果可能,在移动设备上自动调整大小)

CSS / Bootstrap - 字体大小未正确从计算机调整到移动设备:移动设备上的字体看起来很小

调整移动屏幕大小时不居中对齐

2022-05-26移动端设配方案