html - 使用 CSS 动画文本

标签 html css

如何平滑地为文本位置设置动画。悬停时,我想将文本从 text-align: center 重新定位到 text-align: left。

从这个状态:

Initial state

到这个状态:

enter image description here

当我更改 :hover 选择器上的文本对齐时,过渡不平滑。它只是跳到左对齐。

div.subject > div.subjectHeader {
height: 200px;
width: 100%;
color: white;
font-family: 'Lato', 'Helvetica', sans-serif;
font-weight: 700;
font-size: 1.8em;
box-sizing: border-box;
text-align: center;
vertical-align: middle;
line-height: 200px;
transition: all 0.7s cubic-bezier(0.4,0,0.2,1);
-moz-transition: all 0.7s cubic-bezier(0.4,0,0.2,1);
}

div.subject:hover > div.subjectHeader {
    height: 30px !important;
    line-height: 30px !important;
    font-size: 1.5em !important;
    text-align: left !important;
    padding-left: 10px !important;
}

这是 jsfiddle:Link to jsfiddle

最佳答案

The text-align property is not animatable ,因此 CSS 转换不会应用到它。

一种可能的解决方法是将您的文本绝对定位在一个 div 中,并为 left 属性设置动画。例如,像这样修改标题 HTML:

<div class="subjectHeader"><span class="subjectHeaderInner>Chemistry</span></div>

然后使用 leftmargin 属性为 .subjectHeaderInner 的 CSS 设置动画。不要更改 text-align,因为无法为该属性设置动画。例如:

div.subject .subjectHeaderInner {
    width: 200px;
    position: absolute;
    left: 50%;
    margin-left: -100px;
    -moz-transition: all 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}
div.subject:hover .subjectHeaderInner {
    left: 0;
    margin-left: 0;
}

我用这段代码更新了你的 fiddle :http://jsfiddle.net/kAPtL/5/

根据您想要的效果,还可以采用其他解决方法。在 Is it possible to transition text-alignment using CSS3 only? 有一些例子

关于html - 使用 CSS 动画文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002621/

相关文章:

html - 如何在网站上使用 Icomoon 图标,更改图标颜色以及将来添加更多图标?

jquery - 通过 jQuery 和 JavaScript 获取 "select"HTML 输入元素的默认值?

html - 全屏鼠标滚轮滚动导致白色

php - 电子邮件未发送 mdaemon 配置完成但邮件未发送通过且未收到错误 php 文件

html - 当同一行上的其他 Flex 元素具有不同高度时,绝对定位会中断

html - 当人们说静态文件是 .html、.js 等时,他们是不是犯了一个错误?

html - 保持未知数量的 div 居中,每行最多 4 个

html - 如何在悬停文本中向下滑动图像

javascript - 使用 javascript 更改可见性

javascript - 在 coffeescript 文件中使用 erb 更改背景