Nil*_*lsB 7 html javascript css
我在 html 中附加了三个对象的代码。请查看 SO 代码游乐场或此处: http ://jsfiddle.net/kr34643L/
第一个 (id1) 是一个div,我可以通过 css3 旋转它。
第二个(id2)是一个跨度,不可能以相同的方式旋转它。
但可以旋转跨度但在进行过渡时只是它不会停留在那个位置。
我已经看到有关将 display 设置为block或inline-block的答案,但老实说,我不明白为什么我必须更改显示样式。特别是当过渡效果很好但只是不能保持最后的位置时。
var id1 = document.getElementById('id1');
var id2 = document.getElementById('id2');
var id3 = document.getElementById('id3');
var rotate1 = 0;
var rotate2 = 0;
var rotate3 = 0;
id1.addEventListener("click", function(){
rotate1 = rotate1 ? 0 : 45;
id1.style.transform = "rotate("+rotate1+"deg)";
});
id2.addEventListener("click", function(){
rotate2 = rotate2 ? 0 : 45;
id2.style.transform = "rotate(" + rotate2 + "deg)";
});
id3.addEventListener("click", function(){
rotate3 = rotate3 ? 0 : 45;
id3.style.transform = "rotate(" + rotate3 + "deg)";
id3.style.transition = "transform 2s";
});Run Code Online (Sandbox Code Playgroud)
#id1, #id2, #id3 {
width: 100px;
height: 15px;
border: 2px solid;
}Run Code Online (Sandbox Code Playgroud)
<div class="centerbox">
<div id="id1" style="cursor:pointer">div can rotate</div>
<span id="id2" style="cursor:pointer">span doesn't</span><br>
<span id="id3" style="cursor:pointer">span can transform though</span>
</div> Run Code Online (Sandbox Code Playgroud)
更新
实际上,CSS 变换样式不适用于内联元素,因为它们不被视为块元素。
\n\n官方答案请查看W3标准。
\n\n根据可变形元件的W3标准:
\n\n\n\n\n\n
\n- \n
其布局由 CSS 框模型控制的元素,该元素是块级或原子内联级元素,或其显示属性计算为table-row、table-row-group、table-header-group、table-footer -group、table-cell或table-caption [CSS21]
- \n
SVG 命名空间中的元素,不受 CSS 盒模型的控制,该模型具有 Transform、\xe2\x80\x98patternTransform\xe2\x80\x98 或gradientTransform [SVG11] 属性。
因此您无法将转换样式应用于<span>元素。