You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React开发英雄联盟赛事战队平衡工具 加载缓冲gif时div不随缩放图片自适应高度

问题根因

你当前遇到的布局错位是两个原因共同导致的:

  • 你给.bufferIcon设置的max-height: 25%是相对父元素高度生效的,但父元素.riotdevkeyform本身没有固定高度,高度由内部子元素的原始尺寸撑开,形成了「父高度依赖子元素尺寸、子元素缩放比例依赖父高度」的循环依赖,浏览器会直接忽略百分比高度规则,按照gif原始尺寸计算布局,导致外层div被撑大。
  • 你写的.riotdevkeyform *通配符选择器给所有子元素强行添加了display: flex、width: 80%属性,替换元素img不需要flex布局,额外的样式也干扰了图片的尺寸计算。
修复方案

方案1:直接修改图标样式(最快生效)

将.bufferIcon的百分比高度改为固定高度,同时覆盖通配符带来的多余样式,代码如下:

.bufferIcon {
    /* 可根据你想要的图标大小调整数值 */
    max-height: 40px;
    width: auto;
    /* 覆盖通配符的多余样式 */
    display: block !important;
    width: auto !important;
}

方案2:增加容器固定布局(更稳定,避免高度跳动)

首先给加载图标套一个固定高度的容器,修改RiotDevKeyForm的render代码:

render() {
        return (<div className="riotdevkeyform">
            <div className="text">
            Enter Riot Dev Key:
            </div>
            <div className="input">
                <form onSubmit={this.state.isLoading ? (e) => e.preventDefault() : this.handleSubmit}>
                    <input readOnly={this.state.isLoading ? true : false} type="text" value={this.state.key} onChange={this.handleChange}></input>
                </form>
            </div>
            <div className="submit">
                <button 
                    style={{display: this.state.isLoading ? "none" : "block"}} 
                    onClick={this.handleSubmit}>
                        Submit
                </button>
            </div>
            <ErrorMsg 
                display={this.state.errMsg.length !== 0}
                errMsg={this.state.errMsg}
            />
            {/* 新增容器包裹加载图标 */}
            <div className="buffer-container">
                <BufferIcon 
                    display={this.state.isLoading}
                />
            </div>
        </div>);
    }

然后添加容器的CSS:

.buffer-container {
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}
.bufferIcon {
    max-height: 100%;
    width: auto;
    display: block;
}
额外优化建议

不推荐使用.riotdevkeyform *这种通配符选择器给所有子元素加通用样式,会带来很多不必要的样式冲突,建议把需要通用设置的样式单独提取为类名,给对应元素手动添加即可。

内容的提问来源于stack exchange,提问作者neRienn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:15:04