【问题标题】:Turning text into icon with content as tooltip with CSS only仅使用 CSS 将文本转换为带有内容作为工具提示的图标
【发布时间】:2020-10-21 16:13:04
【问题描述】:

我正在尝试将超链接转换为图标,同时将内容文本转换为工具提示。问题是我在一个只有 CSS 可以玩的地方工作,我不能修改 HTML 或添加任何 Javascript。我正在从表中的外部源检索数据,其中一列是超链接 - 我想将其转换为带有文本内容的图标,作为悬停时的工具提示方式。

下面是我已经完成了多远,有什么方法可以让:hover 部分的外观、感觉和行为更像一个工具提示?或者是否有另一种方法可以完全实现我的目标?

.external-link {
    font-size: 0;
}

.external-link:after {
    content: ' ';
    background: url(https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196) no-repeat;
    display: inline-block;
    height: 32px;
    width: 32px;
}

.external-link:hover {
    /* Well it shows the text, but it ain't pretty nor very functional.. */
    font-size: initial;
}
<a href="https://www.stackoverflow.com/" class="external-link">Stack Overflow</a>

【问题讨论】:

    标签: css jira confluence css-hack


    【解决方案1】:

    这有点棘手,但可以通过修改 beforeafter 伪元素来实现。您只需在 content 属性中编写工具提示内容,否则,您应该修改 HMTL 本身。

    所以你的最终代码应该是这样的:

    .external-link {
      font-size: 0;
    }
    
    .external-link::before {
      content: 'Stack Overflow';
      visibility: hidden;
      width: 120px;
      background-color: #555;
      color: #fff;
      text-align: center;
      padding: 5px 0;
      border-radius: 6px;
      /* Position the tooltip text */
      position: absolute;
      left: 40px;
      z-index: 1;
      /* Fade in tooltip */
      opacity: 0;
      transition: opacity 0.3s;
    }
    
    .external-link::after {
      content: ' ';
      background: url(https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196) no-repeat;
      display: inline-block;
      height: 32px;
      width: 32px;
    }
    
    .external-link:hover.external-link::before {
      /* Well it shows the text, but it ain't pretty nor very functional.. */
      font-size: initial;
      visibility: visible;
      opacity: 1;
    }
    <a href="https://www.stackoverflow.com/" class="external-link">Stack Overflow</a>

    【讨论】:

    • 谢谢!我现在看到我未能指定我正在寻找一种使其成为动态的方式 - 即内容应该始终是内容已经是的任何内容......我将相应地更新问题,如果这是不可能的将您的答案标记为已接受。
    • @happytrooper 不幸的是,如果您有这样的单个元素,则无法根据您的 HTML 制作工具提示文本,您应该更改 HTML 结构或使用 JS 来实现这一点。
    • 谢谢@SMAKSS!标记为已接受 - 不幸的是,由于我的声誉太低,无法投票/标记为有用:)
    【解决方案2】:

    您可以像下面这样编辑您的 CSS。只是一些想法。不确定是否可以将工具提示文本写入 css

    .external-link {
        font-size: 0;
        position: relative;
    }
    
    .external-link:after {
        content: ' ';
        background: url(https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196) no-repeat;
        display: inline-block;
        height: 32px;
        width: 32px;
    }
    
    .external-link:before {
        content: 'Text';
        position: absolute;
        display: inline-block;
        height: auto;
        padding: 2px 5px;
        width: 100%;
        display:none;
        color: white;
        font-size:initial;
        background: #00000099;
        bottom: -15px;
    }
    
    .external-link:hover:before {
        /* Well it shows the text, but it ain't pretty nor very functional.. */
        display:block;
    }
    <a href="https://www.stackoverflow.com/" class="external-link">Stack Overflow</a>

    【讨论】:

    • 谢谢!我现在看到我没有指定我正在寻找一种动态的方式 - 即内容应该始终是内容已经是......我会相应地更新问题!
    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    相关资源
    最近更新 更多