2013-03-27 6 views
3

Я вращаю свои колеса на том, что, я уверен, является простой ошибкой. неПереопределение полей мобильных кнопок jQuery

Рассмотрим следующую jqm (версия 1.3) вид (в Haml)

#main-header{'data-role' => 'header'} 

#main-content{'data-role' => 'content'} #main-buttons 
    %input#a{'type' => 'button', 'name' => 'a', 'value' => 'A'} 
    %input#b{'type' => 'button', 'name' => 'b', 'value' => 'B'} 

таблица стилей:

#main-buttons { 
    margin: 30px; 
    margin-top: 160px; 
} 

#a { 
    margin-bottom: 60px !important; 
} 

Здесь стиль маржинальной дна Обращаюсь к кнопке "а" не имеет влияние. Моя цель - добавить некоторое вертикальное пространство между двумя кнопками. Что мне не хватает?

Визуализированное UI выглядит следующим образом:

rendered ui

+1

Попробуйте изменить стиль '.ui-btn'. – Omar

+1

Это помогло.! Можете ли вы добавить это как ответ, чтобы я мог его пометить. Я даже не понимаю, как стиль, применяемый к определенному идентификатору, не переопределяет то, что указано в классе. – serverman

+1

Это потому, что .ui-btn является родителем вашей кнопки ввода. Кроме того, каждое переопределение .ui-btn переопределит все приложение jQM. – Gajotres

ответ

7

Вот мой скромный ответ. Вышеупомянутые ответы больше объясняют вашу проблему.

Чтобы изменить стиль кнопки, добавьте свой стиль в .ui-btn.

Я рад, что я был помочь :)

1

Сначала убедитесь, что ссылка на таблицу стилей в списке после ссылки на мобильные таблицы стилей JQuery в головной части вашей HTML страницы. Если конфликты двух стилей, браузер будет использовать таблицу стилей, которая будет второй (например, css, которая указана ниже).

Кроме того, вы добавляете свой край поля к ID #a. Хотя это совершенно верно, просмотрите остальную часть css, чтобы увидеть, есть ли маржа, применяемая к INPUT, потому что стиль, применяемый к тегу, превосходит стили, применяемые к идентификатору.

+0

Спасибо. Я всегда думал, что идентификатор имеет наивысший приоритет с точки зрения приложения css. – serverman

2

Решение 1

Это кнопка, созданная с помощью тега.

Вот рабочий пример: http://jsfiddle.net/Gajotres/9bPA2/

<div data-role="content"> 
    <a data-role="button" id="button1">Button 1</a> 
    <a data-role="button" id="button2">Button 2</a> 
</div> 

#button1 { 
    margin-bottom: 50px; 
} 

Решение 2

Это кнопка, которую вы используете. К сожалению, вы можете использовать CSS, чтобы исправить это, это должно быть сделано с помощью JQuery, как это:

HTML:

<input type="button" value="Button 3" id="button3"> 
<input type="button" value="Button 4" id="button4"> 

Javascript:

$('#button3').parent().css('margin-top','50px'); 
$('#button4').parent().css('margin-top','50px'); 

Живой пример является частью верхней jsFiddle пример, так что взгляните.

+0

Не совсем, кнопка id действительно установлена ​​на «a». – serverman

+0

Взгляните на решение 2, это исправит вашу проблему. В основном вы не можете использовать идентификатор на кнопке ввода, потому что он обернут пользовательской кнопкой jQuery. Поэтому единственным решением является jQuery. – Gajotres

+0

Привет, Гаджот, спасибо - я не хочу использовать javascript для установки стиля для такого простого сценария. Я должен использовать простой CSS для этого? Похоже, что комментарий Омара выше работает (изменить стиль .ui-btn) – serverman

1

Возможно также набор Div-элементы вокруг каждого кнопочного элемента. Затем устанавливая нижние и верхние поля для этих элементов div, кнопки расположены по вертикали, поскольку элементы div являются потомками jQuery Mobile .ui-btn: s в структуре DOM.

Параметры этого поля не заданы для всего приложения, но только для этих кнопок.

HTML/CSS пример:

<div class="ButtonDiv"> 
    <a data-role="button">Button 1</a> 
</div> 

<div class="ButtonDiv"> 
    <a data-role="button">Button 2</a> 
</div> 

<div class="ButtonDiv"> 
    <a data-role="button">Button 3</a> 
</div> 


.ButtonDiv { 
margin-top: 8px; 
margin-bottom: 8px; 
} 
Смежные вопросы