Web_Design 板


LINE

※ 引述《kisha024 (4545454554)》之铭言: : 大家好 : https://jsfiddle.net/apfjd18m/ : 我有三个div 都有设定transition : 第一个div hover时,会立即变化(没有transition效果) : 第二个div hover前 有设定border-image-outset hover时有transition效果 : 第三个div hover前 并没有设定padding-right 而hover时也有transition效果 : 我的疑问在於 既然 border-image-outset 和 padding-right 的预设都是0 : 为什麽hover前 border-image-outset要设定 而padding-right却不用呢? : 谢谢 (1) div1、div2 行为不同的原因 根据 border-image-outset 在 MDN 上的资讯, 它的 "computed value" 是 "as specified", 且 "animation type" 是 "by computed value type", 表示 transition 时会直接用当下的数值型态进行内插。 https://i.imgur.com/XnV8I0c.png
问题是 border-image-outset 本身支援两种数值型态: <number> (无单位,如 0、1.5) <length> (有单位,如 0px、1.5rem) div1 初始状态是预设值的 0, div2 初始状态则是你设定的 0px, 两者并不是等效的。 从 transition 的角度来看, 一个是 <number> → <length> (0 → 20px), 另一个则是 <length> → <length> (0px → 20px), 因此只有 div2 能正确内插过程。 这件事跟它是预设值还是使用者设定的数值无关, 只看开始跟结束的数值型态是否相符, 所以如果你把 div2 的 0px 改成 0, 它一样会失效。 (2) div3 不受影响的原因 padding-right 本身也支援两种数值型态: <length> <percentage> (需加 %,如 1.5%) 但它的 "animation type" 是 "a length", 表示不管你设定是用哪一种, 最後都会转换成 <length> 之後才进行内插, 不会有型态不相符的问题。 https://i.imgur.com/jxXZyz6.png
另外, 有人可能会疑惑 padding-right 支援的数值型态并不包含 <number>, 那为何 MDN 上的预设值仍然写 0 而非 0px 或 0%。 根据 W3C 的规范, <length> 为 0 时其单位是可省略的, 但如果该 property 同时支援 <length> 跟 <number>, 则会优先解释为 <number>。 https://i.imgur.com/tEsIEU3.png
这也是为什麽大部份 CSS property 不太需要区分 0 跟 0px, 但在 border-image-outset 的例子就需要。 当然这规则只适用 0, 若用其他非 0 的数字都会被浏览器视为 invalid 而直接忽略。 https://i.imgur.com/k8YPKOp.png
(3) 额外补充 在 (1) 的说明中, 另一种可行的作法是改用 <number> → <number>, 例如把 div1 的 20px 改成 20。 但如果你实际测试, 会发现它反而变成完全不会动的状态, 这是因为当数值型态为 <number> 时, 它代表的意义为 border-width 的倍数。 https://i.imgur.com/9S4sZV7.png
然而, 当 border-style 为 "none" 或 "hidden" 时, 不管 border-width 的设定值为多少, 其 "computed value" 都会被强制变为 0, 导致乘上任何倍数都还是 0, 自然就不会有任何动作。 https://i.imgur.com/N1QXOgv.png
所以若要用 <number> 的写法, 还要先将 border-style 改为非上面两种值才行, 如以下连结的 div4、div5 所示。 https://jsfiddle.net/7tr1fm93/ 也就是说 <number> → <number> 会跟 border-width 挂勾, <length> → <length> 则不会。 -- 老实说我也不能 100% 确定这就是根本原因, 毕竟没真的去看底层实作逻辑, 但这是目前结合各项资讯与测试结果後最有可能的推论了。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.137.223.117 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1707378640.A.F72.html ※ 编辑: microloft (101.137.223.117 台湾), 02/08/2024 16:05:19
1F:推 stupidwoman: 推 02/08 17:57
2F:推 cloki: 推 02/08 19:51
3F:推 kisha024: 谢谢 获益良多 02/08 22:44
4F:推 river4613: 6 02/09 02:48
5F:推 LoveMoon: 02/11 17:42
6F:推 n0500: 推 02/12 11:50
7F:推 vuncent: Push 02/23 13:10
8F:推 ya2138: 推推,有学到东西 08/13 07:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP