调个前端布局遇到个问题请教大家 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ygcaicn
V2EX    程序员

调个前端布局遇到个问题请教大家

  •  
  •   ygcaicn 2024-08-06 17:44:34 +08:00 1786 次点击
    这是一个创建于 435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我希望初始状态(没有 js 干预)下 textarea 高度撑满父容器,发现父容器始终比 textarea 高 6px ,看 padding ,margin 啥的都没有,就是下方比 textarea 多出来 6px ,请教大神解惑啊

     textarea { height: 100%; line-height: normal; box-sizing: border-box; } .d { background-color: #c26bea; padding: 0; } <div class="d"> <textarea placeholder="输入提示词"></textarea> </div> 

    完整代码

    https://gist.githubusercontent.com/ygcaicn/87d92872cc1bd8018d95e4de4e17d55b/raw/e76d330a7cbeb0cfc1061d60d0bae5c511290b1c/test.html

    13 条回复    2024-08-06 19:00:16 +08:00
    ZZITE
        1
    ZZITE  
       2024-08-06 17:50:06 +08:00   1
    textarea {
    display: block;
    }
    sayitagain
        2
    sayitagain  
       2024-08-06 17:51:59 +08:00
    你没发现你 textarea 上的 height 是无效的吗...
    ygcaicn
        3
    ygcaicn  
    OP
       2024-08-06 17:52:36 +08:00
    @ZZITE 666 解决了,非常感谢!!!
    Podul
        4
    Podul  
       2024-08-06 17:58:08 +08:00
    display: block; 或者 vertical-align: bottom;

    想不起来是啥原因了,好像和对齐方式有关?
    inline-block 的元素会有这个问题,比如:img, svg
    ygcaicn
        5
    ygcaicn  
    OP
       2024-08-06 17:58:10 +08:00
    @sayitagain height 有效,这里截图是手动拖拽 resize 之后的结果,@ZZITE 给出的方案解决了,应该是 textarea 默认 display inline-block 导致的效果,具体有没有大神解释一下
    go522000
        6
    go522000  
       2024-08-06 17:59:58 +08:00
    textarea 加上 display:flex; 试试
    zhangxingliang
        7
    zhangxingliang  
       2024-08-06 18:01:41 +08:00
    .d {font-size: 0;}
    old9
        8
    old9  
       2024-08-06 18:03:28 +08:00 via Android
    inline block 元素,默认 1 停在基线上
    chnwillliu
        9
    chnwillliu  
       2024-08-06 18:08:46 +08:00 via Android
    幽灵空白节点
    每个 line box 内有个零宽度 strut 盒子
    ygcaicn
        10
    ygcaicn  
    OP
       2024-08-06 18:19:13 +08:00
    感谢大家,我愣是调了 1 个小时,切身体会了一把定位问题远比“解决”问题困难,搜了一下文档这里有个早年尤大在知乎的回答 https://www.zhihu.com/question/21558138/answer/18615056

    纠其根因是 inline 元素的 vertical-align 默认对齐在 BASELINE ,那 6px (不一定是 6px )是 BASELINE 和 BOTTOM 的距离

    ![]( )
    realJamespond
        11
    realJamespond  
       2024-08-06 18:28:09 +08:00
    inline block 是 css 大坑,所有异常首先怀疑这个
    paopjian
        12
    paopjian  
       2024-08-06 18:43:43 +08:00
    奇葩的文本对齐问题,不过不建议改 display,font-size 或者 line-height 更好一点
    shinygang
        13
    shinygang  
       2024-08-06 19:00:16 +08:00
    @zhangxingliang 用这个思路的还是不错的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4824 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 09:48 PVG 17:48 LAX 02:48 JFK 05:48
    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