img 标签百分比宽度异常 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pinews
V2EX    设计

img 标签百分比宽度异常

  •  
  •   pinews 2019-04-29 05:32:09 +08:00 5740 次点击
    这是一个创建于 2357 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们知道,html 中暗藏了一些默认宽高,比如 body 标签默认是 100%的,在里面建立一个 div 标签,他会继承这个 100%,放一个 img 标签,默认是 img 自身大小,如果给 img 加一个 100%的宽度,宽度就是外框的宽度。
    今天遇到一个例外,如果外框是绝对定位,这个宽度似乎没了,之前我不知道,不过没问题,我用了 IE 和 chrome 都是这样。
    img 自身宽 1200px,高 400px,设定宽度 100%,高度 100px,IE 和 chrome 表现并不一致,IE 中设定宽度无效,实际宽度为依高度缩放后的宽度,1200/(400/100)=300,而 chrome 是 1200,也就是说 chrome 的 100%是按照自身的宽度计算的。

    大家怎么看?
    18 条回复    2019-04-30 09:16:54 +08:00
    rabbbit
        2
    rabbbit  
       2019-04-29 06:22:09 +08:00   2
    pinews
        3
    pinews  
    OP
       2019-04-29 07:40:37 +08:00
    不太明白,意思是 IE 是对的?
    yushiro
        4
    yushiro  
       2019-04-29 08:15:24 +08:00 via iPhone
    外框绝对定位有宽度吗?如果没设宽度,那 img100%是多宽?
    pinews
        5
    pinews  
    OP
       2019-04-29 08:57:13 +08:00
    @yushiro 原本是外框的外框是设定有宽度的,我原以为外框继承,然后 img 继承,没想到遇到绝对定位中断继承了,这个 100%是因为图片本身的尺寸和我想要的尺寸是一样的,所以我原以为 chrome 是正确的,ie 出 bug 了,现在看来并不是那么回事,所以请教大家的看法
    pinews
        6
    pinews  
    OP
       2019-04-29 08:59:11 +08:00
    换言之,绝对定位必须显性的声明宽度咯?
    aa1072551507
        7
    aa1072551507  
       2019-04-29 09:13:57 +08:00
    你父元素都脱离文档流了,子元素怎么可能再去继承文档内的元素?很难理解吗.....
    yushiro
        8
    yushiro  
       2019-04-29 09:24:57 +08:00 via iPhone
    @pinews 看来你对 position 的 absolute,relative,static 这 3 个属性需要再去复习一下。
    尽量不要百度查,去 google 上搜
    grewer
        9
    grewer  
       2019-04-29 09:25:55 +08:00
    子元素也绝对定位试试
    rabbbit
        10
    rabbbit  
       2019-04-29 09:47:33 +08:00
    无法复现,给个 demo 吧.

    如下这个结构在 ie 中是没问题的
    <style>
    img {
    width: 100%;
    position: absolute;
    height: 200px;
    }
    </style>
    <body>
    <div>
    <img src="logo.jpg">
    </div>
    </body>
    pinews
        11
    pinews  
    OP
       2019-04-29 10:08:09 +08:00
    <!doctype html>
    <html>
    <head>
    </head>
    <body>
    <div style="position:absolute;">
    <img src="http://toyota.com.cn/mainvisual/ad/32.jpg" style="width:100%;height:100px;" />
    </div>
    </body>
    </html>
    pinews
        12
    pinews  
    OP
       2019-04-29 10:16:34 +08:00
    @aa1072551507
    @yushiro 脱离文档流,文章写的是脱离原位置,并没有说明宽高变化。

    不知道这和 transform 有什么区别和联系?
    rabbbit
        13
    rabbbit  
       2019-04-29 10:29:21 +08:00
    火狐的表现和 ie 一样,应该是 chrome 的实现不合标准.
    pinews
        14
    pinews  
    OP
       2019-04-29 10:32:50 +08:00
    @rabbbit 非常感谢你 兔子?!
    b0x
        15
    b0x  
       2019-04-29 12:33:48 +08:00
    1.不显式声明是 relative 的元素默认是 static.
    2.absolute 元素的参照是离他最近的一个 relative 父元素. 如果都不是,则参照是 html.
    3. 建议先引入 normalize.css,抹平各浏览器的默认样式差异
    aa1072551507
        16
    aa1072551507  
       2019-04-29 14:13:50 +08:00   1
    @pinews 你外层 DIV 脱离文档,那么他的宽只会显式的继承有相对 /绝对 /flex 定位的父元素或者 body,你父 div 绝对定位之后都没有设置宽度即使以 body 进行参考那宽度也是 0,怎么可能显示出来更不要说子元素 IMG 了?
    pinews
        17
    pinews  
    OP
       2019-04-29 19:22:07 +08:00
    @aa1072551507 body 宽度怎么是?
    aa1072551507
        18
    aa1072551507  
       2019-04-30 09:16:54 +08:00
    @pinews 你想指的是 body 宽度为什么是 0? 我说过了 绝对定位只会显式的继承,跟父元素宽度多少没有干系
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1008 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:54 PVG 06:54 LAX 15:54 JFK 18:54
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86