Javascript/CSS3 过渡

标签 javascript css css-transitions

当“image-strip”悬停时,它会打开到其内容的高度。但是,这样做时应该也能平稳过渡。我究竟做错了什么? CSS3 似乎没有影响它。

Javascript:

<script type="text/javascript">
function hover(id) {
document.getElementById(id).style.height="100%";
}
</script>

样式:

#image-strip{
    width: 100%;
    height: 300px;
    float: left;
    overflow: hidden;
    transition: all 0.3s ease-in;
    -webkit-transition: all 0.3s ease-in;
    -moz-transition: all 0.3s ease-in;
    -ms-transition: all 0.3s ease-in;
    cursor: pointer;
}

#image-strip img{
    width: 100%;
}

HTML:

<div id="image-strip" onmouseover="hover('image-strip')"><img src="images/content/1.jpg"></div>

最佳答案

一些事情,第一个: 您实际上可以将“this”传递给您的函数调用,因为这样您就可以访问它并且不需要再次访问 DOM,从而节省时间和内存,虽然数量不多,但这是一种更好的做法。 onmouseover="hover(this)"

function hover(el) {
    el.style.height="100%";
}

第二件事:
CSS 过渡意味着在没有 Javascript 的情况下使用,关键是不需要 JS 来操作 DOM,这样才能使过渡正常工作:

#image-strip{
   width: 100%;
   height: 300px;
   float: left;
   overflow: hidden;
   transition: height 0.3s ease-in;
   -webkit-transition: height 0.3s ease-in;
   -moz-transition: height 0.3s ease-in;
   -ms-transition: height 0.3s ease-in;
   cursor: pointer;
}

#image-strip:hover {
   height: 100%;
}

你只需要在你想要影响的属性上调用转换,然后当元素状态发生变化时,比如悬停,转换就会开始。需要说明的是,你不需要任何 Javascript 来使用转换除非你可能添加或删除一个元素来启动过渡,但你不需要任何 JS 来完成你正在做的事情。希望这对您有所帮助。

关于Javascript/CSS3 过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635931/

相关文章:

javascript - 插入外部页面后更改所有href

javascript - 使 jQuery 动画 Div 的大小变得更大

css - 避免悬停过渡时文本和背景颜色的不同变化速度

html - 子域忽略链接样式表的边距?

css - (React) 带有 css 模块的 CSSTransition

css - 在 Safari 9.1.2 (11601.7.7) 中悬停时 SVG 过渡失败

javascript:具有继承的基对象中变量的行为

javascript - 立方体中的 WebGL 三 Angular 形

javascript - Bootstrap 和 jQuery 点击事件不起作用

html - SVG 在移动 Safari 中呈现较小