51

我想要一个在左侧具有固定宽度图像的 div 和一个具有背景颜色的可变宽度 div,它应该在我的设备上扩展其宽度 100%。我无法阻止第二个 div 溢出我的固定 div。

当我在可变宽度 div 处添加溢出:隐藏时,它只会跳到照片下方,在下一行。

我怎样才能以正确的方式解决这个问题(即没有hacks或margin-left,因为我需要稍后通过媒体查询使网站响应,并且我必须为每个设备使用其他分辨率图像更改图像)?

  • 初学者网页设计师试图解决响应式网站的恐惧 -

HTML:

<div class="header"></div>
<div class="header-right"></div>

CSS:

.header{
    float:left;
    background-image: url('img/header.png');
    background-repeat: no-repeat;
    width: 240px;
    height: 100px;
    }

.header-right{
    float:left; 
    overflow:hidden; 
    background-color:#000;
    width: 100%;
    height: 100px;
    }
4

2 回答 2

58

尝试删除float:leftand width:100%——然后.header-right权利div按要求运行。

.header {
  float: left;
  background: #efefef;
  background-repeat: no-repeat;
  width: 240px;
  height: 100px;
}

.header-right {
  overflow: hidden; 
  background-color: #000;
  height: 100px;
}
<div class="header"></div>
<div class="header-right"></div>

于 2012-10-04T10:54:40.443 回答
0

使用css grid你可以更轻松地实现这一目标

  • 你需要将这些 div 包装在一个包装器中,比如说parent
  • .parent display: grid
  • 屈服于两者 grid-template-areas_ .parent_grid-areachildren
  • 无需使用float: leftinchildren 调整左侧 div 的grid-template-columns宽度.parent

.parent {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-rows: auto 1fr;
  grid-template-areas: "header-left header-right";
}
.header {
    background-image: url(img/header.png);
    background-color: #ebebeb;
    background-repeat: no-repeat;
    height: 100px;
    grid-area: header-left;
}

.header-right {
    overflow: hidden;
    background-color: #000;
    width: 100%;
    height: 100px;
    grid-area: header-right;
}
<div class="parent">
  <div class="header"></div>
  <div class="header-right"></div>
</div>

css 变得更加高级,并且在高级 css 的帮助下回答,只要它对某人有用:)

于 2019-09-18T13:58:40.820 回答