【问题标题】:Using a mask div for a text对文本使用掩码 div
【发布时间】:2014-02-23 10:25:41
【问题描述】:

我正在使用 html5 和 css3 制作一个按钮。我正在尝试为我的按钮制作像 this 这样的悬停动画。

当鼠标悬停在按钮上时,会从中心展开一个白色圆圈,圆圈内的按钮文本为黑色字体(以使其更具可读性)。我试图在按钮内放置一个 div,但我无法将黑色文本与按钮文本放在同一位置。

【问题讨论】:

  • 我认为没有任何 javascript 是不可能的。
  • 也许可以使用 css-animations。
  • 其实我对动画不太感兴趣,因为我可以在 css3 和 jquery 中很好地使用它们。我的问题是带有黑色文字的白色圆圈,我不知道如何将它与按钮一完美对齐

标签: html css css-animations


【解决方案1】:

这确实可以在没有 javascript 没有动画的情况下完成,只是过渡

我能够使用内部元素和内部元素上的伪元素来做到这一点。有趣的概念但不是很容易改变,很多基于元素高度的硬编码值。使用像 SCSS 这样的预处理器会更容易操作

不管怎样,这是代码(可能需要清理一下)

/* HTML */
<div class='outer'>
    Contacts
    <div class='innerCircle'></div>
</div>

/* CSS */
.outer {
    width:150px; height:50px;
    border-radius:10px;
    background:blue;
    text-align:center;
    color:white;
    line-height:50px;
    position:relative;
}
.innerCircle {
    position:absolute;
    top:50%; left:50%;
    background:white;
    color:black;
    overflow:hidden;
    border-radius:50%;
    transition:all .5s;
    height:0; width:0;
    padding-left:-10px;
}
.innerCircle:before {
    content:'Contacts';
    position:absolute;
    margin-left:-2px;
    transition:all .5s;
    transform:translateX(-25px);
    top:-25px;
}
.outer:hover .innerCircle {    
    margin-left:-25px;
    top:0;
    height:50px; width:50px;
}
.outer:hover .innerCircle:before {
    top:0px;
}

Demo

【讨论】:

  • 这正是我想做的,我必须非常感谢你!无论如何都有一个小问题,因为这将是一种 CMS 的菜单,该部分是动态的并且它们会发生变化,因此属性也必须自动更改..我尝试使用更大的单词更改示例中的单词但是圆圈中的文字不对齐
  • @Sevenarth 不幸的是,除非您使用 javascript,否则您将不得不更改每个 margin-left 的值 .innerCircle:before
  • 我明白了。那么再次感谢你!我会尝试找到解决方法。 :D
猜你喜欢
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
相关资源
最近更新 更多