【发布时间】:2023-03-12 06:51:01
【问题描述】:
给定一个基本的 HTML 模板和 CSS 样式,我看到两个不同的元素反应完全不同。
setTimeout(function() {
document.body.id = 'animate';
}, 100);
#animate input[type="checkbox"]{
width: 100px;
height: 100px;
transition: 2s all;
-moz-appearance: none;
}
#animate div{
width: 100px;
height: 100px;
background:blue;
transition: 2s all;
}
<input type="checkbox"/>
<div></div>
如果你在浏览器中打开它,你会看到,在加载时,div 已经有 100 像素的高度/宽度,但复选框在 2 秒内从 0 像素增长到 100 像素的高度/宽度。
为什么input 的行为与div 不同?是因为输入有默认的-webkit-appearance 让它可以在它们之间进行转换吗?
【问题讨论】:
-
看起来确实如此。虽然我似乎在Webkit's user agent stylesheet, except for in iOS 中找不到
input[type=checkbox]的任何width或height声明。我可能是错的。 -
@darrylyeo 我也找不到任何东西,当在元素检查器中切换它们时,它们又回到了 0。这让我更加困惑。
-
有趣的是,将鼠标悬停在 Chrome 开发者工具的“计算”选项卡中的
width和height条目上时,没有箭头可以将您带到源代码! -
我相信这是因为 div 没有将高度/宽度设置为默认样式(默认情况下,它的宽度是其容器的 100%,它的高度由它的内容决定),而复选框具有用作起点的默认大小。如果没有起点,过渡后的元素只会以指定的大小开始。
标签: css css-transitions webkit-appearance