我想创建一个toggle button
,将其形状从加号变为减号。
只使用CSS,*不使用 * 伪元素。
我想要的效果是让“+”号中的垂直线缩小为水平线。
我知道这是可能的,但我不确定哪一个是最好的路线,我想做一些与height
,但我担心的line-height
的浏览器改变其在元素中的位置。
$('button').on("click", function(){
$(this).toggleClass('active');
});
button {
color: #ecf0f1;
background: #e74c3c;
width: 50px;
height: 50px;
border: 0;
font-size: 1.5em;
}
button span {
transition: all .75s ease-in-out;
}
button.active span {
/* Code to morph + to - */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button><span>+</span></button>
5条答案
按热度按时间n8ghc7c11#
由于形状的简单性,最简单的方法就是使用元素来创建
+
和-
。使用伪元素是最干净的解决方案,但您也可以只使用DOM元素,并拥有稍微混乱的文档结构。考虑到这一点,实际的解决方案是简单的。我们使用CSS来定位元素,使其与所需的字符相似,然后通过动画显示该位置来在它们之间“变形”。
看看下面的代码,并尝试理解每个规则的功能。
个字符
gj3fmq9x2#
注意:请停止编辑问题,使答案不正确
CSS解决方案
一个(旧)CSS解决方案:
使用具有
content
属性的伪元素::before
x
的一个字符串
一个(旧的)jquery解决方案:
不需要
span
,你可以在jquery中使用text()
和if语句来实现这一点。shyt4zoc3#
啊,我的错,我忽略了OP不想使用任何伪元素。但是伪元素的最大好处是你有更少的HTML代码和更干净的结构。
这也是一个不同的 * 变形 * 动画作为OP希望,但也许别人可以使用这个。
所以如果你不介意的话,我就把我的建议放在那里。
像这样的?
超文本标记语言
字符串
CSS
型
jQuery查询
型
这里有一个工作示例http://codepen.io/svelts/pen/LkyZoZ
gmxoilav4#
我想在写完这篇文章后,我会展示一个同时发生多个转换的例子,以给予一个“抛光”的外观。
我还添加了一个“点击”事件,以保持交叉点击。
个字符
tjjdgumg5#
试试这个