覆盖jQuery移动按钮样式

时间:2013-09-09 13:41:59

标签: jquery html css jquery-mobile

我使用jQuery mobile创建项目,并且在添加自定义按钮时遇到问题。 例如http://jsfiddle.net/W4LWz/2/

我尝试在任何地方添加我的自定义按钮,但我的CSS风格ingore和我看到标准的jQ移动按钮。

我的css文件包括:

.btn {
  display: inline-block;
  padding: 4px 12px;
  margin-bottom: 0;
  font-size: 14px;
  line-height: 20px;
  color: #333333;
  text-align: center;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
  vertical-align: middle;
  cursor: pointer;
  background-color: #f5f5f5;
  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
  background-repeat: repeat-x;
  border: 1px solid #cccccc;
  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  border-bottom-color: #b3b3b3;
  -webkit-border-radius: 4px;
     -moz-border-radius: 4px;
          border-radius: 4px;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}

.btn-primary {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #beddef;
  background-image: -moz-linear-gradient(top, #beddef, #a3c4d6);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#beddef), to(#a3c4d6));
  background-image: -webkit-linear-gradient(top, #beddef, #a3c4d6);
  background-image: -o-linear-gradient(top, #beddef, #a3c4d6);
  background-image: linear-gradient(to bottom, #beddef, #a3c4d6);
  background-repeat: repeat-x;
  border-color: #a3c4d6 #a3c4d6 #002a80;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
}

并将此类添加到我的按钮:

<input class="btn btn-primary" type="button" name="Click me" value="Button" />  

如果我将此课程添加到其他语言(,

),则会更加努力。

我如何覆盖任何buttoms的样式?

我可以在jquery.mobile-1.3.2.css之后加载我的css文件吗? 最后一个问题:为什么我的css样式忽略了覆盖jquery移动类?如果我添加!对我的CSS中的所有属性都很重要。

1 个答案:

答案 0 :(得分:2)

在自定义jQuery Mobile按钮之前,您需要了解jQuery Mobile的工作原理。 当页面处于活动状态时,您的输入按钮不再存在,它们将替换为jQuery Mobile制作的自定义HTML结构。

它也称为标记增强过程。

这是jQuery Mobile增强它后按钮的外观:

<div data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-icon="null" data-iconpos="null" data-theme="c" data-inline="true" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-inline ui-btn-up-c" aria-disabled="false">
    <span class="ui-btn-inner ui-btn-corner-all">
        <span class="ui-btn-text">Button</span>
    </span>
    <input type="button" value="Button" name="Click me" data-inline="true" class="btn btn-primary ui-btn-hidden" aria-disabled="false"/>
</div>

新按钮标记不会继承旧按钮标记。因此,您需要更改新按钮 CSS

更改新按钮 CSS 时,您需要使用 !important ,否则您将无法覆盖原始 { {1}} 没有它。

以下是一个简短的示例:http://jsfiddle.net/Gajotres/W4LWz/3/

CSS:

CSS