【问题标题】:How to modify computed font-size in Javascript如何在Javascript中修改计算的字体大小
【发布时间】:2019-02-27 21:21:08
【问题描述】:

我正在尝试更改文本的字体大小,使其适合动态 div 的尺寸。

我找到了一些符合要求的 jquery 代码,但是我不能在我的代码中使用 jquery,需要将其转换为 vanilla javascript。

当我运行转换后的代码时,我收到此错误: '未捕获的 DOMException: 无法在 'CSSStyleDeclaration' 上设置 'font-size' 属性:这些样式是计算出来的,因此 'font-size' 属性是只读的。'

这是我需要转换的原始 jQuery 代码:

elements = $('.resize')
el = elements[_i]

和:

resizeText = function () {
    var elNewFontSize
    elNewFontSize = (parseInt($(el).css('font-size').slice(0, -2)) - 1) + 'px'
    return $(el).css('font-size', elNewFontSize)
  }

这是我的转换:

elements = document.getElementsByClassName('resize')
el = elements[_i]

和:

resizeText = function () {
    var elNewFontSize
    elNewFontSize = (parseInt(window.getComputedStyle(el).fontSize.slice(0, -2)) - 1) + 'px'
    window.getComputedStyle(el).fontSize = elNewFontSize
    return elNewFontSize
  }

我做错了什么?

【问题讨论】:

  • 添加;先到行尾。 (可能是复制错误)
  • @Mikes3ds 我在 Vue2.0 中编码,并以某种方式结束我的 JS ;生成语法错误。
  • @Mikes3ds 你是说需要分号才能使代码正常工作吗?
  • 没有,刚刚注意到,对VUE js框架不熟悉

标签: javascript jquery css dom


【解决方案1】:

您需要将新大小设置为元素的 style.fontSize 属性,而不是从 window.getComputedStyle() 获得的计算值,例如

el.style.fontSize = elNewFontSize;

--

顺便说一句,没有直接关系,没有理由有两次变量名,你可以用声明初始化它,即,而不是:

var elNewFontSize
elNewFontSize = ...

简单写

var elNewFontSize = ...

【讨论】:

  • 谢谢@isapir。附带说明一下,我正在 window.onload 和 window.onresize 上运行代码。但是在调整大小时不起作用。为什么会这样?
  • @Marcello 是否在我们可以看到的公共页面上?我确定有一个简单的解释
  • 不幸的是,代码不公开。将尝试用钢笔复制并重新发布。
猜你喜欢
  • 2012-03-08
  • 2017-04-03
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
相关资源
最近更新 更多