【问题标题】:jquery - adjust all font sizes where they are declared?jquery - 调整声明它们的所有字体大小?
【发布时间】:2011-05-23 01:44:01
【问题描述】:

我正在检测用户是否安装了 Calibri:

$(document).ready(function() {
    var cWidth = $('.calibri').width();
    var aWidth = $('.arial').width();
    if (cWidth == aWidth){ 
        //No Calibri installed
    }      
});

我如何找到任何定义字体大小的类,然后将它们减少 20%?

【问题讨论】:

  • 正如@protonfish 所说,像素精度在网页设计中并不实用。而且,使用 JS 调整文本大小可能会使设计“跳来跳去”,每次页面加载。

标签: jquery css fonts font-size


【解决方案1】:

你应该使用 CSS:

body {font-size:80%}

试图在客户端精确控制字体是愚蠢的游戏;您将花费大量时间尝试最终失败。如果存在一些邪恶的黑客来强制使用您的确切字体,那么它的真正价值是什么?网页是文档,而不是电影海报。将您的字体设置为通用系列并继续。

body {font-family:sans-serif}

【讨论】:

  • 尽管我很想这样做 - 不幸的是,我需要注意这个项目的排版。 body {font-size:80%} 适用于尚未重新声明的文本,例如标题和其他内容区域等 - 我需要找到一种自动化的方式,而不是单独调整其中的每一个。
  • 无赖。对不起,我当时没有帮助。祝你好运。
【解决方案2】:

假设您的 javascript 链接工作到这一点,完成它是设置我相信的大小的问题(如果我理解正确的话),这应该是可行的:

$(document).ready(function() {
    var cWidth = $('.calibri').width();
    var aWidth = $('.arial').width();
    if (cWidth == aWidth){ 
        $('div, span, input, p, h1, h2 ...etc ').each(function(i) { /* This is suspect, it needs to 
                                  select all tags*/
            if($(this).css('font-size').length) {
                var currentSize = parseInt($(this).css('font-size'));
                var newSize = currentSize * .8;
                $(this).css('font-size', newSize + " <unit> ");
            }
        });
    }      
});

这是有问题的,但可能会让你更接近你正在寻找的东西。

编辑,大脑袋屁,拿到元素后要检查font-size。这可能仍然不完美(无法测试它),但想法是您需要检查来自$(this).css('font-size')的返回

希望这会有所帮助。我想得越多,尝试做的事情就越笨拙。

【讨论】:

  • 谢谢,这正是我正在寻找的东西。
  • 有什么问题? - 得到错误:$("body").css("font-size").each 不是函数
  • 是的,我太自负了,试试我的零钱,对不起。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2018-10-15
  • 2016-10-15
  • 2019-04-07
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多