Html CSS中宽度为100%的图像上的负边距

Html CSS中宽度为100%的图像上的负边距,html,css,web,responsive-design,Html,Css,Web,Responsive Design,我有这种(简化的)情况: <div class="page-content"> <p>text</p> <p><img src="" /></p> <p>text</p> <!-- ... --> </div> 这样,我的.page contentdiv中总是有一个填充(它包含的内容比我在这里复制的内容多得多)。图像的宽度不能超过页面的宽度(减去填充) 它适用

我有这种(简化的)情况:

<div class="page-content">
  <p>text</p>
  <p><img src="" /></p>
  <p>text</p>
  <!-- ... -->
</div>
这样,我的
.page content
div中总是有一个填充(它包含的内容比我在这里复制的内容多得多)。图像的宽度不能超过页面的宽度(减去填充)

它适用于任何屏幕大小

例如:

但是,我希望在手机屏幕上显示全宽图像(绕过父级20px填充)

i、 e:

如果父级(the
)有负边距(
边距:0-20px;
),我可以解决我的问题,但是html文件是由Jekyll从标记文件生成的,我不能在其中添加类

除了删除
.page content
的填充并在每个孩子身上设置外,我找不到其他方法来实现这一点。我宁愿不这样做

我也不能设置一个固定的宽度,因为我想在每一个屏幕大小上都使用

有没有办法在CSS中选择父对象?还是另一个我不知道的功能


谢谢。

您已经回答了自己的问题。移除填充并将其设置在子元素上。(或者在子元素上使用边距,因为这才是您真正想要的)这是最好的解决方案


备选方案:可以在图像上使用定位,例如位置:绝对;这将使它脱离其父对象的流,因此忽略填充,但是您必须确切地知道图像需要放在哪里。选项1是更好的。

以及上面的建议,您可以改变依赖于设备连接的CSS(不确定您使用的是什么环境)或者取决于屏幕的宽度(如果您需要考虑屏幕大小等)。 i、 e.
@媒体屏幕和屏幕(最大宽度:400px) { p{margin:0-20px;} }


您可能希望比p更具体一些。

图像的行为方式很奇怪。我试图完成同样的事情,但发现很难。取而代之的是,我用一个div来包装图像,并添加了框大小:border box和margin:0-@您的负边距

<div><img /></div>


div {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0 -1rem;
}

div > img {
  width: 100%;
  margin: auto;
}

div{
-webkit框大小:边框框;
-moz框大小:边框框;
框大小:边框框;
保证金:0-1rem;
}
div>img{
宽度:100%;
保证金:自动;
}
我将calc放在左边和右边空白处,因为如果浏览器没有实现calc功能,它不会破坏设计。

使用并添加@media查询,以保留中到大屏幕的空白:

@media screen and (min-width: 600px) {
  .img-wrapper {
    margin: 0 0;
  }
}

同样,放置
宽度=100%
在你的img上。

你能控制img的来源吗,比如说在末尾添加一些东西,比如=“?fff”如果是,请检查该链接,这不会停止图像caching。解决这个问题,我不能添加类来针对这个用例(我不一定是标记的作者)。是的!这太棒了。
img {
  width: calc(100% + 40px);
  margin-left: calc(-20px);
  margin-right: calc(-20px);
}
@media screen and (min-width: 600px) {
  .img-wrapper {
    margin: 0 0;
  }
}