html - Bootstrap 3 具有 3 列 Flex 或 Col 的全宽和高布局
问题描述
我对这个简单的页面有点卡住了(我知道你可能会对此视而不见,请耐心等待)。我已经使用 Bootstrap 很多年了,直到我的经理想在移动设备上看到它。我尝试了许多不同的方法,但没有一个与下一个屏幕截图的布局相匹配,Navbar
中间有一个。宽度对我来说很好,但我在设置高度时遇到了问题。
另外,在桌面上我尝试使用三列布局,它看起来很好,直到我添加了一个中间导航栏(它在背景中看起来臃肿和可怕),并且所有列都没有使用正确的高度,所以我怀疑 CSS 是有点不对。正如您在我编写的代码片段中看到的那样,我已经尝试过,height:auto
但height:fixed
它们都不是完美的。
<div class="container">
<div class="row">
<div class="col-sm-5"></div>
<div class="col-sm-2"></div>
<div class="col-sm-5"></div>
</div>
我将它用于 col,但我确信我会告诉我应该使用 flex。
我正在使用此背景作为图像,我已经四处寻找模板或示例,但其中大多数都使用一个图像作为全角背景。柱子高度不高
.MainBackgroundImages {
padding-bottom: 40%;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
}
这是我写的一个片段,你可以看到高度有点问题。
.leftHalf {
background-image: url('https://via.placeholder.com/2000/FF0000/FFFFFF/?text=Left');
}
.centerHalf {
background-color: black;
color: white;
text-align: center
}
.rightHalf {
background-image: url('https://via.placeholder.com/2000/FFFF00/00000/?text=right');
}
.MainBackgroundImages {
padding-bottom: 40%;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="”clear: both;"></div>
<div class="row">
<div class="col-sm-5 MainBackgroundImages leftHalf"></div>
<div class="col-sm-2 centerHalf">
<br>
<div class="navbar navbar-default" id="custom-bootstrap-menu" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Ishka Sport</a> <button class="navbar-toggle" data-target=".navbar-menubuilder" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
</div>
<div class="collapse navbar-collapse navbar-menubuilder">
<ul class="nav navbar-nav navbar-left">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/products">kayak</a>
</li>
<li>
<a href="/about-us">Nipper Boards</a>
</li>
<li>
<a href="/contact">Accessories</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-sm-5 MainBackgroundImages rightHalf">
<div class="col-md-12 text-center"></div>
</div>
</div>
解决方案
对于全高布局,您需要告诉父元素columns
获取视口的所有可用高度,这可以通过定义下一个类来完成:
full-height {
height: 100vh;
}
并将此类分配给row
包装columns
. 在此之后,您需要设置您必须设置height
的三列的属性100%
(因此它们将使用父元素的 100% 高度)。
现在,在小型设备 ( SM ) 上,您希望更改之前的布局:所有列都将使用 Bootstrap 的 12 个可用网格。因此,您将不得不使用下一个媒体查询来管理列的高度(此处记录了 Bootstrap 3 断点:Bootstrap 3 Media Queries):
@media only screen and (max-width : 992px) {
.leftHalf {
height: 40%;
}
.centerHalf {
height: 20%;
}
.rightHalf {
height: 40%;
}
}
前面的所有解释都用于下一个工作示例,检查它是否以全屏模式播放并调整浏览器大小。正确显示中间的布局是你的功课navbar
。希望这可以帮助您作为所需布局的基础。
.full-height {
height: 100vh;
}
.leftHalf {
background-image: url('https://via.placeholder.com/2000/FF0000/FFFFFF/?text=Left');
height: 100%;
}
.centerHalf {
background-color: black;
color: white;
text-align: center;
height: 100%;
}
.rightHalf {
background-image: url('https://via.placeholder.com/2000/FFFF00/00000/?text=right');
height: 100%;
}
.MainBackgroundImages {
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
/* Custom style for Small Devices, Tablets */
@media only screen and (max-width : 992px) {
.leftHalf {
height: 40%;
}
.centerHalf {
height: 20%;
}
.rightHalf {
height: 40%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<div class="container-fluid">
<div class="row full-height">
<div class="col-md-5 MainBackgroundImages leftHalf"></div>
<div class="col-md-2 centerHalf">
<div class="navbar navbar-default" id="custom-bootstrap-menu" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" href="#">Ishka Sport</a>
<button class="navbar-toggle" data-target=".navbar-menubuilder" data-toggle="collapse" type="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-menubuilder">
<ul class="nav navbar-nav navbar-left">
<li><a href="/">Home</a></li>
<li><a href="/products">kayak</a></li>
<li><a href="/about-us">Nipper Boards</a></li>
<li><a href="/contact">Accessories</a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-5 MainBackgroundImages rightHalf"></div>
</div>
</div>
推荐阅读
- r - igraph网络没有在R中添加属性
- postgresql - 您可以在 sequelize 中定义列并在 postgres 数据库中存储一段时间吗?
- c# - c# 是否可以在 c# 中更改对象类型?
- angular - 如何扩展具有可观察性的功能?
- c# - Azure - 仅检测到来自前端的 HTTP 服务器错误
- java - 如何使用 java sdk 在 Azure Blob 存储中上传单个视频文件的多个块?
- c++ - 使用 std::basic_ifstream 的文件 I/O
- c# - 对蛇游戏进行单元测试
- magento - Magento 2.4 CE 是否有本地客户信用模块?
- kubernetes - 在 IBM 云上运行 Openshift API 的身份验证失败,出现 401 未经授权的错误