html - 具有数据属性值作为 CSS 内容的通知徽章

标签 html css sass icons

我正在尝试使用 CSS/SCSS 制作自定义通知徽章。我想像在 HTML 代码中一样从 html 属性(数据徽章)插入内容,但是当我在 CSS 上调用它时,它什么也没显示。

HTML

<ul id="nav-mobile" class="right hide-on-med-and-down">
    <li>
        <a href="#" class="nav-icons"><i class="material-icons" data-badge="4">info</i></a>
    </li>
    <li>
        <a href="#" class="nav-icons"><i class="material-icons">email</i></a>
    </li>
    <li>
        <a href="#" class="dropdown-button" data-activates="dropdown-user">
            <div class="chip">
                <img src="/images/personal.png" alt="Contact Person">
                                Jane Doe
                                <i class="material-icons right">arrow_drop_down</i>
            </div>
        </a>
    </li>
</ul>

SCSS

a.nav-icons {
    max-height: 60px !important;
    i.material-icons {
    max-height: 60px;
    font-size: 2rem;
    line-height: 60px;
        &[data-badge] {
            content: attr(data-badge);
            position: relative;
            color: #fff;
                &::after {
                    content: attr(data-badge);
                    position: absolute;
                    background: red;
                    border-radius: 50%;
                    display: block;
                    padding: 0.3em;
                    color: black;
                    font-size: 12px;
                    max-height: 20px;
                    max-width: auto;
                    right: -10px;
                    top: 8px;
                  }
             }
        }
}

或者,请参阅下面的 fiddle 。

https://jsfiddle.net/5gxudefb/3/

提前致谢

最佳答案

问题是伪元素继承了图标的字体系列,我相信这是基于连字的图标字体。

这就是为什么您可以在图标标签中键入文本“信息”并获得要显示的图标而不是文本本身。

由于 data-badge 是一个数字,它在 Materialise 字体系统中没有对应的数字,因此不会显示任何内容。

如果您将 font-family(例如 Verdana)应用到伪元素 ::after,数字会显示*。

JSfiddle Demo

*不是你期望的地方,但我怀疑那是另一个问题

编辑:文本的位置已修复...这是因为 60 像素的行高也被继承了。

关于html - 具有数据属性值作为 CSS 内容的通知徽章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316428/

相关文章:

javascript - html 页面占用 100% 窗口大小且始终在顶部

css - 如何在 Firefox 中设置 HTML5 验证错误的样式

html - 将标签与 css 3 精美单选按钮对齐

html - 使用 sass 在悬停时影响兄弟元素

javascript - 向容器中插入内容

html - 为什么这两个 span 在同一位置没有垂直对齐?

javascript - AngularJS 中的数独

css - 用于 webpack 的 Sass 加载器 : How to get CSS file instead of inline styles?

javascript - 将 SASS 变量传递给 javascript 的行业标准方法是什么?

javascript - 获取当前单击的相对于元素的坐标