【问题标题】:Position a pseudo element on HTML's map > area在 HTML 地图 > 区域上放置一个伪元素
【发布时间】:2014-07-12 19:14:06
【问题描述】:

我正在使用 HTML map,我需要在其 area 上使用伪元素来显示徽章并相对定位它们。

编辑:我不能硬编码它的坐标,因为我要处理 HTML 中的很多我无法预测的区域,因为我的代码是从顶部注入的现有的 HTML。

这是我尝试的屏幕,以及我想做的事情:

Here's a fiddle(第一只小猫脸上的区域)

tl;dr :我可以实现这一点(根据偏好,仅在 CSS 中)?


我尝试了什么

问题,我已经看到 area 元素 & 需要设置为 display:none 才能工作,阻止我的伪元素显示。

所以,我把它做成了一个块,它在地图上仍然有它的位置(很好)并且我的伪元素出现了,但与该区域的实际坐标无关......

使用这个 CSS :

area{
    display:block;
    position:relative;
}
area::after{
    display:block;
    content:"10";
    position:absolute;
    left:0px;
    top:0px;
    text-align:center;
    color:white;
    width:20px;
    height:20px;
    background-color:red;
    border-radius:20px;
    border:1px solid red;
}

我试着摆弄边距,不同的定位,不同的显示,我还没有找到好的组合。

我想检索该区域的coords 以使用CSS3 的attr() 定位伪元素,但之后我无法拆分它的值。

我已经阅读了this question 关于使用外部(和旧的)jQuery 插件对area 进行样式设置,但它不能满足我的需求,而且我在网络上找不到任何线索。

有人有提示吗?我觉得我已经接近它了,但我的想法已经不多了。

【问题讨论】:

  • 为什么不创建一个相对定位的 div(使用 z-index)而不是一个区域并在其上显示您的徽章?
  • 问题在于area 是一个与img 很相似的替换元素,所以你不能真正使用::before::after 伪元素。跨度>
  • @vogomatix:大概是因为它没有语义。虽然是的,但图像地图通常很难用 CSS 设置样式,所以它可以作为最后的手段。
  • 我忘了补充一点,我正在寻找最轻量级的解决方案,仅指 CSS。我可能会使用 JS 并为每个区域创建一个 div,提取区域的坐标并将其放在最后。我省略了一些重要的东西,我不能硬编码任何坐标,因为我要处理 HTML 中的很多我无法预测的区域,因为我的代码是从顶部注入的现有的 HTML。 (见编辑)

标签: html css pseudo-element


【解决方案1】:

我想到了 2 个想法。

一个:http://jsfiddle.net/F6jtg/2/

area{
    display:block;
    position: absolute;
    top: 40px; 
    left: 20px; 
    width: 100px; 
    height: 60px; 
}

二:http://jsfiddle.net/F6jtg/3/

HTML

<area
  Shape="rect"
  coords="20,40,120,100"
  style="top: 40px; left: 20px; width: 100px; height: 60px;"
  alt="Kitten 1"
  href="#"></area>

CSS

area{
    display:block;
    position: absolute;
}

【讨论】:

  • 它们实际上并不是两个独立的想法,但它看起来确实是一个巧妙的解决方案:-)
  • 抱歉,我遗漏了一个重要信息:我不能硬编码任何坐标,因为我要处理 HTML 中的很多区域,我不能预测,因为我的代码是在现有 HTML 的顶部注入的。
  • @vogomatix 是的。但在“二”的情况下,区域定位仅在 HTML 上。
  • 耶!第二种解决方案效果很好 - 我编辑了你的答案,坐标是错误的:area 的坐标格式为 (x1,y1,x2,y2)!
猜你喜欢
  • 2011-04-04
  • 2019-02-06
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多