我正在使用ElegantIcons字体为网站添加社交图标。正如您在下面的代码中看到的,图标将应用于锚<a> ::before伪元素。与可以使用<i>标签和class name的FontAwesome不同,必须使用::before和content: "\xxx"来应用此字体,其中xxx是图标的代码

我想隐藏链接的文本,只保留搜索引擎或文本浏览器。我尝试将文本的名称包装在单独的<span>标记中,并用screen-readers类将其隐藏起来。我不确定这是不是正确的方法。我想听听你的建议。
:root {
font-size: 1em;
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
@font-face {
font-family: 'ElegantIcons';
src: url('fonts/elegant/ElegantIcons.eot'),
url('fonts/elegant/ElegantIcons.woff') format('woff'),
url('fonts/elegant/ElegantIcons.ttf') format('truetype'),
url('fonts/elegant/ElegantIcons.svg#ElegantIcons') format('svg');
font-weight: normal;
font-style: normal;
}
body {
margin: 0;
padding: 0;
}
a {
color: #000;
text-decoration: none;
}
.screen-readers {
position: absolute;
padding: 0;
border: 0;
width: 1px;
height: 1px;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}
.container {
margin: 1em;
padding: 1em;
background: #007cba;
}
.social {
margin: 0;
padding: 0;
list-style: none;
display: flex;
}
.social > li > a {
display: block;
width: 32px;
height: 32px;
background: #fff;
line-height: 32px;
text-align: center;
border-radius: .1875em;
}
.social > li + li {
margin-left: 1em;
}
.icon-facebook::before {
content: "\e093";
font-family: ElegantIcons;
}
.icon-twitter::before {
content: "\e094";
font-family: ElegantIcons;
}<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="elegant-icons.css">
<title>Elegant Icons</title>
</head>
<body>
<div class="container">
<ul class="social">
<li>
<a class="icon-facebook" href="#" target="_blank" rel="noopener"><span class="screen-readers">Facebook</span></a>
</li>
<li>
<a class="icon-twitter" href="#" target="_blank" rel="noopener"><span class="screen-readers">Twitter</span></a>
</li>
</ul>
</div>
</body>
</html>
发布于 2020-10-17 02:06:22
:root {
font-size: 1em;
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
@font-face {
font-family: 'ElegantIcons';
src: url('fonts/elegant/ElegantIcons.eot'),
url('fonts/elegant/ElegantIcons.woff') format('woff'),
url('fonts/elegant/ElegantIcons.ttf') format('truetype'),
url('fonts/elegant/ElegantIcons.svg#ElegantIcons') format('svg');
font-weight: normal;
font-style: normal;
}
body {
margin: 0;
padding: 0;
}
a {
color: #000;
text-decoration: none;
}
.screen-readers {
position: absolute;
padding: 0;
border: 0;
width: 1px;
height: 1px;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}
.container {
margin: 1em;
padding: 1em;
background: #007cba;
}
.social {
margin: 0;
padding: 0;
list-style: none;
display: flex;
}
.social > li > a {
display: block;
width: 32px;
height: 32px;
background: #fff;
line-height: 32px;
text-align: center;
border-radius: .1875em;
}
.social > li + li {
margin-left: 1em;
}
.icon-facebook::before {
content: "\e093";
font-family: ElegantIcons;
}
.icon-twitter::before {
content: "\e094";
font-family: ElegantIcons;
}<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="elegant-icons.css">
<title>Elegant Icons</title>
</head>
<body>
<div class="container">
<ul class="social">
<li>
<a href="#" target="_blank" rel="noopener" aria-label="Facebook">
<span class="icon-facebook" aria-hidden="true"></span>
<span class="screen-readers">Facebook</span>
</a>
</li>
<li>
<a href="#" target="_blank" rel="noopener" aria-label="Twitter">
<span class="icon-twitter" aria-hidden="true"></span>
<span class="screen-readers">Twitter</span></a>
</li>
</ul>
</div>
</body>
</html>
我已经使用你的原始代码片段更新了我的答案。
https://stackoverflow.com/questions/64393799
复制相似问题