代码之家  ›  专栏  ›  技术社区  ›  Steven Smith

bootstrap 3全宽和全高布局,带3列flex或col

  •  1
  • Steven Smith  · 技术社区  · 7 年前

    我有点沉迷于这个简单的页面(我知道你可能会用它翻白眼,请忍受我)。我已经使用引导程序很多年了,直到我的经理想在手机上看到它时,有什么东西击中了我。我尝试过很多不同的方法,但是没有一个方法能与下一个截图的布局相匹配。 Navbar 在中间。宽度对我来说没问题,但是我在设置高度时有问题。

    enter image description here

    另外,在桌面上,我尝试使用三列布局,它看起来很好,直到我添加了一个中间的导航栏(它在背景中看起来很膨胀,很恐怖),并且所有的列都没有使用正确的高度,所以我怀疑CSS有点错误。我试过了 height:auto 或 height:fixed 但是没有一个是完美的,正如你在我写的代码片段中看到的那样。

    enter image description here

    <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>
    

    我用这个来做上校,但我相信我会告诉你我应该使用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>
    1 回复  |  直到 7 年前
        1
  •  1
  •   Shidersz    7 年前

    对于全高布局,需要告诉父元素 columns 要获取该视区的所有可用高度,可以定义下一个类:

    full-height {
      height: 100vh;
    }
    

    并将该类分配给 row 包裹着 柱 . 在此之后,您需要设置 height 三列的属性 100% (因此它们将使用父元素的100%高度)。

    现在,在小型设备上( 性虐待 ,您希望更改以前的布局:所有列都将使用12个可用的引导网格。因此,您必须使用与下一个类似的媒体查询来管理列的高度(这里记录了引导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>