问题描述
.nav-links a {
display: block;
color: var(--secondColor);
padding: 1rem;
text-transform: uppercase;
font-style: italic;
font-weight: 900;
text-shadow: yellow;
transition: var(--mainTransition);
}
.nav-links a:hover {
background: var(--mainGrey);
transform: translateX(20px);
color: var(--mainColor);
}
<nav class="nav-bar">
<div class="nav-links">
<ul>
<li><a href="#" class="nav-link">home</a></li>
<li><a href="#" class="nav-link">skill</a></li>
<li><a href="#" class="nav-link">about</a></li>
<li><a href="#" class="nav-link">project</a></li>
<li><a href="#" class="nav-link">team</a></li>
</ul>
</div>
</nav>
当我在hover元素中使用transform:translateX(20px)属性时,整个网页左右摇动 如果我使用hover元素中的padding属性将链接向左移动,但我想使用translate属性获得更大的灵活性,则不会出现此问题
解决方法
只需将锚标签上的display: block
转到display: inline-block
。它们是display: block
的全角,当它们翻译20px时会导致溢出和水平滚动条。
.nav-links a {
display: inline-block;
color: var(--secondColor);
padding: 1rem;
text-transform: uppercase;
font-style: italic;
font-weight: 900;
text-shadow: yellow;
transition: var(--mainTransition);
}
.nav-links a:hover {
background: var(--mainGrey);
transform: translateX(20px);
color: var(--mainColor);
}
<nav class="nav-bar">
<div class="nav-links">
<ul>
<li><a href="#" class="nav-link">home</a></li>
<li><a href="#" class="nav-link">skill</a></li>
<li><a href="#" class="nav-link">about</a></li>
<li><a href="#" class="nav-link">project</a></li>
<li><a href="#" class="nav-link">team</a></li>
</ul>
</div>
</nav>
,
使用text-indent
而不是变换:
.nav-links a {
display: block;
color: var(--secondColor);
padding: 1rem;
text-transform: uppercase;
font-style: italic;
font-weight: 900;
text-shadow: yellow;
transition: var(--mainTransition);
}
.nav-links a:hover {
background: var(--mainGrey);
text-indent: 20px;
color: var(--mainColor);
}
<nav class="nav-bar">
<div class="nav-links">
<ul>
<li><a href="#" class="nav-link">home</a></li>
<li><a href="#" class="nav-link">skill</a></li>
<li><a href="#" class="nav-link">about</a></li>
<li><a href="#" class="nav-link">project</a></li>
<li><a href="#" class="nav-link">team</a></li>
</ul>
</div>
</nav>