#javascript #css
#javascript #css
Вопрос:
Это хорошая практика CSS?
<style id="magic">
— чтобы я мог, если захочу, добавить свойства CSS с помощью JavaScript (имеется в виду редактирование <style>
элемента из JavaScript), чтобы влиять на элементы в документе, не заставляя скрипт проходить через каждый из соответствующих элементов.
<script style="display: block; white-space: pre;">
Чтобы я мог делиться сценариями внутри сообщения в блоге вместе с демонстрацией, не заставляя меня писать версию для сообщения в блоге и другую для демонстрации.
(Это просто гипотетически)
Комментарии:
1. У меня все хорошо. Можете ли вы отредактировать свой вопрос, чтобы сделать его более понятным? Это не особенно очевидно, что вы хотите сделать, а также является довольно широким.
2. Можете ли вы привести конкретный пример того, что, как вам интересно, является хорошей практикой?
3. Попробуйте это на этой странице: javascript:$(‘script’).css (‘display’, ‘block’);
4. Хорошо, я наконец понял вопрос … и я бы сказал, что это определенно не рекомендуемая практика. Я бы предложил создать
<div>
и скопировать innerHTML<script>
, почему? вероятно, просто из соображений безопасности, хотя это не совсем зло или что-то в этом роде.5. Я бы не сказал, что это хорошо или плохо, это часть w3c-DOM, так что просто делайте это, если хотите.
Ответ №1:
В вашем первом случае (изменение определений стилей в <style>
элементе с помощью Javascript) вы можете столкнуться с парой дорожных неровностей:
- Разные браузеры справляются с этим по-разному. В IE (по крайней мере, в более старых версиях) вам придется изменить
.styleSheet.cssText
свойство элемента style, а в других браузерах вам просто нужно добавить к нему текстовые узлы в качестве дочерних элементов (обратите внимание, возможно, что .innerHTML работает универсально; я просто никогда этим не пользовался). - Добавление новых правил стиля проще, чем замена существующих, особенно когда вы обрабатываете правила как просто текст.
- Браузеры (могут) иметь ограничение на количество правил стиля на странице. Хотя это будет исчисляться тысячами, вы можете достичь ограничений, если настроите правила стиля в цикле (без какой-либо очистки старых).
В остальном, действуйте. Вероятно, это хорошая альтернатива настройке встроенных стилей.
В вашем втором случае, извините, но это просто невозможно (или, если это так, это определенно не рекомендуется). Вы не можете отобразить текстовое содержимое <script>
элемента в виде текста с помощью CSS, а также выполнить его как Javascript. Для начала анализаторы HTML переключаются в другой режим, когда они анализируют содержимое <script>
элемента.
Предпочтительный способ показа исходного кода Javascript вместе с демонстрацией — это иметь отдельную версию кода, удобную для отображения (например, в <pre>
элементе).