gpt4 book ai didi

jquery - 查找字体大小大于指定的元素

转载 作者:行者123 更新时间:2023-11-28 08:38:30 24 4
gpt4 key购买 nike

我正在尝试定义一个 JQuery 语句,用于查找比输入值具有更大(或分别更小)font-size 的元素。

可能的输入值:

"12px"
"14pt"
"120%"
and so on...

我的第一种方法更像是草稿,因为它不能以这种方式工作。但也许您对如何实现解决方案有想法。这是我到目前为止所拥有的(输入值来自其他地方并且是可变的):

$('*').filter(function() {
return $(this).css('font-size') > '12px';
})

有人吗?

更新

我被要求解释为什么我需要这样的东西。我正在使用 Java 中的 Selenium2 编写一个 API,它能够以更简单、更可靠的方式查找元素并与它们交互。此函数将允许我编写类似 browser.find().titleElements() 的代码,它选择所有 h1h2、...标签,还有字体大小大于页面上平均文本的元素。

该框架还将提供选择视觉上彼此靠近或在特定方向上的元素的功能:

HtmlElement nameLabel = browser.find().labelElement("name");
HtmlElement nameInput = browser.find().closestInputElement(nameLabel);
nameInput.below("tos").select();

最佳答案

我制作了一个小插件,可以获取您要求的所有参数。不知道它有多准确,因为我是匆忙完成的。如果您的 DPI 不是 72,pt 肯定会关闭。

插件代码

(function($){
$.fn.filterByFontSize = function(size){
// Local scope vars
var relative = false,
matches = size
.toString()
.match(/^\d+(?:\.\d+)?(pt|em|%)$/i);

// Parse size
size = parseFloat(size, 10);

// Check matches
if (matches !== null) {
switch (matches[1]) {
case "pt":
size = size*96/72;
break;
case "em":
relative = true;
break;
case "%":
relative = true;
size = (size/100)+0.01;
break;
}
}

// Filter elements accordingly
return this.filter(function(){
var $this = $(this),
thisSize = parseInt(
$this.css("font-size"), 10);
if (relative) {
var parent = $this.parent();
if (parent[0] === document) {
parent = $(document.body);
}
var parentSize = parseInt(
parent.css("font-size"), 10);
return parentSize*size < thisSize;
} else {
return thisSize > size;
}
});

};
})(jQuery);

用法

var bigTextElements = $("h1,h2,h3,p").filterByFontSize("24px");

您可以在这个 test case on jsFiddle 中尝试.

converter 的额外学分帮助优化。

关于jquery - 查找字体大小大于指定的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6095684/

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