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

如何自定义Streamlit的st.text_area宽高?CSS修改无效的替代方案

解决Streamlit中st.text_area自定义宽高不生效的替代方法

你的CSS设置未生效,大概率是选择器没有匹配到正确的DOM元素。以下是几种可行的替代方案:

方案1:修正CSS选择器,匹配正确DOM结构

Streamlit的st.text_area组件里,实际的<textarea>标签被包裹在带有stTextArea类的<div>容器内,需要调整选择器层级:

def main():
    custom_css = '''
    <style>
        /* 匹配stTextArea容器内的textarea元素 */
        .stTextArea textarea {
            width: 800px !important;
            height: 400px !important;
            min-height: 400px !important; /* 防止内容过少时高度收缩 */
        }
        /* 可选:调整外层容器宽度,避免textarea被容器限制 */
        .stTextArea {
            width: 800px !important;
        }
    </style>
    '''
    st.markdown(custom_css, unsafe_allow_html=True)  # 推荐用st.markdown替代st.write

    st.title("Custom Textarea Width and Height")
    user_input = st.text_area("Type your text here:")

    st.subheader("You typed:")
    st.write(user_input)

if __name__ == "__main__":
    main()

方案2:使用Streamlit原生参数(最简单)

st.text_area本身提供height参数直接设置高度,宽度可通过st.columns控制容器宽度间接实现:

def main():
    st.title("Custom Textarea Width and Height")
    
    # 创建占页面80%宽度的列,控制textarea宽度
    col = st.columns([0.8])[0]
    # 直接设置height参数,无需CSS
    user_input = col.text_area("Type your text here:", height=400)

    st.subheader("You typed:")
    st.write(user_input)

if __name__ == "__main__":
    main()

方案3:通过组件key精准定位单个组件

给st.text_area设置唯一key,通过key对应的DOM ID定位,避免影响其他组件:

def main():
    custom_css = '''
    <style>
        /* 通过key对应的ID定位目标textarea */
        #my_textarea textarea {
            width: 800px !important;
            height: 400px !important;
        }
    </style>
    '''
    st.markdown(custom_css, unsafe_allow_html=True)

    st.title("Custom Textarea Width and Height")
    # 设置唯一key参数
    user_input = st.text_area("Type your text here:", key="my_textarea")

    st.subheader("You typed:")
    st.write(user_input)

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:58:08