首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用abbr元素通过CSS更改响应式文本

使用abbr元素通过CSS更改响应式文本
EN

Stack Overflow用户
提问于 2019-12-09 01:16:47
回答 1查看 545关注 0票数 2

我的任务是在小屏幕上显示缩写,在大屏幕上显示完整的术语(例如小屏幕上的"CSS“,大屏幕上的”级联样式表“)。

我可以很容易地输出这两个术语,每个术语都有一个类,并根据媒体查询来display:none其中一个。

我在问自己,是否可以使用abbr元素,通过下面的标记以更好的方式完成这项工作:

<abbr title="Cascading Style Sheets">CSS</abbr>

下面你可以看到我用attr() CSS属性得到的,它不能正确呈现。我的问题是,从长远来看,abbr需要以某种方式进行伸展。有没有办法用CSS做到这一点?

代码语言:javascript
复制
@media (min-width: 500px) {
  abbr {
    display: inline-block;
    text-indent: -9999px;
  }
  abbr::before {
    content: attr(title);
    position: absolute;
    text-indent: 9999px;
  }
}
代码语言:javascript
复制
<p>
    I'm using 
    <abbr title="Cascasing Style Sheets"> CSS </abbr> 
    for responsive text changes.
</p>

https://codepen.io/smichaelsen/pen/VwYeZQZ

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-11 12:18:41

要做到这一点,最简单的方法是在abbr中放置一个跨度,这样您就可以使用CSS选择要隐藏的内容。它看起来像这样:

代码语言:javascript
复制
@media (min-width: 500px) {
  abbr {
    text-decoration: none;
  }
  abbr span {
    display: none;
  }
  abbr::before {
    content: attr(title);
  }
}
代码语言:javascript
复制
<p>
  I'm using
  <abbr title="Cascasing Style Sheets"> <span>CSS<span> </abbr> for responsive text changes.
</p>

或者,您可以将abbrfont-size设置为0。这样做的好处是不需要任何额外的span,但这意味着您必须显式设置abbr::beforefont-size。这似乎更有可能导致头痛,但它确实相当干净。

为此,我还在content的末尾添加了一个空格,因为将font-size设置为0会有效地删除::before后面的空格。

代码语言:javascript
复制
@media (min-width: 500px) {
  abbr {
    font-size: 0;
    text-decoration: none;
  }
  abbr::before {
    content: attr(title) " ";
    font-size: 16px;
  }
}
代码语言:javascript
复制
<p>
  I'm using
  <abbr title="Cascasing Style Sheets"> CSS </abbr> for responsive text changes.
</p>

附注:我在两个示例中都添加了text-decoration: none;,因为一旦展开了缩写,您就不会希望它看起来像一个缩写。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59237866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档