如何通过 Ctrl+F 使图像可搜索

How to make images searchable via Ctrl+F

提问人:Pekka 提问时间:5/22/2016 最后编辑:Pekka 更新时间:4/5/2021 访问量:6409

问:

我有一个带有大型产品表的页面。每个产品都由一个图像表示。

我想使用浏览器的“页面搜索”功能使每个产品名称都可以搜索。搜索产品名称时,用户应以相应的图像结束。

我无法添加以文本形式可见的产品名称(该名称已经在每张图像上非常突出),但可以添加不可见的文本元素。

有没有可靠的方法可以做到这一点?

HTML CSS格式

评论

0赞 4castle 5/22/2016
所以,让 CTRL + F 使用属性?alt
0赞 Pekka 5/22/2016
@4castle本质上是的 - 尽管我对 HTML 文本和 CSS 的(可靠)恶作剧持开放态度。
1赞 Pav Sidhu 5/22/2016
我不认为真的有办法做到这一点,更好的解决方案是在您的页面上有一个搜索框之类的东西,该搜索框使用图像的属性进行搜索。你可以用 Javascript 来做到这一点。alt
0赞 TZHX 5/22/2016
将文本放在图像下方(如 z-index,而不仅仅是将文本放在下方)是否会让它被搜索?
1赞 4castle 5/22/2016
看到这个类似的问题。可悲的是,我认为不可能更改这样的浏览器功能。

答:

3赞 GMchris 5/22/2016 #1

在图像后面隐藏一些文字怎么样?像这样的东西。

<div class="image-block">
   <div class="img-description">Some text.</div>
   <img>
</div>

.image-block {
   position: relative;
}

.img-description {
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
}

.image-block img {
  position: relative;
}

基本上,这会将图像放在元素上,因此您仍然可以搜索并找到它。img-description

评论

0赞 4castle 5/22/2016
我试过了这个,我可以验证它是否有效。很有创意!我的想法是使用非常非常小的文本(如 1px)。它也奏效了。
1赞 TZHX 5/22/2016 #2

使用 ,您可以将文本隐藏在图像后面。这允许使用 Chrome、Safari 和 Firefox 搜索它(不幸的是无法在 IE 中测试)。z-index

<html>
<body>
<style>
.product-image {
    position: relative;
    width: 100px;
    height: 100px;
    display: block;
    overflow: hidden;
}
img.product {
    position:absolute;
    height: 100px;
    width: 100px;
}
div.product {
    z-index: -1;
    position: absolute;
}
</style>

<table>
<tr><td><div class="product-image"><img src="product-image.png" class="product"></img><div class="product">name 1</div></div></td></tr>
<tr><td><div class="product-image"><img src="product-image.png" class="product"></img><div class="product">something else...</div></div></td></tr>
<table>
</body>
</html>

它在FF和Chrome中运行良好,但是在Safari中,它会从图像后面提取文本,您的用户可能会觉得这很不和谐。

1赞 Codemonkey 6/28/2019 #3

这里的解决方案存在一个问题,即用户无法判断他们找到了什么,因为他们正在搜索的文本隐藏在图像后面。如果屏幕上有 12 张图片,则不清楚哪一张符合他们的搜索。

我做了类似的事情,但我只是在图像上方有透明的文字。.<p style="color:transparent">My product title</p>

这样,当浏览器滚动到正确的区域时,用户还可以在键入文本时看到文本周围增长的蓝色选择。

(至少在 Chrome 中,“透明”文本一旦被选中就会变为可见)