Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html CSS3宽度过渡混乱设计_Html_Css_Css Transitions - Fatal编程技术网

Html CSS3宽度过渡混乱设计

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;

我想在用户将鼠标悬停在其中一个屏幕上时立即实现过渡效果 导航栏上的图标。此时刚刚显示的文本应该 有一个宽度过渡。我试着自己做这件事,但做不到 不破坏设计的其余部分

HTML:

JSFiddle:
试试看。基本上,我在这里做的是在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;
}