如何减小Streamlit中st.markdown项目符号列表的行间距?
解决Streamlit多次调用st.markdown生成列表项行间距过大的问题
方法一:合并成单个st.markdown调用(推荐)
每次单独调用st.markdown('- Item X')会让每个列表项成为独立的渲染块,块之间自带默认外边距,导致间距过大。最直接的解决方式是把所有列表项放在同一个st.markdown里:
st.markdown('- Item 1\n- Item 2\n- Item 3')
如果是动态生成的列表项,可以先把内容拼接成字符串再传入:
items = ['Item 1', 'Item 2', 'Item 3'] list_str = '\n'.join([f'- {item}' for item in items]) st.markdown(list_str)
这样Streamlit会渲染成统一的无序列表,行间距是原生列表的正常样式。
方法二:用自定义CSS强制缩小间距(适合必须分开调用的场景)
如果因业务逻辑必须分开调用st.markdown,可以通过注入自定义CSS调整间距:
# 先注入CSS样式 st.markdown(""" <style> /* 去除每个markdown块底部的默认外边距 */ .stMarkdown { margin-bottom: 0.1rem !important; } /* 微调列表项自身的上下间距 */ .stMarkdown li { margin-top: 0; margin-bottom: 0.1rem; } </style> """, unsafe_allow_html=True) # 再分别生成列表项 st.markdown('- Item 1') st.markdown('- Item 2') st.markdown('- Item 3')
你可以修改margin-bottom的数值,按需调整到合适的间距大小。
内容的提问来源于stack exchange,提问作者apprunner2186
相关产品推荐
相关产品推荐

