我试图创建Twitter Bootstrap按钮的旋转器. Spinners应该指出一些正在进行的工作(即ajax请求).
这里是小例子:
http://jsfiddle.net/AndrewDryga/zcX4h/1/
HTML(完整的jsfiddle):
- Unknown element (no animation here!):
- <p>
- <button class="btn-success has-spinner">
- <span class="spinner"><i class="icon-spin icon-refresh"></i></span>
- Foo
- </button>
- </p>
- Works when width is defined:
- <p>
- <a class="btn btn-success has-spinner">
- <span class="spinner"><i class="icon-spin icon-refresh"></i></span>
- Foo
- </a>
- </p>
CSS:
- .spinner {
- display: inline-block;
- opacity: 0;
- width: 0;
- -webkit-transition: opacity 0.25s,width 0.25s;
- -moz-transition: opacity 0.25s,width 0.25s;
- -o-transition: opacity 0.25s,width 0.25s;
- transition: opacity 0.25s,width 0.25s;
- }
- /* ... */
- .has-spinner.active .spinner {
- opacity: 1;
- width: auto; /* This doesn't work,just fix for unkown width elements */
- }
- /* ... */
- .has-spinner.btn.active .spinner {
- width: 16px;
- }
- .has-spinner.btn-large.active .spinner {
- width: 19px;
- }
这个交易是,css“margin:auto”不会产生预期的动画,所有元素的微调宽度都应该通过css定义.有没有办法解决这个问题?另外,也许还有更好的方法来调整/显示旋转器?
我应该用按钮填充,让它在方式,按钮宽度不变,当微调显示或更改宽度的按钮是否可以? (如果不适当地将其作为片段)
解决方法
我可以通过使用宽度的max-width istead来解决这个问题.这也是纯粹的CSS解决方案,所以它几乎可以在任何地方使用(例如在标签上显示X标记,当用户将鼠标悬停在其上时).
演示:http://jsfiddle.net/AndrewDryga/GY6LC/
新CSS:
- .spinner {
- display: inline-block;
- opacity: 0;
- max-width: 0;
- -webkit-transition: opacity 0.25s,max-width 0.45s;
- -moz-transition: opacity 0.25s,max-width 0.45s;
- -o-transition: opacity 0.25s,max-width 0.45s;
- transition: opacity 0.25s,max-width 0.45s; /* Duration fixed since we animate additional hidden width */
- }
- /* ... */
- .has-spinner.active .spinner {
- opacity: 1;
- max-width: 50px; /* More than it will ever come,notice that this affects on animation duration */
- }