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

JQuery字体缩小按钮功能异常:点击后字体反而增大

问题分析

你遇到的核心问题是单位不匹配:

  • 你给.box设置的是pt单位的字体大小,但jQuery的css('font-size')会返回浏览器计算后的**像素(px)**值。比如14pt会被浏览器转换成约18.67px,parseInt后得到18;你把减1后的17作为pt设置回去,17pt≈22.67px,比原来的尺寸更大,所以字体反而变大。
解决方案

提供三种可行的解决方式,按需选择:

方式1:统一使用px单位

直接把初始样式和JS里的单位都改成px,避免单位转换问题:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="fontDown()">button</button>
    
<div class="box" style="font-size: 19px; line-height: 19px;">sometext</div>
function fontDown() {
  var curSize = parseInt($('.box').css('font-size'));
  curSize--;
  $('.box').css({
    'font-size': `${curSize}px`,
    'line-height': `${curSize}px`
  });
}

方式2:准确转换px与pt单位

利用标准的dpi换算规则(96dpi下,1in=96px=72pt),把获取到的px值转换成pt后再计算:

function fontDown() {
  const curPx = parseInt($('.box').css('font-size'));
  // px转pt:pt = px * 72 / 96
  let curPt = curPx * 72 / 96;
  curPt--;
  $('.box').css({
    'font-size': `${curPt}pt`,
    'line-height': `${curPt}pt`
  });
}

方式3:用data属性存储当前字号

通过元素的data-*属性直接存储当前的pt值,完全跳过单位转换:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="fontDown()">button</button>
    
<div class="box" data-font-size="14" style="font-size: 14pt; line-height: 14pt;">sometext</div>
function fontDown() {
  let curSize = parseInt($('.box').data('font-size'));
  curSize--;
  $('.box')
    .data('font-size', curSize)
    .css({
      'font-size': `${curSize}pt`,
      'line-height': `${curSize}pt`
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:11:20