Html CSS3宽度过渡混乱设计
我想在用户将鼠标悬停在其中一个屏幕上时立即实现过渡效果 导航栏上的图标。此时刚刚显示的文本应该 有一个宽度过渡。我试着自己做这件事,但做不到 不破坏设计的其余部分 HTML: JSFiddle:Html CSS3宽度过渡混乱设计,html,css,css-transitions,Html,Css,Css Transitions,我想在用户将鼠标悬停在其中一个屏幕上时立即实现过渡效果 导航栏上的图标。此时刚刚显示的文本应该 有一个宽度过渡。我试着自己做这件事,但做不到 不破坏设计的其余部分 HTML: JSFiddle: 试试看。基本上,我在这里做的是在span元素上设置文本缩进的动画。这将为您指明正确的方向 * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; margin: 0;
试试看。基本上,我在这里做的是在span元素上设置文本缩进的动画。这将为您指明正确的方向
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
header {
position: fixed;
top: 0;
left: 0;
padding: 0.5em;
height: 4em;
width: 100%;
background: #2196F3;
background: -webkit-linear-gradient(left, #2196F3, #1976D2);
background: -o-linear-gradient(right, #2196F3, #1976D2);
background: -moz-linear-gradient(right, #2196F3, #1976D2);
background: linear-gradient(to right, #2196F3, #1976D2);
-webkit-box-shadow: 0px 1px 5px 0px rgba(0,0,0,0.75);
-moz-box-shadow: 0px 1px 5px 0px rgba(0,0,0,0.75);
box-shadow: 0px 1px 5px 0px rgba(0,0,0,0.75);
}
header img {
height: 100%;
width: auto;
}
nav {
position: fixed;
top: 0;
right: 0;
background: #2196F3;
background: -webkit-linear-gradient(left, #2196F3, #1976D2);
background: -o-linear-gradient(right, #2196F3, #1976D2);
background: -moz-linear-gradient(right, #2196F3, #1976D2);
background: linear-gradient(to right, #2196F3, #1976D2);
-webkit-filter:drop-shadow(2px 2px 5px rgba(0,0,0,0.75));
}
nav:before {
content:"";
position: absolute;
top:0;
right:100%;
width: 0;
height: 0;
border-top: 81.78px solid #2196F3;
border-left: 81.78px solid transparent;
}
nav ul li {
display: inline-block;
}
nav ul li a {
display: block;
padding: 0.7em;
color: #ffffff;
text-decoration: none;
font-size: 2em;
}
nav ul li a span {
padding-left: 0.5em;
overflow: hidden;
font-family: 'Poppins', sans-serif;
display: inline-block;
text-indent: -160px;
transition: all 200ms;
}
nav ul li a:hover span {
text-indent: 0px;
}
这里正在工作
希望有帮助。:)
谢谢
已调制nav
css
nav ul{
-webkit-transition:all 0.3s ease;
transition:all 0.3s ease;
}
nav ul li {
display: inline-block;
-webkit-transition:all 0.3s ease;
transition:all 0.3s ease;
}
nav ul li a {
display: block;
width:50px;
padding: 0.7em;
color: #ffffff;
text-decoration: none;
white-space:nowrap;
font-size: 2em;
-webkit-transition:all 0.3s ease;
transition:all 0.3s ease;
position:relative;
}
nav ul li a span {
display: none;
padding-left: 0.5em;
overflow: hidden;
font-family: 'Poppins', sans-serif;
}
nav ul li a:hover span{
display:inline;
}
nav ul li a:hover {
width:250px;
}
您无法设置跨度标记的动画,因为它被设置为“显示:无”。您可以尝试使用可见性隐藏和负文本缩进。我会在几分钟内为你搞乱。我知道“显示:无”是不可能的;但每次我尝试进行宽度转换时,整个导航都会搞乱。ThxI在下面为您添加了一个答案。看看。非常感谢。它工作得非常好。我只需要在文本和图标中添加一个“垂直对齐:中间”;没问题,你需要调整你的CSS,因为它不是100%完美。如果你不介意的话,请选择这个作为答案:)我知道我需要调整一些事情。我只是在胡闹,试图创造一个好看的导航。对CSS有任何建议的更改吗?是的,我知道您正在使用html注释代码来消除显示内联块的小间隙。我会删除它,简单地为每个LI元素添加负边距,或者说-3px。除此之外,它做你想做的事情。在下面结帐,他提供了另一个很好的解决方案。提琴的Thx,但我更喜欢德里克·贝斯的解决方案,因为在你的解决方案中,你可以在过渡期间看到图标后面的文字,我不太喜欢。无论如何,谢谢:)
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
header {
position: fixed;
top: 0;
left: 0;
padding: 0.5em;
height: 4em;
width: 100%;
background: #2196F3;
background: -webkit-linear-gradient(left, #2196F3, #1976D2);
background: -o-linear-gradient(right, #2196F3, #1976D2);
background: -moz-linear-gradient(right, #2196F3, #1976D2);
background: linear-gradient(to right, #2196F3, #1976D2);
-webkit-box-shadow: 0px 1px 5px 0px rgba(0,0,0,0.75);
-moz-box-shadow: 0px 1px 5px 0px rgba(0,0,0,0.75);
box-shadow: 0px 1px 5px 0px rgba(0,0,0,0.75);
}
header img {
height: 100%;
width: auto;
}
nav {
position: fixed;
top: 0;
right: 0;
background: #2196F3;
background: -webkit-linear-gradient(left, #2196F3, #1976D2);
background: -o-linear-gradient(right, #2196F3, #1976D2);
background: -moz-linear-gradient(right, #2196F3, #1976D2);
background: linear-gradient(to right, #2196F3, #1976D2);
-webkit-filter:drop-shadow(2px 2px 5px rgba(0,0,0,0.75));
}
nav:before {
content:"";
position: absolute;
top:0;
right:100%;
width: 0;
height: 0;
border-top: 81.78px solid #2196F3;
border-left: 81.78px solid transparent;
}
nav ul li {
display: inline-block;
}
nav ul li a {
display: block;
padding: 0.7em;
color: #ffffff;
text-decoration: none;
font-size: 2em;
}
nav ul li a span {
padding-left: 0.5em;
overflow: hidden;
font-family: 'Poppins', sans-serif;
display: inline-block;
text-indent: -160px;
transition: all 200ms;
}
nav ul li a:hover span {
text-indent: 0px;
}
nav ul{
-webkit-transition:all 0.3s ease;
transition:all 0.3s ease;
}
nav ul li {
display: inline-block;
-webkit-transition:all 0.3s ease;
transition:all 0.3s ease;
}
nav ul li a {
display: block;
width:50px;
padding: 0.7em;
color: #ffffff;
text-decoration: none;
white-space:nowrap;
font-size: 2em;
-webkit-transition:all 0.3s ease;
transition:all 0.3s ease;
position:relative;
}
nav ul li a span {
display: none;
padding-left: 0.5em;
overflow: hidden;
font-family: 'Poppins', sans-serif;
}
nav ul li a:hover span{
display:inline;
}
nav ul li a:hover {
width:250px;
}