CSS 过渡应用于被推送的元素
CSS Transition apply to Elements being pushed
我遇到了(希望如此)一个简单的 CSS 问题,我无法开始工作。
如果您转到 http://new.therepairshack.com 并查看顶部搜索栏。
当您将鼠标悬停在它上面时,它会根据内容宽度调整大小。
CSS 在这里:
.header .search-wrapper .form-search .input-text {
background:rgba(0,0,0,0);
color:#000;
border-radius:0px;
border-bottom:1px solid #444;
}
.header .search-wrapper:hover,
.header .search-wrapper:hover .form-search,
.header .search-wrapper:hover form,
.header .search-wrapper:hover .input-text {
width:100%;
font-size:45px;
height:100px;
}
.header .search-wrapper,
.header .search-wrapper form,
.header .search-wrapper .form-search,
.header .search-wrapper .input-text {
transition: all 1.0s ease;
-webkit-transition: all 1.0s ease;
display:block;
}
现在我们正在努力让这个功能在 Chrome 和 Firefox 中运行。当我在 chrome 中查看它时,背景 div 会立即跳到更大的高度以适应调整后的搜索栏,但是当它在你离开悬停后重新调整大小时它会顺利地完成。
我的问题:有没有办法让跳跃消失?这让我发疯。当调整搜索栏大小时,我已经为所有正在移动的元素添加了一个过渡,但它不起作用。
此外,在其他浏览器中使其正常工作的最佳方法是什么?谢谢!!!
如果您需要更多信息,请告诉我!
您必须手动设置 .header-top-container 的高度 class 并针对悬停状态进行相应调整。
CSS 按照标准只会将动画应用于规则中定义的元素以应用它们。此外,只有在有开始和结束结果时才会应用过渡,因此 推断 值(例如高度和宽度)将无法设置动画。请注意,我没有说 inherited 值,因为这些值在技术上具有起始值,因此是可动画的。
所以对于您的 CSS,您需要这样的东西:
.header-top-container {
transition: height 1.0s ease;
-webkit-transition: height 1.0s ease;
height: 50px; /* change to whatever your height should be */
}
.header-top-container:hover {
height: 100px; /* the new height of the background */
}
无法从未定义的起点过渡。
您必须
在 .search-wrapper 上指定初始高度
http://jsfiddle.net/5h69j6uq/
或者,如果您的内容必须动态调整大小,请使用 min-height: 100px
属性 而不是 height: 100px
属性 来设置更新后的高度。 min-height
的默认值为 0,因此将从该定义的默认值过渡到 100px
http://jsfiddle.net/8t1beeLo/
我遇到了(希望如此)一个简单的 CSS 问题,我无法开始工作。
如果您转到 http://new.therepairshack.com 并查看顶部搜索栏。
当您将鼠标悬停在它上面时,它会根据内容宽度调整大小。
CSS 在这里:
.header .search-wrapper .form-search .input-text {
background:rgba(0,0,0,0);
color:#000;
border-radius:0px;
border-bottom:1px solid #444;
}
.header .search-wrapper:hover,
.header .search-wrapper:hover .form-search,
.header .search-wrapper:hover form,
.header .search-wrapper:hover .input-text {
width:100%;
font-size:45px;
height:100px;
}
.header .search-wrapper,
.header .search-wrapper form,
.header .search-wrapper .form-search,
.header .search-wrapper .input-text {
transition: all 1.0s ease;
-webkit-transition: all 1.0s ease;
display:block;
}
现在我们正在努力让这个功能在 Chrome 和 Firefox 中运行。当我在 chrome 中查看它时,背景 div 会立即跳到更大的高度以适应调整后的搜索栏,但是当它在你离开悬停后重新调整大小时它会顺利地完成。
我的问题:有没有办法让跳跃消失?这让我发疯。当调整搜索栏大小时,我已经为所有正在移动的元素添加了一个过渡,但它不起作用。
此外,在其他浏览器中使其正常工作的最佳方法是什么?谢谢!!!
如果您需要更多信息,请告诉我!
您必须手动设置 .header-top-container 的高度 class 并针对悬停状态进行相应调整。
CSS 按照标准只会将动画应用于规则中定义的元素以应用它们。此外,只有在有开始和结束结果时才会应用过渡,因此 推断 值(例如高度和宽度)将无法设置动画。请注意,我没有说 inherited 值,因为这些值在技术上具有起始值,因此是可动画的。
所以对于您的 CSS,您需要这样的东西:
.header-top-container {
transition: height 1.0s ease;
-webkit-transition: height 1.0s ease;
height: 50px; /* change to whatever your height should be */
}
.header-top-container:hover {
height: 100px; /* the new height of the background */
}
无法从未定义的起点过渡。 您必须
在 .search-wrapper 上指定初始高度
http://jsfiddle.net/5h69j6uq/
或者,如果您的内容必须动态调整大小,请使用 min-height: 100px
属性 而不是 height: 100px
属性 来设置更新后的高度。 min-height
的默认值为 0,因此将从该定义的默认值过渡到 100px
http://jsfiddle.net/8t1beeLo/