2015-11-02 120 views
3

试图创建类似这样的东西。 enter image description here悬停时的小CSS动画

我不能使用letter-spacing.我创建了这段代码,但是效果不好。

http://jsfiddle.net/pyqq8wfe/

.refreshed_logo { 
 
    font-family: ProximaNovaBold; 
 
    font-size: 50px; 
 
    text-decoration: none; 
 
    color: #000000; 
 
} 
 
.logo_wrapper { 
 
    color: inherit; 
 
    text-decoration: none; 
 
    width: 250px; 
 
    position: absolute; 
 
} 
 
.refreshed_logo:after { 
 
    content: 'digital'; 
 
    width: 20px; 
 
    height: 20px; 
 
    text-align: center; 
 
    position: absolute; 
 
    font-size: 20px; 
 
    background-color: red; 
 
    border-radius: 18px; 
 
    color: white; 
 
    margin-left: 4px; 
 
    margin-top: 3px; 
 
    text-indent: 8px; 
 
    font-weight: normal; 
 
    line-height: 1; 
 
    transition-property: width, height; 
 
    transition-duration: 0.2s, 0.2s; 
 
    transition-delay: 0s, 0.2s; 
 
    -o-transition-property: width, height; 
 
    -o-transition-duration: 0.2s, 0.2s; 
 
    -o-transition-delay: 0s, 0.2s; 
 
    -moz-transition-property: width, height; 
 
    -moz-transition-duration: 0.2s, 0.2s; 
 
    -moz-transition-delay: 0s, 0.2s; 
 
    -webkit-transition-property: width, height; 
 
    -webkit-transition-duration: 0.2s, 0.2s; 
 
    -webkit-transition-delay: 0s, 0.2s; 
 
} 
 
.refreshed_logo:hover:after { 
 
    width: 71px; 
 
    -webkit-transition: width 0.5s; 
 
    transition: width 0.5s; 
 
    text-indent: 2px; 
 
} 
 
.logo_wrapper:hover { 
 
    text-decoration: none; 
 
}
<a href="/" class="logo_wrapper"> 
 
    <span class="refreshed_logo"> 
 
       Granat 
 
      </span> 
 
</a>

有什么想法?

+1

[这](http://jsfiddle.net/pyqq8wfe/4/)是我能拿出最好的。它在未悬挂状态下手动在“d”和“i”之间引入一个空格,悬停时会将其取消。 – Harry

回答

5

既然你不能使用letter-spacing或分割的话,下面是一个使用border-right的方法与沿'd'后面的设置隐藏所有字符。在盘旋时,它们被揭示并因此产生效果。

.refreshed_logo { 
 
    font-family: ProximaNovaBold; 
 
    font-size: 50px; 
 
    text-decoration: none; 
 
    color: #000000; 
 
} 
 
.logo_wrapper { 
 
    color: inherit; 
 
    text-decoration: none; 
 
    width: 250px; 
 
    position: absolute; 
 
} 
 
.refreshed_logo:after { 
 
    content: 'digital'; 
 
    width: 20px; 
 
    height: 20px; 
 
    /*text-align: center; not required */ 
 
    position: absolute; 
 
    font-size: 20px; 
 
    background-color: red; 
 
    border-radius: 18px; 
 
    color: white; 
 
    /* following properties were added */ 
 
    padding-left: 5px; 
 
    box-sizing: border-box; 
 
    border-right: 5px solid red; 
 
    overflow: hidden; 
 
    /* end of addition */ 
 
    font-weight: normal; 
 
    line-height: 1; 
 
    transition-property: width, height; 
 
    transition-duration: 0.2s, 0.2s; 
 
    transition-delay: 0s, 0.2s; 
 
} 
 
.refreshed_logo:hover:after { 
 
    width: 65px; 
 
    transition: width 0.5s; 
 
} 
 
.logo_wrapper:hover { 
 
    text-decoration: none; 
 
}
<a href="/" class="logo_wrapper"> 
 
    <span class="refreshed_logo"> 
 
       Granat 
 
      </span> 
 
</a>

0

我尝试有同样的结果有可能更好:

最后编辑:为躲别人信我使用的背景颜色相同,并且仅改变第一个字母的颜色。

CSS:

.titre{ 
    font-size:20pt; 
} 

.sstitre{ 
    font-size:10pt; 
    font-weight:bold; 
    color:red; 
    background-color:red; 
    border-radius:10px; 
    padding-left:4px; 
    padding-right:2px; 
    width:10px; 
    position: absolute; 
    overflow:hidden; 
    transition:width 0.5s; 
} 

.sstitre::first-letter{ 
    color:white; 
} 

.titre:hover .sstitre{ 
width:40px; 
color:white; 
} 

HTML

<span class="titre">Granat<span class="sstitre">digital</span></span> 

JSFidle

+0

虽然这肯定更好,但他确实说他不能使用'letter-spacing'。 – robabby

+0

我提到过我不能使用字母间距。 –

+0

没有。我们需要留下文字“数字” –