【问题标题】:Image won't stretch container width图像不会拉伸容器宽度
【发布时间】:2013-07-29 21:54:06
【问题描述】:

我无法让图像拉伸包含元素的整个宽度。页面布局是两列流体响应。主要内容包含在左栏中,而“额外”内容包含在右栏中。我创建了一个 400x400 的图像,我希望它出现在最右侧的边栏中 (class = "top-sidebar")。我一辈子都无法让图像的宽度适合顶部侧边栏的宽度。这是我的代码 sn-ps:

HTML:

<aside class="top-sidebar">
        <article>
            <p><img src="images/callustoday.jpg" alt="Call us today at 716-200-7397 to start training!"/></p>
        </article>
    </aside>

对应的CSS:

.top-sidebar {
    width: 22%;
    float: left;
    background-color: #efefef;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    margin: 2% 0 0 2%;
    padding: 0;
}

.top-sidebar img {
    max-width: 100%;
    margin: 0 auto;
    height: auto;
    display: block;
}

更令人沮丧的是,我什至无法使用 margin-left: automargin-right: auto 使图像在其父容器中居中

【问题讨论】:

    标签: css image responsive-design


    【解决方案1】:
    .callustoday {
        background-image: url(yourimage.png);
        background-size: cover;
        background-repeat: no-repeat;
        width: 100%;
        height: 100%;
    }
    

    您也应该使用border: 1px red solid; 来查看包含图像的框有多大;这样,您始终可以看到发生了什么。

    【讨论】:

      【解决方案2】:

      对于后半部分: 使用margin: auto 仅适用于居中,如果您应用样式的块元素具有定义的宽度,以像素为单位。例如,如果您为图像指定 300 像素的宽度,它将居中。由于这不是一个选项,我建议采用不同的方法:

      将图像作为background-image 放在article 标签上怎么样? 这样,您可以使用background-position: center 使图像居中,并使用background-size: cover 使其跨越整个宽度

      可以找到解决办法here

      HTML:

      <aside class="top-sidebar">
          <article class="callustoday">
          </article>
      </aside>
      

      CSS:

      .callustoday{
          background-image: url("yourimage.png");
          background-repeat: no-repeat;
          background-size: cover;
          background-position: center;
          width: 100%;
          height: 100%;
      }
      
      .top-sidebar {
          width: 22%;
          height: 100px;
          float: left;
          background-color: #efefef;
          border-radius: 5px;
          -moz-border-radius: 5px;
          -webkit-border-radius: 5px;
          margin: 2% 0 0 2%;
          padding: 0;
      }
      

      【讨论】:

      • 我在article 上将img 设置为background-image,它甚至没有出现。有趣的是,我还尝试将img 设置为固定像素宽度。它仍然不会在其包含元素内居中。我想知道包含元素的实际尺寸是否会发生一些奇怪的事情,这会导致它只跨越侧边栏宽度的 80% 左右。
      • 添加了可能的实现
      【解决方案3】:

      使用这样的浏览器缩放图像是一种不好的做法,因为它往往会产生额外的开销(不必要的大文件大小/分辨率)或糟糕的用户体验(由于放大或不正确的纵横比导致像素化的低分辨率图像) .

      话虽如此,您只是在 CSS 中设置imgmax-width。您是否也尝试过设置width: 100%?如果这不起作用,也可以尝试将float: left; 添加到.top-sidebar img

      【讨论】:

      • 我试过 width: 100% 和 float: left to the img 无济于事。如果我有更多代表点,我可以发布实际问题的图像,但基本上图像仅填充实际列宽的 80%(即使列远小于其原始 px 宽度)。
      • 您的img 标签在&lt;p&gt; 标签内,段落元素是否有影响图像最大尺寸的边距/填充?
      • 我去掉了&lt;p&gt;标签,对img尺寸没有影响。
      猜你喜欢
      • 1970-01-01
      • 2018-10-14
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多