我有一个无序的列表或锚点.我有一个CSS:悬停事件,它添加了边框但左边的所有锚点稍微调整,当我悬停,因为它是向宽度添加1px并自动调整.我如何确保定位是绝对的?
我在这里做了一个JS小提琴.
Wes*_*rch 87
您可以为非悬停状态添加透明边框,以避免出现边框时出现"跳跃":
#homeheader a:visited, #homeheader a{
border:1px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用框阴影而不是边框来实现此类功能.
这是有效的,因为你的阴影不会"占用DOM中的大小",因此不会影响定位,不像边框那样.
尝试使用像这样的声明
box-shadow:0 0 1px 1px #102447;
Run Code Online (Sandbox Code Playgroud)
而不是你的
border:1px solid #102447;
Run Code Online (Sandbox Code Playgroud)
在你的悬停状态.
以下是此操作的快速演示:
#homeheader a:visited,
#homeheader a {
text-decoration: none;
color: black;
margin-right: 5px;
}
#homeheader a:hover {
background-color: #D0DDF2;
border-radius: 5px;
box-shadow: 0 0 1px #102447;
}
#homeheader li {
padding: 0;
margin: 0px 10px;
display: inline;
font-size: 1em;
}Run Code Online (Sandbox Code Playgroud)
<div id="homecontainer">
<div id="homeheader">
<ul>
<li><a href="#">this</a>
</li>
<li><a href="#">that</a>
</li>
<li><a href="#">this again</a>
</li>
<li><a href="#">that again</a>
</li>
</ul>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
在承受了很长时间的压力后,我找到了一个很酷的解决方案。希望它能帮助别人。
在添加以下代码:
HTML
<div class="border-test">
<h2> title </h2>
<p> Technology founders churn rate niche market </p>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.border-test {
outline: 1px solid red;
border: 5px solid transparent;
}
.border-test:hover {
outline: 0px solid transparent;
border: 5px solid red;
}
Run Code Online (Sandbox Code Playgroud)
现场检查:现场演示
希望它会有所帮助。
这里没有人提到它,但我认为最好和最简单的解决方案是使用“框阴影”而不是边框。神奇之处在于“插入”值,它使它像一个边框。
box-shadow: inset 0 -3px 0 0 red;
Run Code Online (Sandbox Code Playgroud)
您可以偏移 X 或 Y 来更改顶部/底部,并对相对侧使用负值。
box-shadow: inset 0 -3px 0 0 red;
Run Code Online (Sandbox Code Playgroud)
.button {
width: 200px;
height: 50px;
padding: auto;
background-color: grey;
text-align: center;
}
.button:hover {
box-shadow: inset 0 -3px 0 0 red;
background-color: lightgrey;
}Run Code Online (Sandbox Code Playgroud)