You need to enable JavaScript to run this app. 如何用jQuery实现伪类宽度与另一div一致 现有方案无效求助
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery实现伪类宽度与另一div一致 现有方案无效求助

原方案失效原因
  • 第一个写法是在CSS代码中直接嵌入jQuery语法,CSS本身无法识别、执行JS代码,因此不会生效
  • 第二个写法的核心问题是:before这类伪元素不属于页面DOM树,jQuery/JS的选择器无法直接选中伪元素节点,因此调用css()方法修改样式不会生效
可行实现方案

目前最通用的实现方式是借助CSS自定义属性(CSS变量)传递宽度值,具体代码如下:

1. CSS部分

.myclass:before {
  /* 必须设置content,空字符串也可,否则伪元素不会渲染 */
  content: "";
  /* 根据需求设置display,inline类型的元素设置width无效,可设为block/inline-block等 */
  display: block;
  /* 引用CSS变量获取宽度 */
  width: var(--mydiv-width);
  /* 其他你需要的伪元素样式 */
}

2. JS部分(适配你原使用的jQuery语法)

// 获取div.mydivclass的宽度,拼接px单位
const divWidth = $("div.mydivclass").width() + "px";
// 把宽度值赋值给.myclass元素上的CSS变量
$(".myclass").css("--mydiv-width", divWidth);

如果div.mydivclass的宽度会随窗口缩放、DOM改动动态变化,需要添加事件监听实时更新变量值:

// 窗口大小变化时更新宽度
$(window).on("resize", () => {
  const divWidth = $("div.mydivclass").width() + "px";
  $(".myclass").css("--mydiv-width", divWidth);
});

可选无JS方案(仅适用特定结构)

如果.myclass是div.mydivclass的直接子元素,无需JS,直接给伪元素设置width: 100%即可继承父元素宽度。

注意事项
  • 伪元素必须设置content属性,哪怕值为空字符串,否则伪元素不会被渲染
  • 如果伪元素的display属性为inline(默认值),设置width不会生效,需要修改为block、inline-block或者根据定位需求设置为其他支持宽度的类型
  • 如果页面上有多个.myclass或者div.mydivclass,需要对应调整选择器的匹配逻辑

内容的提问来源于stack exchange,提问作者Sidharth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 11:48:03