悬停时的小型CSS动画

3
尝试创建类似于此的内容。我无法使用letter-spacing。我创建了这段代码,但它效果不佳。 enter image description here 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
这是我能想到的最好的解决方案。它在未悬停状态下手动在'd'和'i'之间引入一个空格,悬停时将其删除。 - Harry
2个回答

5

由于您不能使用letter-spacing或拆分单词,因此以下是一种使用border-right的方法,该方法与overflow: hidden设置一起隐藏“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>

JSFiddle


虽然这样肯定更好,但他说他不能使用letter-spacing - robabby
我已经提到了我不能使用字母间距。 - Maximus Dredoff
已编辑!!不带字母间距和整个单词。 - Alexis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接