You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery读取SVG图标(<i>标签)尺寸时存在异常问题

解决H3标题与右侧SVG图标布局加载错乱问题

问题现象

左侧为H3标题,右侧是绝对定位的包含SVG图标(通过<i>标签引入)的容器,多数场景下显示正常,但页面加载时偶尔出现布局错乱,浏览器窗口resize后可自动恢复正常。

排查过程

  • 尝试在图标旁添加HTML硬编码空格,无效。
  • 排查发现页面加载阶段jQuery读取的元素尺寸值异常,并非菜单实际宽度。
  • 因项目需兼容IE8,采用jQuery实现相关布局逻辑。
  • 为脚本添加200ms的setTimeout后,页面加载可快速恢复正常,推测问题与资源加载顺序相关;CSS及图标脚本已放置在<head>标签顶部、jQuery之前。
  • 将<i>图标替换为纯文本填充<li>后,脚本运行正常,确定问题大概率与<i>标签的加载流程有关。
  • 进一步验证发现:jQuery读取<i>元素宽度时,即便使用outerWidth(true),仍可能获取不含内边距的错误宽度值。

解决方案

当图标尺寸相近时,最简单的解决方式是为<li>设置固定最小宽度,确保页面加载时jQuery能读取到符合预期的宽度值,避免布局错乱。

修正后的代码片段

JavaScript(修正选择器错误)

function h3_ellipsis(){
    // 修正选择器:添加.前缀指定class选择器
    var icon_w = $(".icons").outerWidth(true);
    var menu_w = $(".menu").outerWidth(true);
    
    $(".headline").css("padding-right", icon_w + 15);
}

// 页面加载完成后执行
$(window).on("load" ,function(){h3_ellipsis();});
// 窗口 resize 时重新计算
$(window).on('resize', function(){h3_ellipsis();});

CSS(为li添加最小宽度)

/* 精准指定目标div,避免影响其他元素 */
div.menu{height: 50px; width: 400px; border: 1px solid red; position: relative;}

h3.headline{line-height: 50px; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; box-sizing: border-box; margin: 0;}

ul.icons{position: absolute; top: 0; right: 0; list-style: none; padding: 0; margin: 0;}

/* 添加最小宽度,根据图标实际尺寸调整数值 */
li{line-height: 50px; float: left; margin: 0 0 0 5px; min-width: 30px; text-align: center;}

HTML(无需修改)

<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div class="menu">
    <h3 class="headline">HeadlineHeadlineHeadlineHeadlineHeadlineHeadlineHeadlineHeadlineHeadline</h3>
    
    <ul class="icons">
      <li><a href="#"><i class="fa fa-water"></i></a></li>
      <li><a href="#"><i class="fa fa-water"></i></a></li>
    </ul>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:11:28