gpt4 book ai didi

html - Angular:使用 css 变量更改字体大小是适用的,但不会在浏览器中反射(reflect)某些字段

转载 作者:行者123 更新时间:2023-12-01 23:42:42 24 4
gpt4 key购买 nike

我将 CSS 变量用于一项功能,用户可以选择将字体大小更改为小号、中号或大号。所以对于大多数领域,它都按预期工作。但对于某些字段,该值被应用但没有反射(reflect)

:host-context(.mediumFont) {
--fontSize: 11px;
}
:host-context(.largeFont) {
--fontSize: 12px;
}
:host-context(.smallFont) {
--fontSize: 10px;
}

refClassArray: RefClassInterface[] = [
{ class: 'font-small', refClass: 'smallFont' },
{ class: 'font-medium', refClass: 'mediumFont' },
{ class: 'font-large', refClass: 'largeFont' },
];
defaultFontSize = 'mediumFont';

changeFontSize(selector: string) {
this.defaultFontSize = selector;
let docBody = document.body;
console.log(document.getElementById(selector));
docBody.classList.add(selector);
this.refClassArray.forEach((refClass: RefClassInterface) => {
if (selector !== refClass.refClass) {
docBody.classList.remove(refClass.refClass);
document.querySelector('#' + refClass.refClass).setAttribute('style', 'font-weight: normal;' + 'pointer-events: auto;');
} else {
document.querySelector('#' + refClass.refClass).setAttribute('style', 'font-weight:' + 'bold;' + 'pointer-events: none;');
}
});
this.ieStyles.iEfont(selector);
}

以上是我使用的逻辑。

enter image description here

enter image description here

第一张图片来自运行良好的元素。当我将鼠标悬停在 --font-size 上时, 11px体现。第二个是它没有按预期工作的那个,当我将鼠标悬停在 --font-size 上时什么都没有出现。这两个元素都在 <body>

最佳答案

您不应该通过直接访问修改您的 html 代码。例如,这可能会使您的应用程序容易受到 XSS 攻击。

相反,Angular 团队建议使用 Renderer2 .

获取您的代码并对其进行修改以使用它,将导致以下结果:

refClassArray: RefClassInterface[] = [
{ class: 'font-small', refClass: 'smallFont' },
{ class: 'font-medium', refClass: 'mediumFont' },
{ class: 'font-large', refClass: 'largeFont' },
];
defaultFontSize = 'mediumFont';

changeFontSize(selector: string, indexOfClassToAdd: number) {
this.defaultFontSize = selector;
const el: Element = document.getElementById(selector));
// Iterate each class in the list to remove it.
this.refClassArray.forEach((refClass: RefClassInterface) => {
// Remove the class from the specific element only if its present.
if (el.classList.contains(refClass.refClass) {
this.renderer2.removeClass(el, refClass.refClass);
};
});
this.renderer2.addClass(el, refClassArray[indexOfClassToAdd].refClass);
};

这意味着您知道要应用的 class 是什么(并且它存在于 style.scss 或适当的 scss 文件中)。

亲切的问候。

关于html - Angular:使用 css 变量更改字体大小是适用的,但不会在浏览器中反射(reflect)某些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64766661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com