【问题标题】:3 divs - make the middle one responsive3 个 div - 使中间的一个响应
【发布时间】:2015-03-19 19:25:33
【问题描述】:

我在创建响应式标题时遇到了一些问题,我在包装器中放置了 3 个 div(左 div - 徽标,中间 div - 图像,右 div - 注销图像)。

现在我希望当用户从平板电脑(小分辨率)访问我的页面时,中间 div 内的图像会响应并且会变小。

但问题是当我将页面缩小到较小的分辨率(通过缩小浏览器或从平板电脑访问页面)时,正确的 div 会在下面,如果我缩小更多的第二个 div。

这是我的代码:

<div class="wrapper"> 
<div class="left">
    <a href="#">
        <img src="img/logo.png" />
    </a>
</div>
<div class="middle">
    <a href="#">
        <img src="img/middle.png" />
    </a>
</div>
<div class="right">
    <a href="#">
        <img src="img/logout.png" />
    </a>
</div>

.left {
   float:left;
}
.middle{
   float:left;
    width:100%;
 }
  .right{
      float:right;
 }
  • 我希望中间图像具有响应性,因此当我缩小页面大小时它会越来越小,并且标题中的任何内容都不会被破坏

【问题讨论】:

  • edit:那是因为中间 div 的宽度为 100%,所以右边的 div 没有空间浮动在同一行上。
  • 我很想生活在一个去掉那个愚蠢的浮动属性的网络环境中。 它对你学习定位和显示属性没有帮助

标签: html css responsive-design


【解决方案1】:

鉴于您描述的布局,我倾向于完全放弃 float: 并使用 position:relative;position:absolute;margin 代替:

.wrapper {
position: relative;
height: 122px;
border:1px solid rgba(255,0,0,1);
}

.middle {
position: relative;
margin:10px 224px;
height: 100px;
border:1px solid rgba(0,255,0,1);
}

.left {
position: absolute;
top: 10px;
left: 10px;
width:200px;
height: 100px;
border:1px solid rgba(0,0,255,1);
}

.right {
position: absolute;
top: 10px;
right: 10px;
width:200px;
height: 100px;
border:1px solid rgba(0,0,255,1);
}
<div class="wrapper"> 
<div class="left">
    <a href="#">
        <img src="img/logo.png" />
    </a>
</div>
<div class="middle">
    <a href="#">
        <img src="img/middle.png" />
    </a>
</div>
<div class="right">
    <a href="#">
        <img src="img/logout.png" />
    </a>
</div>

【讨论】:

    【解决方案2】:

    您需要设置左侧/右侧边栏的宽度

    .wrapper {
        overflow:auto;
        border:1px solid #ccc;
    }
    .left {
        float:left;
        width:100px;
    }
    .middle {
        padding:0 120px 0 100px; /* padding as the sidebar widths */
        text-align:center;
    }
    .middle img {
        max-width:100%;
    }
    .right {
        float:right;
        width:120px;
    }
    <div class="wrapper">
        <div class="left">
            <a href="#"><img src="http://placehold.it/100x100&text=left" /></a>
        </div>
        
        <div class="right">
            <a href="#"><img src="http://placehold.it/120x200&text=right" /></a>
        </div>
        
        <div class="middle">
            <a href="#"><img src="http://placehold.it/450x350&text=center" /></a>
        </div>
    </div>

    演示地址:http://jsfiddle.net/xcdd8uwq/

    【讨论】:

      【解决方案3】:

      试试这个:

      CSS:

      .left {
          float:left;
      }
      .middle {
          display:table-cell;
      }
      .right {
          float:right;
      }
      img{
          max-width:100%;
      }
      

      HTML:

      <div class="wrapper">
          <div class="left"> <a href="#">
              <img src="http://lorempixel.com/200/200/sports/1/" />
          </a>
      
          </div>
          <div class="right"> <a href="#">
              <img src="http://lorempixel.com/200/200/sports/3/" />
          </a>
      
          </div>
          <div class="middle"> <a href="#">Dummy text</a>        </div>
      </div>
      

      演示:http://jsfiddle.net/lotusgodkk/GCu2D/525/ // 带文字

      演示:http://jsfiddle.net/lotusgodkk/GCu2D/526/ // 带图片

      注意:更改 html 布局。将浮动 div 放在一起。见html

      【讨论】:

      • 看起来不错!谢谢!但是如果中间div里面会有图像,它会起作用吗?我需要中间 div 来包含响应式图像吗?
      • 会的。您需要在 img css 中添加“max-width:100%”,以免溢出。此外,您还必须根据您的布局调整图像对齐方式。这应该很容易
      【解决方案4】:

      试试这个:http://jsfiddle.net/76kMN/22/

      <div class="wrapper"> 
      <div class="left">
          <a href="#">
              <img src="http://www.92pixels.com/wp-content/uploads/2011/02/ldi6.jpg" />
          </a>
      </div>
      <div class="middle">
          <a href="#">
              <img src="http://cdn4.colorlib.com/wp/wp-content/uploads/sites/2/2014/02/Olympic-logo.png" />
          </a>
      </div>
      <div class="right">
          <a href="#">
              <img src="http://www.92pixels.com/wp-content/uploads/2011/02/ldi6.jpg" />
          </a>
      </div>
      
      .left {
          float: left;
          width: 20%;
      }
      
      .wrapper {
          float: left;
      
          overflow: hidden;
          width: 100%;
      }
      .middle{
         float:left;
          width:60%;
       }
      img {
          max-width: 100%;max-height: 100%;
      }
        .right{
            float:right;   width: 20%;
       }
      

      【讨论】:

        【解决方案5】:

        试试这个

        .left {
        
        
         float:left;
            width:20%
        }
        .middle{
           float:left;
            width:60%;
         }
          .right{
              float:right;
            width:20%;
         }
        

        【讨论】:

        • 请为您的答案添加一些解释。
        • 给主 div 宽度 100% 例如 wrapper{width:100%} 然后按照我在回答中提到的将它分成三部分
        • 当您在平板电脑或手机或电脑上看到它时它会自动调整宽度
        猜你喜欢
        • 2016-04-28
        • 2015-07-24
        • 2021-09-21
        • 2015-07-24
        • 1970-01-01
        • 1970-01-01
        • 2019-02-08
        • 2020-09-23
        • 1970-01-01
        相关资源
        最近更新 更多