Инструменты для выборочного копирования HTML + CSS+JS с существующих сайтов [закрыто]
Как и большинство веб-разработчиков, мне иногда нравится смотреть на источник веб-сайтов, чтобы увидеть, как построена их разметка. Такие инструменты, как Firebug и Chrome Developer Tools, позволяют легко проверять код, но если я хочу скопировать изолированный раздел и поиграть с ним локально, было бы больно копировать все отдельные элементы и связанные с ними css. И, вероятно, столько же работы, чтобы сохранить весь исходный код и вырезать несвязанный код.
было бы здорово, если бы я мог щелкните правой кнопкой мыши узел в Firebug и выберите опцию "Сохранить HTML+CSS для этого узла". Существует ли такой инструмент? Можно ли расширить Firebug или инструменты разработчика Chrome, чтобы добавить эту функцию?
16 ответов:
SnappySnippet
я, наконец, нашел время, чтобы создать этот инструмент. Вы можете установить SnappySnippet из интернет-магазина Chrome. Это позволяет легко извлекать HTML + CSS из указанного (последнего проверенного) узла DOM. Кроме того, вы можете отправить свой код прямо в CodePen или JSFiddle. Наслаждайтесь!
другие особенности
- очищает HTML (удаление ненужных атрибутов, исправление отступ)
- оптимизирует CSS, чтобы сделать его читаемым
- полностью настраивается (все фильтры могут быть отключены)
- работает с
::before
и::after
псевдо-элементами- приятный пользовательский интерфейс, благодаря Bootstrap & Flat-UI проекты
код
SnappySnippet является открытым исходным кодом, и вы можете найти код на GitHub.
реализация
С тех пор Я узнал довольно много, делая это, я решил поделиться некоторыми из проблем, которые я испытал, и мои решения для них, может быть, кто-то найдет это интересным.
первая попытка-getMatchedCSSRules ()
сначала я попытался получить исходные правила CSS (исходящие из файлов CSS на веб-сайте). Довольно удивительно, это очень просто благодаря
window.getMatchedCSSRules()
, однако, это не сработало хорошо. Проблема в том, что мы брали только часть HTML и CSS селекторы, которые совпадали в контексте всего документа, которые больше не совпадали в контексте фрагмента HTML. Поскольку разбор и изменение селекторов не казались хорошей идеей, я отказался от этой попытки.вторая попытка - getComputedStyle()
тогда я начал с того, что @ CollectiveCognition предложил -
getComputedStyle()
. Однако я действительно хотел отделить CSS - форму HTML вместо того, чтобы вставлять все стили.Проблема 1 - отделение CSS от HTML
решение здесь было не очень красивым, но довольно простым. Я назначил идентификаторы всем узлам в выбранном поддереве и использовал этот идентификатор для создания соответствующих правил CSS.
Проблема 2 - Удаление свойств со значениями по умолчанию
назначение идентификаторов узлам сработало хорошо, однако я обнаружил, что каждое из моих правил CSS имеет ~300 свойств, что делает весь CSS нечитаемым.
Оказывается, чтоgetComputedStyle()
возвращает все возможные свойства и значения CSS, рассчитанные для данного элемента. Некоторые из них были пустыми, некоторые имели значения браузера по умолчанию. Чтобы удалить значения по умолчанию, я должен был сначала получить их из браузера (и каждый тег имеет разные значения по умолчанию). Решение состояло в том, чтобы сравнить стили элемента, поступающего с веб-сайта, с тем же элементом, вставленным в пустой<iframe>
. Логика здесь была в том, что нет таблиц стилей в пустом<iframe>
, поэтому каждый элемент, который я добавил, имел только значение по умолчанию стили браузера. Таким образом, я смог избавиться от большинства свойств, которые были незначительными.Задача 3-сохранение только стенографических свойств
следующее, что я заметил, было то, что свойства, имеющие стенографический эквивалент, были излишне распечатаны (например, было
border: solid black 1px
а тоborder-color: black;
,border-width: 1px
itd.).
Чтобы решить эту проблему, я просто создал список свойств, которые имеют сокращенные эквиваленты и отфильтровал их из результаты.Проблема 4-удаление префиксных свойств
количество свойств в каждом правиле было значительно ниже после предыдущей операции, но я обнаружил, что у меня было много
-webkit-
префиксные свойства, о которых я никогда не слышал (-webkit-app-region
?-webkit-text-emphasis-position
?).
Мне было интересно, если я должен сохранить любой из этих свойств, потому что некоторые из них казались полезными (-webkit-transform-origin
,-webkit-perspective-origin
etc.). Я не понял, как это проверить, хотя, и так как я знал что большую часть времени эти свойства просто мусор, я решил удалить их все.Задача 5-объединение одинаковых правил CSS
следующая проблема, которую я заметил, заключалась в том, что одни и те же правила CSS повторяются снова и снова (например, для каждого
<li>
С точно такими же стилями было такое же правило в созданном выводе CSS).
Это был просто вопрос сравнения правил друг с другом и объединения их, которые имели точно такой же набор свойств и значений. Как результат, а не#LI_1{...}, #LI_2{...}
я получил#LI_1, #LI_2 {...}
.проблема 6-очистка и исправление отступа HTML
так как я был доволен результатом, я перешел на HTML. Это выглядело как беспорядок, потому что
outerHTML
свойство сохраняет его в формате точно так же, как он был возвращен с сервера.
Единственное, что HTML код взят изouterHTML
необходимо было простое переформатирование кода. Поскольку это что-то доступное в каждой IDE, я был уверен, что есть JavaScript библиотеку, которая делает именно это. И получается, что я был прав (jquery-чистый). Более того, у меня есть лишние атрибуты удаления extra (style
,data-ng-repeat
etc.).проблема 7-фильтры ломают CSS
поскольку есть вероятность, что в некоторых случаях фильтры, упомянутые выше, могут сломать CSS в фрагменте, я сделал все из них необязательными. Вы можете отключить их от настройки.
браузеры Webkit (не уверены в FireBug) позволяют легко копировать HTML элемента, так что это одна часть процесса в сторону.
запуск этого (в консоли javascript) перед копированием HTML для элемента переместит все вычисленные стили для данного родительского элемента, а также все дочерние элементы во встроенный атрибут стиля, который затем будет доступен как часть HTML.
var el = document.querySelector("#someid"); var els = el.getElementsByTagName("*"); for(var i = -1, l = els.length; ++i < l;){ els[i].setAttribute("style", window.getComputedStyle(els[i]).cssText); }
Это полный Хак, и вы будете иметь много "мусорные" атрибуты css, чтобы пробраться, но должны, по крайней мере, начать работу.
Я изначально задал этот вопрос, я искал решение Chrome (или FireFox), но я наткнулся на эту функцию в инструментах разработчика Internet Explorer. В значительной степени то, что я ищу (за исключением javascript)
результат:
Я создал этот инструмент несколько лет назад с той же целью:
http://www.betterprogramming.com/htmlclipper.htmlвы можете использовать и улучшать его.
Это можно сделать с помощью плагина Firebug под названием альбом
вы можете проверить опцию Javascript в настройках
Edit:
этой также может помочь
Firequark является расширением Firebug чтобы помочь процессу HTML-экрана Выскабливание. Firequark автоматически извлекает селектор css для одного или несколько узлов html с веб-страницы использование Firebug (веб-разработка плагин для Firefox). CSS-селекторы сгенерированный могут быть использованы скребки экрана html как Скрапи к извлекать информацию. Firequark-это построенный, чтобы развязать силу css селектор для использования html экрана выскабливание.
divclip обновленная версия Флорентина Сардана htmlclipper
С современными улучшениями: ES5, HTML5, scoped CSS...
вы можете программно извлечь стилизованный div с помощью:
var html = require("divclip").bySel(".article-body"); console.log(html);
наслаждайтесь.
плагины не нужны. Это можно сделать очень просто с помощью собственных инструментов разработчика Internet Explorer 11 всего одним щелчком мыши, очень чистым. Просто прямо на элементе и проверьте этот элемент, а затем щелкните правой кнопкой мыши на каком-нибудь блоке и выберите "Копировать элемент со стилями". Вы можете увидеть на рисунке ниже.
Он предоставляет код CSS очень чистый, как
.menu { margin: 0; } .menu li { list-style: none; }
недавно я создал расширение chrome "eXtract Snippet" для копирования проверяемого элемента, html и только соответствующих css и медиа-запросов со страницы. Обратите внимание, что это даст вам фактический соответствующий CSS
https://chrome.google.com/webstore/detail/extract-snippet/bfcjfegkgdoomgmofhcidoiampnpbdao?hl=en
инструмент с одним решением для этого я не знаю, но вы можете использовать Firebug и расширение для веб-разработчиков в то же время.
использовать Firebug, чтобы скопировать html-раздел, который вам нужен (инспектировать элемент) и веб-разработчика, чтобы увидеть, что CSS-это связанное с элементом (вызов веб-разработчик "представления информации" - он работает как Firebug в "Проинспектировать элемент", но вместо того, чтобы показывать HTML-разметка показывает, связанные с УСБ, что разметки).
Это не ровно что вы хотите (один клик для всего), но это довольно близко, и по крайней мере интуитивно.
http://clipboard.com делает это и довольно хорошо. Хотя ваше ожидание скопированной версии точно так же, как в оригинале, чтобы вы могли играть и учиться с ней, может быть нереалистичным.
Мне также нужна эта функция на Firebug! До тех пор, другой подход заключается в использовании этой онлайн-сервис для удаления классов и преобразования css в встроенные стили.
просто скопируйте нужную часть с веб-страницы и вставьте ее в Редактор wysiwyg. Проверьте источник html, нажав на кнопку "источник" на панели инструментов редактора.
Я нашел это самый простой способ, когда я работал на сайте Drupal. Я использую WYSIWYG CKeditor.
jQuery.fn.extend({ getStyles: function() { var rulesUsed = []; var sheets = document.styleSheets; for (var c = 0; c < sheets.length; c++) { var rules = sheets[c].rules || sheets[c].cssRules; for (var r = 0; r < rules.length; r++) { var selectorText = rules[r].selectorText.toLowerCase().replace(":hover",""); if (this.is(selectorText) || this.find(selectorText).length > 0) { rulesUsed.push(rules[r]); } } } var style = rulesUsed.map(function(cssRule) { return cssRule.selectorText.toLowerCase() + ' { ' + cssRule.style.cssText.toLowerCase() + ' }'; }).join("\n"); return style; } });
использование:
$("#login_wrapper").getStyles()
я адаптировала топ-проголосовали ответ как букмарклет dragabble.
просто посетите на этой странице и перетащите кнопку" Run jQuery Code " на панель закладок.
есть плагин firefox сохраняет всю страницу в HTML, CSS и т. д.. но я не видел ни одного, который делает частичное спасение.
Я помню IE 5.5 было то, что вы искали, хотя;)
Я прошел через все инструменты, упомянутые в качестве ответа здесь. Но они дают повторяющиеся, грязные HTML CSS с красивым лицом, на которое вы смотрели. Они не дают вам JS.
Что я делаю:
- сначала я фильтрую объявления, которые не требуются на странице
- затем сохраните полную веб-страницу вместе со связыванием ресурсов.
- удалите ненужные HTML, CSS и JS
- продолжайте осторожно отсоединять ресурсы один за другим.