如何将 link in/on 放在 css `content` 属性 的顶部(不会弄乱 属性 的显示)?
How can I place a link in/on top of a css `content` property (without messing up the display of the property)?
我发现这个带有旋转立方体效果的非常漂亮的浮动导航栏:
https://codepen.io/arjancodes/pen/wtqIr
不幸的是,它不包括工作链接,我不清楚如何插入它们。我试过以多种不同的方式放置 <a>
标签,并根据我所读到的 ::after
对 CSS 进行修改。我也试过把nth-of-child
改成nth-of-type
,好像没有帮助也没有坏处。
我正在玩的叉子在这里演示,但由于它会改变,我将 post 下面的当前状态的代码:https://codepen.io/AwakeAntelope/pen/wvJovrP
我已经能够让链接在适当的地方工作,但出于某种原因,当我这样做时,每个 <li>
最终都包含第一个 content
属性(在我的代码分支中,"Google"
).
HTML
<nav>
<ul>
<a href="http://www.google.com">
<li>
<div class="home-icon">
<div class="roof">
<div class="roof-edge"></div>
</div>
<div class="front"></div>
</div>
</li>
</a>
<a href="http://www.yahoo.com">
<li>
<div class="about-icon">
<div class="head">
<div class="eyes"></div>
<div class="beard"></div>
</div>
</div>
</li>
</a>
<a href="http://www.bing.com">
<li>
<div class="work-icon">
<div class="paper"></div>
<div class="lines"></div>
<div class="lines"></div>
<div class="lines"></div>
</div>
</li>
</a>
<a href="http://www.duckduckgo.com">
<li>
<div class="mail-icon">
<div class="mail-base">
<div class="mail-top"></div>
</div>
</div>
</li>
</a>
</ul>
</nav>
<section>
<h1>3d rotating navigation</h1>
<h2>+ CSS Icons</h2>
</section>
CSS:
*,*:before,*:after {
box-sizing: border-box;
}
:after {
content: "";
}
section {
position: relative;
left: 100px;
}
h1 {
margin:80px 0 10px 0;
font-size: 52px;
font-family: 'Montserrat', sans-serif;
text-transform: uppercase;
text-shadow: 1px 1px 0px #DC143C,
2px 2px 0px #DC143C,
3px 3px 0px #DC143C,
4px 4px 0px #DC143C;
}
h2 {
font-size: 24px;
}
body {
padding: 100px 0;
background: lightblue;
color: white;
max-width:640px;
font-family: 'Montserrat', sans-serif;
font-size: 14px;
line-height:1.4;
font-smoothing: anti-aliased;
}
nav {
float: left;
position: relative;
top: 0;
left: 0;
background: transparent;
}
nav ul {
text-align: center;
}
nav ul li {
position: relative;
width: 70px;
cursor: pointer;
background: crimson;
text-transform: uppercase;
transition:all .4s ease-out;
}
nav ul li:after {
position: absolute;
background: white;
color: crimson;
top:0;
left: 70px;
width: 70px; height: 100%;
opacity:.5;
transform: perspective(400px) rotateY(90deg);
transform-origin: 0 100%;
transition:all .4s ease-out;
}
nav ul li:nth-of-type(1):after {
content: "Google";
line-height: 88px;
}
nav ul a li:nth-of-type(2):after {
content: "Yahoo";
line-height: 88px;
}
nav ul a li:nth-of-type(3):after {
content: "Bing";
line-height: 85px;
}
nav ul a li:nth-of-type(4):after {
content: "DuckDuckGo";
line-height: 70px;
}
nav ul li:hover {
transform: translateX(-70px);
}
nav ul li:hover:after {
opacity: 1;
transform: perspective(400px) rotateY(0deg) scale(1) ;
}
nav ul li > div {
display: inline-block;
padding: 25px 0;
background: transparent;
}
nav ul li div { position: relative; }
.roof {
width: 0;
height: 0;
top:2px;
border-style: solid;
border-width: 0 21px 15px 21px;
border-color: transparent transparent #ffffff transparent;
}
.roof-edge {
position: absolute;
z-index: 20;
left: -17px;
top: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 17px 12px 17px;
border-color: transparent transparent crimson transparent;
}
/*white triangle over red triangle*/
.roof-edge:after {
position: absolute;
left: -14.5px;
top: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 14.5px 10px 14.5px;
border-color: transparent transparent white transparent;
}
.front {
position: relative;
top: 3px;
width: 28.5px;
height: 20px;
margin: 0 auto;
background: white;
}
/*door*/
.front:after {
position: absolute;
background: crimson;
width: 11px;
height: 13px;
bottom: 0;
left:9px;
}
/*/// About me ////*/
.head {
width: 32px;
height: 35px;
background: white;
border-radius:8px;
}
/*mouth*/
.head:after {
width: 4px;
height: 10px;
background: white;
position: absolute;
border-radius:4px 0 0 4px;
top:21px;
left: 14px;
transform:rotate(270deg);
}
.eyes {
width: 8px;
height: 5px;
border-radius: 50%;
position: absolute;
top: 10px;
left: 5px;
background: crimson;
}
/*right eye*/
.eyes:after {
width: 8px;
height: 5px;
border-radius: 50%;
position: absolute;
top: 0;
left: 14px;
background: crimson;
}
.beard {
width: 32px;
height: 17px;
background: crimson;
border:2px solid white;
position: absolute;
bottom: 0;
left: 0;
border-radius:0 0 8px 8px;
}
/*nose*/
.beard:after {
position: absolute;
top:-2px;
left: 11px;
background: white;
width:6px;
height: 4px;
border-left:1px solid crimson;
border-right:1px solid crimson;
}
/*//work//*/
.paper {
position: relative;
height:32px;
width: 29px;
background: white;
border:2px solid white;
}
/*window*/
.paper:after {
position: absolute;
top:1px;
left: 0;
width: 25px;
height: 29px;
background: white;
border-top:4px solid crimson;
}
.lines {
position: absolute;
top: 36px;
left: 5px;
width: 11px;
box-shadow: 0 0 0 1px crimson;
}
.lines:after {
position: absolute;
top: 4px;
left: 3px;
width: 14px;
box-shadow: 0 0 0 1px crimson;
}
.lines:nth-child(2) {
position: absolute;
top: 44px;
left: 8px;
width: 11px;
}
.lines:nth-child(2):after {
position: absolute;
top: 4px;
left: -3px;
width: 11px;
}
.lines:nth-child(3) {
position: absolute;
top: 52px;
left: 8px;
width: 14px;
}
.lines:nth-child(3):after {
display: none;
}
/*//mail //*/
.mail-base {
position: relative;
width: 32px;
height: 18px;
background: white;
}
.mail-top {
position: absolute;
z-index: 20;
left: 0;
top: 0;
width: 0;
height: 0;
transform: rotate(180deg);
border-style: solid;
border-width: 0 16px 11px 16px;
border-color: transparent transparent crimson transparent;
}
.mail-top:after {
position: absolute;
z-index: 20;
left: -16px;
top: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 16px 9px 16px;
border-color: transparent transparent white transparent;
}
我成功了,只是更改了这段代码:
nav ul a:nth-of-type(1) li:after {
content: "Google";
line-height: 88px;
}
nav ul a:nth-of-type(2) li:after {
content: "Yahoo";
line-height: 88px;
}
nav ul a:nth-of-type(3) li:after {
content: "Bing";
line-height: 85px;
}
nav ul a:nth-of-type(4) li:after {
content: "DuckDuckGo";
line-height: 70px;
}
nth-of-type
需要以 A
元素为目标,因为现在您要遍历第一个 A
元素内的 LI
元素,因此每个文本都是相同的时间。我同意 ul a li
不是最佳实践顺便说一句。
我发现这个带有旋转立方体效果的非常漂亮的浮动导航栏: https://codepen.io/arjancodes/pen/wtqIr
不幸的是,它不包括工作链接,我不清楚如何插入它们。我试过以多种不同的方式放置 <a>
标签,并根据我所读到的 ::after
对 CSS 进行修改。我也试过把nth-of-child
改成nth-of-type
,好像没有帮助也没有坏处。
我正在玩的叉子在这里演示,但由于它会改变,我将 post 下面的当前状态的代码:https://codepen.io/AwakeAntelope/pen/wvJovrP
我已经能够让链接在适当的地方工作,但出于某种原因,当我这样做时,每个 <li>
最终都包含第一个 content
属性(在我的代码分支中,"Google"
).
HTML
<nav>
<ul>
<a href="http://www.google.com">
<li>
<div class="home-icon">
<div class="roof">
<div class="roof-edge"></div>
</div>
<div class="front"></div>
</div>
</li>
</a>
<a href="http://www.yahoo.com">
<li>
<div class="about-icon">
<div class="head">
<div class="eyes"></div>
<div class="beard"></div>
</div>
</div>
</li>
</a>
<a href="http://www.bing.com">
<li>
<div class="work-icon">
<div class="paper"></div>
<div class="lines"></div>
<div class="lines"></div>
<div class="lines"></div>
</div>
</li>
</a>
<a href="http://www.duckduckgo.com">
<li>
<div class="mail-icon">
<div class="mail-base">
<div class="mail-top"></div>
</div>
</div>
</li>
</a>
</ul>
</nav>
<section>
<h1>3d rotating navigation</h1>
<h2>+ CSS Icons</h2>
</section>
CSS:
*,*:before,*:after {
box-sizing: border-box;
}
:after {
content: "";
}
section {
position: relative;
left: 100px;
}
h1 {
margin:80px 0 10px 0;
font-size: 52px;
font-family: 'Montserrat', sans-serif;
text-transform: uppercase;
text-shadow: 1px 1px 0px #DC143C,
2px 2px 0px #DC143C,
3px 3px 0px #DC143C,
4px 4px 0px #DC143C;
}
h2 {
font-size: 24px;
}
body {
padding: 100px 0;
background: lightblue;
color: white;
max-width:640px;
font-family: 'Montserrat', sans-serif;
font-size: 14px;
line-height:1.4;
font-smoothing: anti-aliased;
}
nav {
float: left;
position: relative;
top: 0;
left: 0;
background: transparent;
}
nav ul {
text-align: center;
}
nav ul li {
position: relative;
width: 70px;
cursor: pointer;
background: crimson;
text-transform: uppercase;
transition:all .4s ease-out;
}
nav ul li:after {
position: absolute;
background: white;
color: crimson;
top:0;
left: 70px;
width: 70px; height: 100%;
opacity:.5;
transform: perspective(400px) rotateY(90deg);
transform-origin: 0 100%;
transition:all .4s ease-out;
}
nav ul li:nth-of-type(1):after {
content: "Google";
line-height: 88px;
}
nav ul a li:nth-of-type(2):after {
content: "Yahoo";
line-height: 88px;
}
nav ul a li:nth-of-type(3):after {
content: "Bing";
line-height: 85px;
}
nav ul a li:nth-of-type(4):after {
content: "DuckDuckGo";
line-height: 70px;
}
nav ul li:hover {
transform: translateX(-70px);
}
nav ul li:hover:after {
opacity: 1;
transform: perspective(400px) rotateY(0deg) scale(1) ;
}
nav ul li > div {
display: inline-block;
padding: 25px 0;
background: transparent;
}
nav ul li div { position: relative; }
.roof {
width: 0;
height: 0;
top:2px;
border-style: solid;
border-width: 0 21px 15px 21px;
border-color: transparent transparent #ffffff transparent;
}
.roof-edge {
position: absolute;
z-index: 20;
left: -17px;
top: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 17px 12px 17px;
border-color: transparent transparent crimson transparent;
}
/*white triangle over red triangle*/
.roof-edge:after {
position: absolute;
left: -14.5px;
top: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 14.5px 10px 14.5px;
border-color: transparent transparent white transparent;
}
.front {
position: relative;
top: 3px;
width: 28.5px;
height: 20px;
margin: 0 auto;
background: white;
}
/*door*/
.front:after {
position: absolute;
background: crimson;
width: 11px;
height: 13px;
bottom: 0;
left:9px;
}
/*/// About me ////*/
.head {
width: 32px;
height: 35px;
background: white;
border-radius:8px;
}
/*mouth*/
.head:after {
width: 4px;
height: 10px;
background: white;
position: absolute;
border-radius:4px 0 0 4px;
top:21px;
left: 14px;
transform:rotate(270deg);
}
.eyes {
width: 8px;
height: 5px;
border-radius: 50%;
position: absolute;
top: 10px;
left: 5px;
background: crimson;
}
/*right eye*/
.eyes:after {
width: 8px;
height: 5px;
border-radius: 50%;
position: absolute;
top: 0;
left: 14px;
background: crimson;
}
.beard {
width: 32px;
height: 17px;
background: crimson;
border:2px solid white;
position: absolute;
bottom: 0;
left: 0;
border-radius:0 0 8px 8px;
}
/*nose*/
.beard:after {
position: absolute;
top:-2px;
left: 11px;
background: white;
width:6px;
height: 4px;
border-left:1px solid crimson;
border-right:1px solid crimson;
}
/*//work//*/
.paper {
position: relative;
height:32px;
width: 29px;
background: white;
border:2px solid white;
}
/*window*/
.paper:after {
position: absolute;
top:1px;
left: 0;
width: 25px;
height: 29px;
background: white;
border-top:4px solid crimson;
}
.lines {
position: absolute;
top: 36px;
left: 5px;
width: 11px;
box-shadow: 0 0 0 1px crimson;
}
.lines:after {
position: absolute;
top: 4px;
left: 3px;
width: 14px;
box-shadow: 0 0 0 1px crimson;
}
.lines:nth-child(2) {
position: absolute;
top: 44px;
left: 8px;
width: 11px;
}
.lines:nth-child(2):after {
position: absolute;
top: 4px;
left: -3px;
width: 11px;
}
.lines:nth-child(3) {
position: absolute;
top: 52px;
left: 8px;
width: 14px;
}
.lines:nth-child(3):after {
display: none;
}
/*//mail //*/
.mail-base {
position: relative;
width: 32px;
height: 18px;
background: white;
}
.mail-top {
position: absolute;
z-index: 20;
left: 0;
top: 0;
width: 0;
height: 0;
transform: rotate(180deg);
border-style: solid;
border-width: 0 16px 11px 16px;
border-color: transparent transparent crimson transparent;
}
.mail-top:after {
position: absolute;
z-index: 20;
left: -16px;
top: 3px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 16px 9px 16px;
border-color: transparent transparent white transparent;
}
我成功了,只是更改了这段代码:
nav ul a:nth-of-type(1) li:after {
content: "Google";
line-height: 88px;
}
nav ul a:nth-of-type(2) li:after {
content: "Yahoo";
line-height: 88px;
}
nav ul a:nth-of-type(3) li:after {
content: "Bing";
line-height: 85px;
}
nav ul a:nth-of-type(4) li:after {
content: "DuckDuckGo";
line-height: 70px;
}
nth-of-type
需要以 A
元素为目标,因为现在您要遍历第一个 A
元素内的 LI
元素,因此每个文本都是相同的时间。我同意 ul a li
不是最佳实践顺便说一句。