2013-05-02 1 views
1

Я работал над страницей, и я хотел бы программно установить свойства CSS на слайд-шоу на обложке в зависимости от того, сколько экранной недвижимости есть. Если страница меньше одного номера границы, я не хочу активировать слайд-шоу. Если страница имеет ширину больше, чем этот номер границы, но меньше, чем другой порог, я хочу, чтобы слайд-шоу уменьшалось и уменьшалось больше для меньших размеров. Наконец, если он больше, чем оба, я хотел бы горизонтально центрировать слайд-шоу в его логическом контейнере.Как я могу получить jQuery.css(), чтобы превзойти таблицу стилей?

Источник в http://JonathansCorner.com/blacksmiths-forge/experimental.html имеет:

<iframe id="slideshow" border="0" frameborder="0" frameborder="no" 
style="display: none;" width="318" height="424" src="/book_covers.cgi?width=318" /> 

CSS-на http://JonathansCorner.com/css/combined.css имеет:

#slideshow 
    { 
    height: 424px; 
    position: fixed; 
    top: 240px; 
    right: 190px; 
    width: 318px; 
    } 

И на JavaScript, на http://JonathansCorner.com/js/combined.js:

if (jQuery(window).width() > 1200) 
    { 
    if (jQuery(window).width() > 1300) 
     { 
     var width = min(jQuery(window).width() - 1200, 318); 
     document.getElementById('slideshow').src = "/book_covers.cgi?width=" + width; 
     document.getElementById('slideshow').width = width + 'px'; 
     document.getElementById('slideshow').width = width; 
     jQuery('#slideshow').css('right', jQuery(window).width() - 1200 - 318); 
     jQuery('#slideshow').css('display', 'block'); 
     } 
    } 

Ментальная модель я вошел с тем, что jQuery.css() будет козырем, а в перм которые я пробовал до сих пор, я никогда не знал, что с jQuery.css произошли изменения.

Я также пробовал использовать, например, jQuery('#slideshow').css('display', 'block !important').

Можно ли каким-либо образом использовать jQuery (или только JavaScript) для установки свойств таким образом, чтобы они были сохранены?

(Что случилось с моим начальным пониманием, и что есть истина о том, что может и не может быть сделана с программной настройкой стилей узлов DOM и свойств?)

+6

jQuery '.css()' метод устанавливает стили inline на элементе. встроенные стили имеют более высокий приоритет, чем что-либо в таблице стилей. Поэтому '.css()' должен пересказывать ваши таблицы стилей. Очевидный вывод здесь заключается в том, что javascript-код фактически не работает. Вы пытались использовать 'console.log()' или точку останова в отладчике Dev Tools для отслеживания кода при его запуске? – Spudley

+0

@Spudley true, за исключением случая, когда правило стиля имеет '! Important' (что является хорошим аргументом, чтобы не использовать его) – steveax

ответ

5

Вы не закрыли свой IFrame тег , mixed.js никогда не загружается. iframe не являются самозакрывающимися тегами, для них требуется открытие и закрывающий тег.

<iframe></iframe> 
+0

Oof! Спасибо. – JonathanHayward

+1

Im не уверен, что «singleton» - правильное слово. Вы имеете в виду «самозакрывающиеся»? – Ian

+1

@Ian - спасибо, отредактирован. – Adam