为什么用户代理样式表覆盖了我的CSS

时间:2017-03-02 00:30:46

标签: xpages

[见下面的解决方案]

我无法控制Xpage应用程序中按钮的样式,我在其中扩展了Bootstrap主题。

我想要一个透明按钮。我得到的就是这个。

enter image description here

在Chrome开发工具中查看

Examining in Chrome Dev tools reveals

由于某种原因,类“btn btn-default”已被添加到类中。但是,当我试图追踪灰色的来源时,真正的问题浮出水面:

enter image description here

用户代理???

发生了什么????

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xp:button
        value="Example"
        id="btn"
        styleClass="btn btn-secondary">
    </xp:button>
    <button class="btn btn-secondary">Example</button>
</xp:view>

解决方案:

所有答案都很好,帮助我找到了最终解决方案。

首先,我确实使用了disableTheme属性来阻止Xpages自动添加btn btn-default类。

我不知道二级只是bootstrap 4。我正在使用3作为Knut推测,我还不想冒险进入4。

这是我的按钮的CSS:

.btn.btn-bryan {padding: 0px; margin: 0px;color: #3379b7;background-color: transparent;text-align: left;}

按钮代码:

<xp:button
    value="#{entry2.mnuItmNme}"
    id="button2"
    type="button"
    styleClass="btn btn-bryan btn-block"
    disableTheme="true">
     <xp:span
       style="margin-right:10px;color:#337ab7"
       styleClass="glyphicon glyphicon-#{entry2.mnuIcon}">
     </xp:span>
     <xp:eventHandler
        event="onclick"
        submit="true"
        refreshMode="partial"
        refreshId="dynamicCustomControl"
        onComplete="XSP.partialRefreshGet('#       {id:dynamicCustomControl}')">
        <xp:this.action><![CDATA[#{javascript:var x = entry2.mnuItmTrg;
        viewScope.controlName = x;
        getComponent('dynamicCustomControl').show(null)}]]>               </xp:this.action>
</xp:eventHandler>
</xp:button>

3 个答案:

答案 0 :(得分:2)

当您使用styleClass参数自己设置css类时,如果您通过向按钮添加disableTheme =“true”来阻止主题向您的按钮添加类可能会有所帮助。

答案 1 :(得分:2)

引导程序3中没有类btn-secondary

你可能会扩展主题&#34; Bootstrap3&#34;或&#34; Bootstrap3_flat&#34;。
切换到主题&#34; Bootstrap4 &#34;相反,它会工作:

enter image description here

答案 2 :(得分:1)

Bootstrap 3主题使用&#34; concat&#34;用于在XPage控件中设置styleClass的模式。你可以在下面看到它。

<!-- XPages Buttons -->
    <control>
        <name>Button</name>
        <property mode="concat">
            <name>styleClass</name>
            <value>btn btn-default</value>
        </property>
    </control>

这意味着它总是会将 btn btn-default 添加到Button的styleClass属性中。要解决此问题,您可以创建自己的ThemeId并在按钮中进行设置。

   <control>
        <name>Button1</name>
        <property mode="override">
            <name>styleClass</name>
            <value>myButton</value>
        </property>
    </control>

enter image description here