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

Struts2文本框样式问题:如何去除文本框背景色?

解决Struts2文本框背景色问题

你遇到的Struts2文本框样式问题,先看下对应的显示效果:
Struts2文本框样式

从你给出的代码和显示效果来看,这个背景色大概率来自Struts2默认主题的自带样式,或者是父元素样式的影响,下面给你几个可行的解决办法:

1. 切换Struts2主题为simple

Struts2默认使用xhtml主题,这个主题会给表单元素注入一套默认样式(包括背景色、边框等)。如果想完全摆脱默认样式,自己自定义,最简单的方式就是把主题改成simple:

  • 单个表单生效:直接在<s:form>标签里添加theme属性
<s:form action="Update_datos_XML" theme="simple">
  <s:hidden id="id" name="id_sesion" value="%{#session.Sesion_usuario.id_sesion}"/>
  <div style="font-family:Arial;color: #af2d2d; background-color: rgba(0,0,0,0.1)">
    <span>
      <s:textfield name="nom_pre" id="nombre" key="Nombre" placeholder="<%= pre.getNom_pre()%>"/>
    </span>
    <!-- 其他表单元素 -->
  </div>
</s:form>
  • 全局生效:在struts.xml里配置全局主题,这样所有表单都会应用这个设置
<constant name="struts.ui.theme" value="simple" />

2. 用CSS直接覆盖默认样式

如果不想切换主题,只想修改文本框的背景色,可以通过CSS精准覆盖:

方式A:给文本框加自定义类名

给<s:textfield>添加cssClass属性,然后写对应的CSS规则:

<s:textfield name="nom_pre" id="nombre" key="Nombre" placeholder="<%= pre.getNom_pre()%>" cssClass="plain-input"/>

对应的CSS:

.plain-input {
  background-color: transparent; /* 透明背景,会显示父元素底色 */
  /* 或者设置为白色:background-color: #ffffff; */
  border: 1px solid #ddd; /* 可选,保留边框避免样式太突兀 */
}

方式B:直接针对Struts2生成的元素

Struts2的xhtml主题会给文本框生成class="text"的属性,你可以直接写通用规则:

input[type="text"].text {
  background-color: #ffffff; /* 替换成你想要的颜色 */
}

3. 排查父元素样式影响

你代码里的外层<div>设置了background-color: rgba(0,0,0,0.1),如果文本框本身背景是透明的,就会透出父元素的灰色背景。如果这不是你想要的,给文本框设置明确的背景色就能解决,比如针对你的nombre文本框:

#nombre {
  background-color: #ffffff;
}

你可以根据自己的需求选合适的方法——如果想彻底自定义表单样式,切换simple主题最省心;如果只想调整个别元素的样式,用CSS覆盖更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:21