是否可以旋转单词的字符而不是使用 css3 旋转整个单词

Posted

技术标签:

【中文标题】是否可以旋转单词的字符而不是使用 css3 旋转整个单词【英文标题】:Is it possible to rotate characters of a word instead of rotating the whole word using css3 【发布时间】:2013-09-22 18:24:15 【问题描述】:

我正在尝试使用 onload 窗口事件转换 div 中的文本。

我知道transform: rotate(360deg) scaleX(-1); 使整个单词旋转,但我需要旋转文本字符并在加载时将它们返回到相同的位置。

我的fiddle 并在mysite 中初始化它

将答案标记为正确。仍然需要更好的答案!

【问题讨论】:

【参考方案1】:

答案已经给出。我不知道OP想要什么? 那就给他一个解释吧…… 使用的css代码:

@-webkit-keyframes rotateText
  
    0%   -webkit-transform: scaleX(1); 
    50%  -webkit-transform: scaleX(-1); 
    100% -webkit-transform: scaleX(1); 


@keyframes rotateText

    0%   transform: scaleX(1); 
    50%  transform: scaleX(-1); 
    100% transform: scaleX(1); 


.start > span 
    animation: rotateText 2s;  
    -webkit-animation: rotateText 2s;
    display: inline-block;    

所以基本上这里使用的是@keyframes。它基本上创建了一个动画,其帧与动画时间的百分比相关。 @keyframes 之后是您将调用的动画的名称。 使用animation,您可以调用特定动画,您还可以在其中给出动画将花费的时间,在本例中为 2 秒。

这里实际用到的html是:

<div class="start">
    <span>v</span>
    <span>i</span>
    <span>v</span>
    <span>e</span>
    <span>k</span>
</div>

所以每个字母都是单独动画的。 在 0%(动画开始)时,scaleX 是正常的。在 50%(本例中为 1 秒)时,scaleX 将为 -1,因此已镜像。在这之间有一个平滑的过渡,所以它看起来很平滑 ^^ 然后它又以 100% 恢复正常 有关 scaleX 和变换的更多信息here。 但是 Andrea Ligios 确实使用了自动生成的脚本,该脚本会将您要使用的单词的每个字母放入一个跨度中。

所以你可以轻松使用它:

<div class="start">
  vivek
</div>

我希望这是一个体面的解释。 感谢 Andrea Ligios!

【讨论】:

OP 希望确保没有不同的、更好的解决方案。顺便说一句 +1 解释:)【参考方案2】:

你在找这个吗?

Running Demo

    用 jQuery 将每个字母封装在 &lt;span&gt; 元素中;

    $(".start").html($(".start").html().replace(/./g, "<span>$&</span>"));
    

    定义动画

    @keyframes rotateText
    
        0%   transform: scaleX(1); 
        50%  transform: scaleX(-1); 
        100% transform: scaleX(1); 
    
    

    对 span 应用动画

    .start > span 
        animation: rotateText 2s;    
        display: inline-block;    
    
    

【讨论】:

它在 Chrome 中完美运行。显然你需要添加 webkit 前缀:@-webkit-keyframes-webkit-transform-webkit-animation。这是一个 SO 答案,而不是生产代码,我在 FireFox 上工作,所以自己添加它们;) @VikranthVivek :您再次删除了已接受的答案标记:D 到底是什么?!另一个错误? :) @nkmol 如果可能的话告诉我答案..! @AndreaLigios 对不起,我需要比这更清楚,如果我不能得到我会给你这个奖.. :) 绝对不是 ;) 我为什么要这样做?如果有人找到更好的方法,我也会学到新的东西【参考方案3】:

将每个字符包装在一个跨度(或类似的内联标记)中,并将转换应用于跨度。这将在视觉上将字符作为一个单词保持在一起,但允许您使用单个字符。显然这不能很好地扩展,但只要您不尝试将此效果应用于整个段落,它就应该按照您的描述进行。

【讨论】:

这是可能的,但如果有更多字符,那么在字母之间添加跨度是一项艰巨的任务.. @ArunBertil,jQuery 会很容易地把你变成大力士……看看这里的正则表达式。

以上是关于是否可以旋转单词的字符而不是使用 css3 旋转整个单词的主要内容,如果未能解决你的问题,请参考以下文章

html CSS3仅旋转背景图像,而不是element.html

CSS3旋转替代?

使css3过渡始终沿同一方向旋转

如何检查2个字符串是不是相互旋转?

三个JS:如何旋转物体而不是旋转相机?

使用纯CSS3实现一个3D旋转的书本