gpt4 book ai didi

html - CSS 宽度过渡不工作

转载 作者:搜寻专家 更新时间:2023-10-31 08:42:16 25 4
gpt4 key购买 nike

下面是我正在使用的 HTML 和 CSS。不幸的是,已经提出的问题没有给出所需的答案。基本上它减少了所有 sibling 的宽度并增加了悬停的宽度。我正在使用 ease-in-out 但过渡的 OUT 部分会立即跳回其原始状态。

html {
background: #000066;
}
body {
height: 100%;
background: #cfcfd0;
margin: 4% 4% 4% 4%;
}
#title {
background: ;
text-align: center;
margin: 2% 2%;
padding: 2% 2%;
}
#nav {
width: 90%;
overflow: auto;
margin: 0 auto;
padding: 0px 0px 0px 0px
}
ul {
margin: 4% auto;
padding: 0;
width: 100%;
list-style-type: none;
overflow: auto;
}
li {
box-sizing: border-box;
text-align: center;
display: inline-block;
float: left;
width: 33.33%;
padding: 2% 0;
margin: 0%;
background: blue;
border-top: 1px solid black;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
li:first-child {
border-left: 1px solid black;
}
li:last-child {
border-right: 1px solid black;
}
a {
color: black;
text-decoration: none;
}
ul:hover > li:hover {
width: 37.33%;
color: white;
background: darkblue;
-webkit-transition: all 300ms ease-in-out;
-moz-transition: all 300ms ease-in-out;
-ms-transition: all 300ms ease-in-out;
-o-transition: all 300ms ease-in-out;
transition: all 300ms ease-in-out;
}
ul:hover > li {
width: 31.33%;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out;
}
<div id="title">
<h1>Projects Home</h1>
</div>
<div id="nav">
<ul>
<li><a href="">Project 1</a>
</li>
<li><a href="">Project 2</a>
</li>
<li><a href="">Project 3</a>
</li>
</ul>
</div>

我不明白这是为什么。

最佳答案

任何 CSS 属性只有在选择器匹配时才会应用到元素。当在 :hover 选择器下指定 transition 属性时,它们自然只会在悬停打开时应用。当我们悬停时,它们会迅速返回,因为 transition 设置不再适用于该元素。

在您的情况下,由于 transition 仅在 ul:hover > li:hoverul:hover > li 中指定,因此它得到应用仅当鼠标位于 li 上或鼠标至少位于 ul 上时(即当我们从一个 li 移动到另一个时同时仍在 ul 边界内)。

要使 transition 即使在鼠标离开期间也能正常工作,应该在 li 选择器中指定它,如下面的代码片段所示。

html {
background: #000066;
}
body {
height: 100%;
background: #cfcfd0;
margin: 4% 4% 4% 4%;
}
#title {
background: ;
text-align: center;
margin: 2% 2%;
padding: 2% 2%;
}
#nav {
width: 90%;
overflow: auto;
margin: 0 auto;
padding: 0px 0px 0px 0px
}
ul {
margin: 4% auto;
padding: 0;
width: 100%;
list-style-type: none;
overflow: auto;
}
li {
box-sizing: border-box;
text-align: center;
display: inline-block;
float: left;
width: 33.33%;
padding: 2% 0;
margin: 0%;
background: blue;
border-top: 1px solid black;
border-bottom: 1px solid black;
border-right: 1px solid black;
-webkit-transition: all 300ms ease-in-out;
-moz-transition: all 300ms ease-in-out;
-ms-transition: all 300ms ease-in-out;
-o-transition: all 300ms ease-in-out;
transition: all 300ms ease-in-out;
}
li:first-child {
border-left: 1px solid black;
}
li:last-child {
border-right: 1px solid black;
}
a {
color: black;
text-decoration: none;
}
ul:hover > li:hover {
width: 37.33%;
color: white;
background: darkblue;
}
ul:hover > li {
width: 31.33%;
}
<div id="title">
<h1>Projects Home</h1>
</div>
<div id="nav">
<ul>
<li><a href="">Project 1</a>
</li>
<li><a href="">Project 2</a>
</li>
<li><a href="">Project 3</a>
</li>
</ul>
</div>

关于html - CSS 宽度过渡不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36823453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com