【问题标题】:An object with fixed sizes inside :before or :after pseudo element在 :before 或 :after 伪元素内具有固定大小的对象
【发布时间】:2016-06-30 09:23:16
【问题描述】:

我知道我可以这样做:

.container:after {
    content: url("../images/img.png");
    display: inline-block;
    width: 100%;
    height: auto;
}

有没有我可以在不参考图像的情况下实现类似的功能?我需要的是伪元素根据父元素的宽度(例如.container)来改变它的高度。与width:100%; height: auto; 的图像非常相似 非常感谢!

【问题讨论】:

  • 你想要:after 上的什么而不是图像?
  • 任何。我只需要固定比例的伪元素。这样当 .container 的宽度发生变化时, :after 的高度也会相应地发生一定比例的变化。
  • 我的意思是如果我在 :after 中使用图像,它有一些比例,所以伪元素会有它,但我真的不需要图像。
  • 我需要伪元素来占据 .container 的全宽,并且有一些取决于容器宽度的高度。即当容器宽度为 100px - 伪元素高度为 200px,当容器宽度为 50px 时,伪元素高度应为 100px .. 等等。

标签: css pseudo-element


【解决方案1】:

来自我对this related question的回答:

与此同时,如果您希望能够调整 :after 伪元素和生成的图像的大小,则需要将其应用为背景图像,并且 - 假设浏览器支持不是问题 -使用 background-size 以及 width 和 height 来缩放它(基于这些属性适用于伪元素框的理解)。

所以,而不是

content: url("../images/img.png");

使用

background-image: url("../images/img.png");
background-size: cover;

(或简写,background: url("../images/img.png") 0 0 / cover)

至于按比例缩放您的伪元素,我认为您应该能够使用padding-bottom 技巧来完成此操作。对于比例为 1:2 的图像,padding-bottom: 200% 似乎在此示例中有效:

.container {
  border: thick solid;
  margin: 1em;
}

.large.container { width: 100px; }
.small.container { width: 50px; }

.container::after {
  content: '';
  display: block;
  background: url(http://placehold.it/100x200) 0 0 / cover;
  padding-bottom: 200%;
}
<div class="large container"></div>
<div class="small container"></div>

【讨论】:

  • 如何解决“高度基于父元素宽度的伪元素”?
  • 有趣的是,就在上周我提议在 W3C 样式中添加 height:width(100%) 功能:lists.w3.org/Archives/Public/www-style/2016Mar/0161.html
  • @c-smile:OP 在问题下讨论了 cmets 中的比例。另外,我看到了那个线程 - 任何建议将属性值基于同一元素上的另一个属性值的任何事情都必然会失败,因为有人会问你你期望width: height(100%); height: width(100%) 如何计算,这两个属性有一个相互循环依赖。
  • 完美! BoltClock,谢谢伙计,你拯救了我的一天。虽然它仍然是一个图像,但我认为我们别无选择。非常感谢。 c-smile 如果我们将伪元素的宽度设置为 100% 就可以了。我们现在有了父元素的宽度和图像的比例.. 即任意比例
  • @BoltClock 在那里阅读我的建议。 width: height(100%) 不可接受 - 将评估为 width: auto。
猜你喜欢
  • 2011-06-22
  • 1970-01-01
  • 2013-06-07
  • 2015-02-08
  • 2022-12-10
  • 1970-01-01
  • 2013-01-09
  • 2020-03-13
  • 2020-09-20
相关资源
最近更新 更多