CSS/HTML5 эквивалентно iframe marginheight и marginwidth

Я делаю макет веб-сайта для компании, которая использует IDevAdManager для чередования объявлений на своем сайте. К сожалению, я не большой специалист в этой области, поэтому ничего не могу сказать по этому поводу. Что я могу сказать наверняка, так это то, что из-за характера генератора источник внутри генерируемых им фреймов не редактируется мной.

Вот моя проблема.

Я пытаюсь сделать их новый веб-сайт совместимым с HTML5, но столкнулся с интересной проблемой.

Когда дело доходит до добавления фреймов из ротатора объявлений, он генерирует все старые, устаревшие теги, использовавшиеся в предыдущих реализациях HTML.

Очевидно, что большую часть этого можно удалить с помощью CSS. Однако все, кроме атрибутов marginheight и marginwidth.

Вот где я достиг своей проблемы. Кажется, не существует эквивалента CSS ни для высоты поля, ни для ширины поля, и нет способа получить доступ к источнику в фреймах. Однако их отсутствие не позволяет правильно выровнять внутреннее содержимое.

Я надеюсь найти решение, которое подходит как для HTML5, так и для решения моей проблемы.

Существует ли такой вариант в настоящее время? Или мне придется использовать устаревшие теги, пока не будет разработано решение?


person cbright6062    schedule 15.02.2012    source источник


Ответы (3)


На самом деле это правильный вопрос. К сожалению, оказывается, что marginheight, marginwidth и frameborder являются свойствами самого элемента iframe, а не свойством стиля элемента, см. http://www.w3schools.com/jsref/prop_frame_marginheight.asp

Так, например, вы можете сделать это в JavaScript: -

document.getElementById("SomeIframe").marginheight = "0";

но ты НЕ МОЖЕШЬ этого сделать

document.getElementById("SomeIframe").style.marginheight = "0";

и установка поля не имеет НИКАКОГО ЭФФЕКТА (т.е. вы все равно получите поле по умолчанию в элементе iframe): -

document.getElementById("SomeIframe").style.margin = "0";

Таким образом, ответ на вопрос cbright6062 заключается в том, что невозможно установить свойства marginheight, marginwidth и frameborder iframe в таблице стилей.

person tatty    schedule 01.12.2012
comment
При ссылке на w3schhols вы должны были прочитать это: --- Атрибут ‹iframe› marginwidth не поддерживается в HTML5. Вместо этого используйте CSS. --- Но то, что вы делаете с помощью JS, устанавливает атрибут marginwidth после этого для iframe, и поэтому HTML5 недействителен, как просил автор... - person René Baudisch; 26.06.2019

Чтобы быть действительным HTML5, документ внутри iframe должен получить правильный стиль, а не сам iframe. Я не знаю, что такое adManager, но это зависит от того, как создается iframe.

Если он динамический и того же происхождения, вы можете ввести его с помощью

document.getElementById("SomeIframe").contentDocument;

и установите для поля по стилю значение 0.

let myFrameBody = document.getElementById("SomeIframe").contentDocument.querySelector('body');
myFrameBody.style.margin = 0;

Если это не тот же источник, владелец документа должен установить это самостоятельно, и это никогда не будет плохой идеей, а также в отношении HTML4.1 это будет считаться действительным.

person René Baudisch    schedule 26.06.2019

Немного поздно для вечеринки, но использование css для установки заполнения iframe должно помочь.

person Stuart    schedule 17.04.2012