[英]How to change <span> text in CSS media query
我正在尝试更改媒体查询中<span>
元素内的文本,并且我想尽可能避免使用 JavaScript。 有没有办法只用 HTML/CSS 来做到这一点?
@media only screen and (max-width: 768px) { header .text-1 { /* property here? */ } header .text-2 { /* property here? */ } }
<header> <div class="banner"> <span class="text-1">COLMAR</span> <!-- change to "C" --> <span class="text-2">ACADEMY</span> <!-- change to "A" --> </div> </header>
当窗口宽度小于 768px 时,我希望<header>
的两个<span>
被缩写为一个字符(“C”和“A”)。
我在W3 上寻找可以做到这一点的属性,类似于(我认为)JavaScript 的.innerHtml
,我找到了content
,但它似乎没有做我想要的。
如果需要,我愿意使用 JavaScript,如果它只需要几行 CSS,我只想避免它。
您可以在 CSS 中设置span
标签的宽度。 为了能够使用宽度,您需要display:block;
. 您使用overflow:none;
隐藏文本的其余部分。
跨度的宽度必须取决于字体大小和字体系列。 使用等宽字体会有所帮助,因为所有字符的宽度都相同。
@media only screen and (max-width: 768px) { header .text-1, header .text-2{ width: 11px; overflow: hidden; display:inline-block; } }
<header> <div class="banner"> <span class="text-1">COLMAR</span> <!-- change to "C" --> <span class="text-2">ACADEMY</span> <!-- change to "A" --> </div> </header>
这是另一种使用::before
伪元素的方法(加上包装在另一个跨度中的原始内容),但使用自定义数据属性来定义替代文本,而不必为每次出现添加一个类。 例如,这允许通过 CMS 填充文本。
@media only screen and (max-width: 768px) { [data-alttext] > span { display: none; } [data-alttext]::before { content: attr(data-alttext); } }
<header> <div class="banner"> <span class="text-1" data-alttext="C"><span>COLMAR</span></span> <!-- change to "C" --> <span class="text-2" data-alttext="A"><span>ACADEMY</span></span> <!-- change to "A" --> </div> </header>
您可以像这样使用伪选择器:before
:
header .text-1:before { content: "COLMAR"; } header .text-2:before { content: "ACADEMY"; } @media only screen and (max-width: 768px) { header .text-1:before { content: "C"; } header .text-2:before { content: "A"; } }
<header> <div class="banner"> <span class="text-1"></span> <!-- change to "C" --> <span class="text-2"></span> <!-- change to "A" --> </div> </header>
在进行了一些研究之后,您也不会因为这种方法而失去任何可访问性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.