如何在宽度属性消失时使Bootstrap响应div转换

时间:2015-06-23 18:42:46

标签: html css twitter-bootstrap

我尝试做的是让我的响应宽度div在失去百分比width时进行转换,这样就没有这么多了突然跳。例如,当页面的屏幕带有

 <div class="row">
       <div class="col-md-3">
           ...
       </div>
       <div class="col-md-3">
           ...
       </div>
       <div class="col-md-3">
           ...
       </div>
       <div class="col-md-3">
           ...
       </div>
 </div>

低于992px,4个内部div失去了width:25%;属性,实际上没有width属性。当发生这种情况时,我希望平稳过渡到新的width(跨越其包含div)。

我尝试的是

 <div class="row">
       <div class="col-md-3 transition-width">
           ...
       </div>
       <div class="col-md-3 transition-width">
           ...
       </div>
       <div class="col-md-3 transition-width">
           ...
       </div>
       <div class="col-md-3 transition-width">
           ...
       </div>
 </div>

我所谓的transition-width类是由

定义的
.transition-width { transition: width 1s ease-out; webkit-transition: width 1s ease-out; }

但由于某种原因,当我切换断点时,没有任何转换。知道为什么会这样吗?为了实现目标,我需要做些什么呢?

1 个答案:

答案 0 :(得分:5)

看看这个示例代码,当您调整窗口大小时,您将看到预期的转换。这是你想要得到的吗?

当您使用全部col-xx-xx时,您将始终获得所需的百分比宽度...例如class="col-xs-3 col-sm-3 col-md-3"
在此演示中,底行div的宽度始终为25%。

现实情况是,普通用户在设备上打开网站,该屏幕就是这样,用户不会看到这种过渡效果。

我设置了892px的媒体断点来测试。

enter image description here

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="../../favicon.ico">

    <title>Starter Template for Bootstrap</title>

    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<style>
body {
  padding-top: 50px;
}
  
.bg-orange {
  background-color: orangered;
} 
.bg-green {
  background-color: greenyellow;
}
.bg-violet {
  background-color: blueviolet;
}     
.transition-width { 
    transition: width 10s ease-out; 
    webkit-transition: width 10s ease-out; 
} 
    
    
@media(min-width:892px)  { 
  div{width:100%;} 
}
@media(max-width:892px)  {
  div{width:100%;} 
}    
    
</style>

</head>

<body>

    <nav class="navbar navbar-inverse navbar-fixed-top ">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand " href="#">Project name</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav navbar-right">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

<div class="container col-lg-12"><br><br></div>
<div class="container col-lg-12">
    
<h3>Transition when resized.</h3>

  <div class="row">
       <div class="col-md-3 bg-primary">
           ...
       </div>
       <div class="col-md-3 bg-orange">
           ...
       </div>
       <div class="col-md-3 bg-violet">
           ...
       </div>
       <div class="col-md-3 bg-green">
           ...
       </div>
 </div>
    
 <div class="container col-lg-12"><br><br></div>
    
 <div class="row">
       <div class="col-md-3 bg-primary transition-width">
           ...
       </div>
       <div class="col-md-3 bg-orange transition-width">
           ...
       </div>
       <div class="col-md-3 bg-violet transition-width">
           ...
       </div>
       <div class="col-md-3 bg-green transition-width">
           ...
       </div>
 </div>   
 
<div class="container col-lg-12"><br><br></div>
    
<div class="row">
       <div class="col-xs-3 col-sm-3 col-md-3 bg-primary">
           ...
       </div>
       <div class="col-xs-3 col-sm-3 col-md-3 bg-orange">
           ...
       </div>
       <div class="col-xs-3 col-sm-3 col-md-3 bg-primary">
           ...
       </div>
       <div class="col-xs-3 col-sm-3 col-md-3 bg-orange">
           ...
       </div>
 </div>    
</div><!-- /.container -->


    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    
</body>
</html>