【问题标题】:CSS Positioning Image to re-size with windowCSS 定位图像随窗口调整大小
【发布时间】:2016-03-02 09:55:58
【问题描述】:

我是 HTML 和 CSS 的新手,但我想让一个图像跨越整个标题,而不是剪掉图像的一部分,或者是固定大小。目前,整个图像不会显示出来,并且当窗口重新调整大小时,部分图像会被裁剪掉。我希望窗口是可调的,当它可调时,图像会随之调整以显示整个图像。

这是我的标题的 CSS。另外,我的页面布局是header只包含在div调用“page”中,其余内容作为“content”嵌套在“page”中。

 #header {
    background-image: url("../images/header.jpg");
    background-position: right;
    background-size: 100%;  
    width: 100%;
    height: 20%;
    left: 50%;
    position: fixed;
    top: 0%;
    transform: translateX(-50%);
}

【问题讨论】:

  • 我们能得到#pagebody 的css吗?我猜#page 设置了某种类型的边距或最大宽度来限制#header#content?另外,您为什么要使用 translate 而不是仅设置 left: 0#header 左移 50%?

标签: html css image css-position


【解决方案1】:

使您的图像成为 HTML 元素 <img> - 而不是背景 - 用更少的代码更容易获得您想要的效果。

body {
  margin: 0;
  }
#header {
    width: 100%;
    height: auto;
    position: fixed;
}
img {
  width: 100%;
}
<div id="header">
  <img src="http://placehold.it/1000x150">
</div>

【讨论】:

  • 谢谢,虽然我想要的高度有点糟糕。在某些情况下,具有自动高度会使其变大,几乎占据整个屏幕。但是,固定的高度不随宽度调整,因此图像会失真。
【解决方案2】:

这是一种使用带有填充的 background-image 来“伪造”div 高度的方法。

 body {
   margin: 0;
 }
#header {
    width: 100%;
    height: 150px;
    position: fixed;
    background-image: url("http://placehold.it/1000x150");
    background-size: contain;
    background-repeat: no-repeat;
    height: 0;
    padding-top: 15%; /* (img-height / img-width * width) */ /* (150 / 1000 * 100) */
}
<div id="header">
</div>

编辑: 如果裁剪没问题,你可以试试this

【讨论】:

  • 谢谢,这确实解决了图像能够重新调整大小的问题。但是,当我扩大了屏幕的宽度时,它占据了屏幕的很大一部分。在全屏时,它可能是 90%。我使用 350px 作为我的高度和 35% 作为顶部填充。
  • 宽度与高度明确相关,改变一个意味着改变另一个......除非您准备扭曲或裁剪,否则我在帖子中添加了一个裁剪版本以防万一。
猜你喜欢
  • 2021-10-02
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多