如何在“:after”伪元素的内容中显示元素的宽度?

How to show the width of an element in the content of an ':after' pseudo-element?

我想在伪元素中显示元素的宽度。

所以我的 CSS 看起来像

:after {
    content: "{width goes here}";
    display:block;
}

但我不知道仅 CSS 是否可行。

如果没有,我该如何使用 jQuery?

目前无法单独使用 CSS 执行此操作。

您可以使用 JavaScript 遍历元素并根据元素的计算宽度设置自定义 data-width 属性。这样做时,您可以使用 attr(data-width)content 值来将此属性值显示为伪元素的内容。 CSS attr() function 允许您检索元素的属性并显示值。

例如:

var elements = document.querySelectorAll('[data-width]');
for (var i = 0; i < elements.length; i++) {
  elements[i].dataset.width = elements[i].offsetWidth;
}
[data-width]:after {
  content: ' ' attr(data-width) 'px';
}
[data-width] {
  border: 1px solid;
}
div {
  width: 300px;
  height: 30px;
}
<div data-width></div>
<p data-width>Paragraph element</p>
<span data-width>Span</span>

由于 data-width 属性只设置一次,您需要添加一个 resize 事件侦听器,以便在它们更改时设置相应的宽度值。

例如:

window.addEventListener('resize', setDataWidth, true);
setDataWidth();

function setDataWidth() {
  var elements = document.querySelectorAll('[data-width]');
  for (var i = 0; i < elements.length; i++) {
    elements[i].dataset.width = elements[i].offsetWidth;
  }
}
[data-width]:after {
  content: ' ' attr(data-width)'px';
}
[data-width] {
  border: 1px solid;
}
div {
  width: 30%;
  height: 30px;
}
<div data-width></div>
<p data-width>Paragraph element</p>
<span data-width>Span</span>