我正在尝试为我的网站创建自适应功能。基本上我想要的是使用字体很棒的导航图标,但是当你在计算机上将鼠标悬停在图标上时,它会变成一个单词。
我已经通过CSS尝试使用a:content:""
然后a:hover:content:""
我之前从未尝试过这样的事情,如果有人能指出我必须做些什么才能让它发挥作用,我会很感激。
这里是JSFiddle
i {
color: #fff;
}
i {
padding: 0 10px;
}
ul {
list-style-type: none;
}
.nav ul {
margin: 0;
padding: 0;
position: absolute;
top: 0;
right: 0;
font-size: 0px;
}
.nav ul li {
font-size: 12pt;
display: inline-block;
padding: 15px;
transition: all 0.2s ease-in-out;
}
.nav ul li a {
font-family: FontAwesome;
color: #eee;
font-size: 22pt;
text-decoration: none;
}
.nav ul li:nth-child(1) {
background: #a3d39c;
}
.nav ul li:nth-child(2) {
background: #7accc8;
}
.nav ul li:nth-child(3) {
background: #4aaaa5;
}
.nav ul li:nth-child(4) {
background: #35404f;
}
.nav ul li a:before:nth-child(1) {
content: "\f015";
}
.nav ul li a:before:nth-child(2) {
content: "\f0f4";
}
.nav ul li a:before:nth-child(3) {
content: "\f121";
}
.nav ul li a:before:nth-child(4) {
content: "\f075";
}
.nav ul li a:hover:nth-child(1) {
content: "Home";
}
.nav ul li a:hover:nth-child(2) {
content: "About";
}
.nav ul li a:hover:nth-child(3) {
content: "Projects";
}
.nav ul li a:hover:nth-child(4) {
content: "Contact";
}
.nav a:hover {
color: #fff;
}

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<div class="nav">
<ul>
<li><i class="icon fa fa-home fa-2x"></i><a href="index.html">Home</a></li>
<li><i class="icon fa fa-coffee fa-2x"></i><a href="about">About</a></li>
<li><i class="icon fa fa-code fa-2x"></i><a href="#projects">Projects</a></li>
<li><i class="icon fa fa-comment fa-2x"></i><a href="#contact">Contact</a></li>
</ul>
</div>
&#13;
注意:我知道我的HTML和CSS文字重叠,我只想提供我已尝试过的所有内容。
答案 0 :(得分:7)
必须稍微更改一下<li>
结构,如下所示:
<li class="home">
<a href="index.html"><i class="icon fa fa-home fa-2x"></i><b>Home</b></a>
</li>
现场演示:http://jsfiddle.net/evykes9q/9/
.nav ul {
list-style: none;
margin: 0;
padding: 0;
position: absolute;
top: 0;
right: 0;
}
.nav li {
font-size:12pt;
display:block;
float: left;
height:90px;
width: 145px; /*new*/
text-align: center; /*new*/
transition: all 0.2s ease-in-out;
}
.nav .home {
background: #a3d39c;
}
.nav .about {
background: #7accc8;
}
.nav .projects {
background: #4aaaa5;
}
.nav .contact {
background: #35404f;
}
.nav li a {
font-family: FontAwesome;
color:#eee;
font-size:22pt;
text-decoration: none;
display: block;
padding:15px;
}
.nav li i {
color:#fff;
padding:0 10px;
}
.nav li b {
padding: 15px 0;
display: none;
}
.nav a:hover {
color: #fff;
}
.nav a:hover i {
display: none;
}
.nav a:hover b {
display: block;
}
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<div class="nav">
<ul>
<li class="home">
<a href="index.html"><i class="icon fa fa-home fa-2x"></i><b>Home</b></a>
</li>
<li class="about">
<a href="about"><i class="icon fa fa-coffee fa-2x"></i><b>About</b></a>
</li>
<li class="projects">
<a href="#projects"><i class="icon fa fa-code fa-2x"></i><b>Projects</b></a>
</li>
<li class="contact">
<a href="#contact"><i class="icon fa fa-comment fa-2x"></i><b>Contact</b></a>
</li>
</ul>
</div>
答案 1 :(得分:0)
我认为你有答案。我改变了你的HTML只是一点点儿童不适合这个http://jsfiddle.net/evykes9q/4/:
<div class="nav">
<ul>
<li class="home"><i class="icon fa fa-home fa-2x"></i><a href="index.html">Home</a>
</li>
<li class="about"><i class="icon fa fa-coffee fa-2x"></i><a href="about">About</a>
</li>
<li class="code"><i class="icon fa fa-code fa-2x"></i><a href="#projects">Projects</a>
</li>
<li class="contact"><i class="icon fa fa-comment fa-2x"></i><a href="#contact">Contact</a>
</li>
</ul>
</div>
<强> CSS:强>
.nav ul .home {
background: #a3d39c;
}
.nav ul .about {
background: #7accc8;
}
.nav ul .code {
background: #4aaaa5;
}
.nav ul .contact {
background: #35404f;
}
.nav ul li:hover i:before {
content:"";
}
答案 2 :(得分:0)
只需添加以下CSS即可完成任务,无需更改结构:
.nav ul li i{
display: block;
}
.nav ul li:hover i{
display: none;
}
.nav ul li a{
display: none;
}
.nav ul li:hover a{
display: block;
}
答案 3 :(得分:0)
我改变了一些愚蠢的小提琴,并添加了一些明显的规则:
您只需将文字的可见性设置为无,并在悬停时显示,并反转图标:
.nav ul li i {
display: block;
}
.nav ul li a {
display: none;
}
.nav ul li:hover i {
display: none;
}
.nav ul li:hover a {
display: block;
}
答案 4 :(得分:0)
这是您的解决方案
@import url("https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css");
.nav ul {
list-style: none;
margin: 0;
padding: 0;
position: absolute;
top: 0;
right: 0;
}
.nav li {
font-size:12pt;
display:block;
float: left;
height:90px;
width: 145px; /*new*/
text-align: center; /*new*/
transition: all 0.2s ease-in-out;
}
.nav .home {
background: #a3d39c;
}
.nav .about {
background: #7accc8;
}
.nav .projects {
background: #4aaaa5;
}
.nav .contact {
background: #35404f;
}
.nav li a {
font-family: FontAwesome;
color:#eee;
font-size:22pt;
text-decoration: none;
display: block;
padding:15px;
}
.nav li i {
color:#fff;
padding:0 10px;
}
.nav li b {
padding: 15px 0;
display: none;
}
.nav a:hover {
color: #fff;
}
.nav a:hover i {
display: none;
}
.nav a:hover b {
display: block;
}
<div class="nav">
<ul>
<li class="home">
<a href="index.html"><i class="icon fa fa-home fa-2x"></i><b>Home</b></a>
</li>
<li class="about">
<a href="about"><i class="icon fa fa-coffee fa-2x"></i><b>About</b></a>
</li>
<li class="projects">
<a href="#projects"><i class="icon fa fa-code fa-2x"></i><b>Projects</b></a>
</li>
<li class="contact">
<a href="#contact"><i class="icon fa fa-comment fa-2x"></i><b>Contact</b></a>
</li>
</ul>
</div>