可扩展的 Div,在 CSS 中具有过渡功能
Expandable Div with Transition in CSS
我在页面顶部有一个div
,包含一些标题文本,mouseenter
时,应该扩展(高度(,以显示一些较小的文本。然后,在mouseleave
时,它应该收回。这比听起来更难...
解决方案必须:
- 从仅适合标题的高度到适合所有文本的高度。
- 从一个过渡到另一个。
- 尝试使用纯 CSS。
- 如果鼠标离开,则让扩展动画暂停,反之亦然(在 CSS 中默认,但在 jQuery 中不是(。
我试过:
- 在我的样式表中使用
:hover
,从设置的像素值更改为auto
,如此问题所示(但在我的样式表中它是纯 CSS(。这并没有转变。 - 在扩展时使用设置的高度,这不适用于不同的视口大小。
- 使用
max-height
,并将其扩展到比实际扩展div
更大的东西,如这个问题所示。这意味着过渡无法正常工作,并且在不同的设备上看起来不同。
使用 jQuery
.animate()
,使用 auto 的像素值,然后创建一个过渡,如本问题所示,但动画必须在开始下一个动画之前完成,这意味着如果远离div
,一系列动画可能会在用户鼠标后持续很长时间。
在此处查看上述所有四个示例。
如前所述,纯CSS是理想的,但如果不可能,我会对JavaScript很好(我更喜欢jQuery(。
谢谢! :)
我不知道有任何纯粹的 CSS 解决方案——将值转换为 auto
是规范中不包括的内容;我认为,这甚至是一个明确的决定,其基础是可能存在执行问题。
但是对于一个"简单"的jQuery解决方案,我只需将段落内容包装在一个额外的范围内,将初始段落高度设置为0并溢出:隐藏,将高度的过渡保留在适当的位置 - 然后让jQuery只做一件事,读取span元素的高度,设置段落的高度,然后再次将其设置为0以再次淡出文本。
.details {
height: 0;
margin: 0;
overflow: hidden;
transition: height 1s;
}
$("div").mouseenter(function() {
$(this).find('p').css('height', $(this).find('span').height());
})
$("div").mouseleave(function() {
$(this).find('p').css('height', 0);
})
这样,CSS 仍然通过 transition
处理高度变化(
animate()
, 如果浏览器支持它 – 如果一个非常旧的浏览器不支持transition
,那么 jQuery 将负责回退实现;在我的解决方案中,高度会立即变化,没有任何过渡。
https://jsfiddle.net/ypwu9n0g/7/
请注意,在该示例中,所有四个项目的方法都相同,我没有费心更改文本内容;-(
尝试使用 css
:hover
[id^="title"] {
height: 1em;
overflow: hidden;
-webkit-transition: height 1s;
/* Transitions not working */
transition: height 1s;
}
[id^=title]:hover {
height: 10em;
}
一种利用height
、line-height
、 的font-size
、opacity
css
方法
[id^="title"] p {
overflow:hidden;
font-size:0em;
line-height:0em;
/* height:0px; */
opacity:0;
-webkit-transition: height 1s;
transition: /* height 1s,*/ opacity 1s, line-height 0.1s;
}
[id^="title"]:hover p {
/* height:auto; */
opacity:1;
line-height:1em;
font-size:1em;
opacity:1;
text-overflow: ellipsis;
}
<div id="title1">Title 1<p id="details">Height working, but not transition. Height working, but not transition. Height working, but not transition. Height working, but not transition. Height working, but not transition. Height working, but not transition. Height working, but not transition. Height working, but not transition.</p></div>
<div id="title2">Title 2<p id="details">Transition working, but only on one viewport size... Transition working, but only on one viewport size... Transition working, but only on one viewport size... Transition working, but only on one viewport size... Transition working, but only on one viewport size... Transition working, but only on one viewport size... Transition working, but only on one viewport size...</p></div>
<div id="title3">Title 3<p id="details">Height working, but transitions looking different on different viewport sizes. Height working, but transitions looking different on different viewport sizes. Height working, but transitions looking different on different viewport sizes. Height working, but transitions looking different on different viewport sizes. Height working, but transitions looking different on different viewport sizes. </p></div>
<div id="title4">Title 4<p id="details">Height and transition working - just one catch - the animation does not pause when a new one starts, creating a kind of animation stack that is annoying... Height and transition working - just one catch - the animation does not pause when a new one starts, creating a kind of animation stack that is annoying... Height and transition working - just one catch - the animation does not pause when a new one starts, creating a kind of animation stack that is annoying... </p></div>
JSFIDDLE https://jsfiddle.net/ypwu9n0g/17/
相关文章:
- 添加文字和评论功能更新Div
- jQuery Div滚动功能:IE中的问题
- Div元素并没有引导点击以启用拖动功能
- 将功能元素 IMG 更改为 DIV 背景
- 如何使 Dreamweaver AP Div 显示/隐藏功能在 IE9 中工作
- 可扩展的 Div,在 CSS 中具有过渡功能
- 点击DIV或A标签激活JS功能
- 通过显示/隐藏功能显示多个DIV的表单验证
- jQuery点击功能:显示基于先前单选按钮选择的Div
- 动态添加的 DIV,具有拖动和调整大小功能
- Div是重叠前一个Div和打破前一个Div的功能
- 添加滚动到Div功能与UI自动完成
- 如何添加2个不同的onclick功能到同一个DIV标签
- Div不显示更改功能,但在ajax成功
- 无法识别Div内容更改功能
- 如何使DIV振动或嗡嗡作响?(类似于iOS的移动/删除应用程序功能)
- Div onclick功能不起作用
- 具有点击功能的DIV及其内部的图像有一个死角
- Div覆盖禁用谷歌地图功能
- 改变DIV标签的功能,比如选择选项