Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Монстрикс — это динамичная стратегия, где ты собираешь, улучшаешь и сражаешься с могучими монстрами.

Монстрикс

Мидкорные, Стратегии, Мультиплеер

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
7
IceLifeSun
IceLifeSun
3 дня назад

HTML<!анекдот...-->⁠⁠

HTML&lt;!анекдот...--&gt;
HTML Код Программирование Анекдот IT юмор IT Фотография
6
13
Skyscrew
Skyscrew
25 дней назад
Лига Сисадминов

Для чего нужны разные языки программирования⁠⁠

Для чего нужны разные языки программирования Картинка с текстом, IT юмор, Языки программирования, HTML, CSS, Javascript, React, C++, Swift, Ruby, PHP, Jquery, Python, Typescript, Java
Показать полностью 1
Картинка с текстом IT юмор Языки программирования HTML CSS Javascript React C++ Swift Ruby PHP Jquery Python Typescript Java
44
1
Вопрос из ленты «Эксперты»
ilyxazz
ilyxazz
1 месяц назад
Спроси Пикабу

Можно ли HTML шаблон загрузить на WordPress и как это сделать?⁠⁠

Привет уважаемые. Вопрос, собственно, в названии.
Подробности такие: нашел на просторах устроивший меня шаблон (многостраничник), не под WordPress. Сейчас он локально на компе и я занимаюсь его правкой под свои нужды (тексты, страницы, картинки и т.д.), хостинг у меня куплен на нем установлен WordPress,.
Поскольку работа над шаблоном рано или поздно закончится, я хотел бы узнать, можно ли будет затем готовый шаблон загрузить на хостинг, что бы в дальнейшем, можно было добавлять контент не открывая index.html, а делать это более удобно через CMS. WordPress конечно не окончательный вариант, если, например, есть CMS более удобная для подобного переноса, то можно и на неё, мне просто понимать- можно так сделать или нет и есть ли максимально простой вариант подобного переноса.
Всем заранее спасибо за подсказки.

[моё] Вопрос Верстка Wordpress Хостинг Сайт Создание сайта HTML Без рейтинга Спроси Пикабу Текст
13
12
Skyscrew
Skyscrew
1 месяц назад
Лига Сисадминов

Забавная дилемма⁠⁠

Забавная дилемма Картинка с текстом, Мемы, IT юмор, Языки программирования, HTML, Логотип, Программист

Ирония заключается в том, что этот символ является фундаментальным элементом синтаксиса HTML, который, как утверждают программисты, не является языком программирования. 

#comment_361465366 - в дополнение

Картинка с текстом Мемы IT юмор Языки программирования HTML Логотип Программист
114
9
hypo69
hypo69
1 месяц назад
Лига программистов
Серия Шпаргалки

Shadow DOM - DOM внутри DOM⁠⁠

Дисклеймер. На пикабу до сих пор не завезли редактор кода, поэтому картинки. Кому на нравятся картинки - при желании может почитать статью на GitHub


DOM — это программный интерфейс (API) для кода страницы, который представляет страницу как древовидную структуру объектов.

Каждый HTML-элемент (например, <p>, <div>, <img>), каждый атрибут и каждый фрагмент текста является отдельным «узлом» (node) в этом дереве. С JavaScript, мы можем обращаться к этим узлам, чтобы динамически изменять страницу: менять текст, добавлять стили, создавать новые элементы или удалять существующие. По сути, DOM — это «живая» модель документа, с которой взаимодействует код.

Но у этой открытости есть и обратная сторона. Когда мы создаем сложный, многократно используемый компонент (например, кастомный видеоплеер или виджет календаря), его внутренняя структура и стили становятся уязвимыми. Стили CSS с основной страницы могут случайно «протечь» внутрь компонента и сломать его внешний вид. Аналогично, JavaScript-код страницы может непреднамеренно изменить внутренние элементы компонента, нарушив его логику.

Для решения этой проблемы и существует Shadow DOM (теневой DOM).

По своей сути, Shadow DOM — это «DOM внутри DOM». Это скрытое дерево элементов, которое прикрепляется к обычному элементу на странице (называемому «хостом»), но при этом оно изолировано от основного DOM. Оно позволяет разработчику создать герметичную границу вокруг внутренней структуры компонента, защищая его от внешнего мира.

Теневой DOM позволяет прикреплять скрытые DOM-деревья к элементам в обычном DOM-дереве. Это теневое дерево начинается с теневого корня (shadow root), под который можно прикреплять любые элементы так же, как и в обычном DOM.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

https://developer.mozilla.org/

Существует несколько терминов, связанных с теневым DOM, которые следует знать:

  • Теневой хост (Shadow host): Обычный узел DOM, к которому прикреплен теневой DOM.

  • Теневое дерево (Shadow tree): DOM-дерево внутри теневого DOM.

  • Теневая граница (Shadow boundary): Место, где заканчивается теневой DOM и начинается обычный DOM.

  • Теневой корень (Shadow root): Корневой узел теневого дерева.

Вы можете воздействовать на узлы в теневом DOM точно так же, как и на обычные узлы. Разница в том, что никакой код внутри теневого DOM не может повлиять на что-либо за его пределами, что обеспечивает надёжную инкапсуляцию.

До того, как теневой DOM стал доступен веб-разработчикам, браузеры уже использовали его для инкапсуляции внутренней структуры стандартных элементов. Например, элемент <video> с элементами управления. Всё, что вы видите в DOM, — это тег <video>, но он содержит ряд кнопок и других элементов управления внутри своего теневого DOM.

Создание теневого DOM

Создавать теневой DOM можно двумя способами: императивно с помощью JavaScript или декларативно прямо в HTML.

Императивно с помощью JavaScript

Этот способ отлично подходит для приложений, рендерящихся на стороне клиента. Мы выбираем элемент-хост и вызываем на нём метод attachShadow().

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom
Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Результат на странице будет выглядеть так:

Я нахожусь в теневом DOM Я не в теневом DOM

Декларативно с помощью HTML

Для приложений, где важен рендеринг на стороне сервера, можно определить теневой DOM декларативно, используя элемент <template> с атрибутом shadowrootmode.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Когда браузер обработает этот код, он автоматически создаст теневой корень для <div> и поместит в него содержимое тега <template>. Сам тег <template> при этом исчезнет из основного DOM-дерева.

Инкапсуляция: защита от JavaScript и CSS

Главное преимущество Shadow DOM — это изоляция. Давайте посмотрим, как она работает.

Инкапсуляция от JavaScript

Добавим кнопку, которая будет пытаться изменить все элементы <span> на странице.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

При нажатии на кнопку текст изменится только у <span>, который находится в основном документе. Элемент внутри теневого DOM останется нетронутым, потому что document.querySelectorAll() не может "заглянуть" за теневую границу.

Доступ к теневому DOM: свойство shadowRoot и работа с вложенностью

Когда мы вызываем host.attachShadow({ mode: "open" }), мы создаём теневой DOM в "открытом" режиме. Это означает, что мы можем получить доступ к его содержимому извне через свойство host.shadowRoot.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Если же указать mode: "closed", свойство host.shadowRoot вернёт null, и доступ к теневому дереву извне будет закрыт. Это не строгий механизм безопасности, а скорее соглашение для разработчиков о том, что внутренности компонента трогать не следует.

Работа с вложенными теневыми деревьями

В сложных компонентных архитектурах один пользовательский элемент может содержать внутри себя другие пользовательские элементы, каждый из которых имеет свой собственный Shadow DOM. Чтобы добраться до элемента в глубоко вложенном теневом дереве, придётся последовательно "проходить" через каждый shadowRoot.

Представим себе такую структуру:

  • Компонент <nmbrs-form> (основная форма).

  • Внутри него находится <div>, а в нём — компонент <nmbrs-button> (кастомная кнопка).

  • Внутри <nmbrs-button> находится настоящая HTML-кнопка <button>.

Чтобы получить доступ к этой кнопке из глобального контекста, путь будет выглядеть так:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

SВ виде одной цепочки вызовов это выглядит так:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Такая длинная цепочка наглядно демонстрирует мощь инкапсуляции: чтобы добраться до внутренних деталей, нужно явно пройти через каждую "границу". Это делает код более предсказуемым и защищает компоненты от случайных изменений.

Инкапсуляция от CSS

Стили, определённые на основной странице, не влияют на элементы внутри теневого DOM.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Элемент <span> внутри теневого дерева не получит эти стили. Это решает огромную проблему случайных пересечений и конфликтов CSS.

Применение стилей внутри теневого DOM

Стили, определённые внутри теневого дерева, в свою очередь, не влияют на основную страницу. Есть два основных способа их добавления.

1. Конструируемые таблицы стилей (Constructable Stylesheets)

Этот метод позволяет создавать объект CSSStyleSheet в JavaScript и применять его к одному или нескольким теневым деревьям. Это эффективно, если у вас есть общие стили для множества компонентов.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

2. Добавление элемента <style>

Простой и декларативный способ — поместить тег <style> прямо внутрь теневого дерева (часто внутри <template>).

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Теневой DOM и пользовательские элементы: идеальное сочетание

Вся мощь теневого DOM раскрывается при создании пользовательских элементов (Custom Elements). Без инкапсуляции они были бы невероятно хрупкими.

Пользовательский элемент — это класс, наследующий HTMLElement. Как правило, сам элемент выступает в роли теневого хоста, а вся его внутренняя структура создаётся внутри теневого дерева.

Вот пример простого компонента <filled-circle>:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Теперь мы можем использовать его в HTML как обычный тег, не беспокоясь о его внутреннем устройстве:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Каждый из этих компонентов будет полностью инкапсулирован и защищён от влияния внешней страницы.

Полезно? Подпишись.
Удачи 🚀

Показать полностью 13
[моё] Гайд Программирование IT Frontend Javascript HTML Веб-разработка Длиннопост Dom
0
564
krutopal
krutopal
1 месяц назад
IT-юмор

Когда шаришь в HTML 2.0⁠⁠

Когда шаришь в HTML 2.0
Мемы Картинка с текстом HTML IT юмор
20
7
tablepedia
1 месяц назад
ИТ-проекты пикабушников
Серия Визуализация данных

Население крупнейших 10 стран мира (1980-2025)⁠⁠

Уважаемые пикабушники!

Я создал микросайт с графиками населения 10 крупнейших стран мира.

Показываю ПОШАГОВОЕ использование:

1. Зайти на https://tablepedia.com/population2025

Кстати, весь микросайт в архиве ZIP занимает 14 килобайт и его можно скачать по адресу: https://tablepedia.com/population2025.zip

Если вы немного пролистнёте сайт вниз, вы увидите таблицу, а пониже неё - графики населения:

Население крупнейших 10 стран мира (1980-2025) Капитализм, Социализм, Сайт, IT, Javascript, Svg, HTML, Население, Демография, Китай, Индия, США, Россия, Статистика, Индонезия, Бразилия, Бангладеш, Пакистан, Нигерия, Мексика, Длиннопост

Рис. 1. Графики населения Китая, США, Индии и России (1980-2025).

2. Вы можете изменить года, вот один из результатов:

Население крупнейших 10 стран мира (1980-2025) Капитализм, Социализм, Сайт, IT, Javascript, Svg, HTML, Население, Демография, Китай, Индия, США, Россия, Статистика, Индонезия, Бразилия, Бангладеш, Пакистан, Нигерия, Мексика, Длиннопост

Рис. 2. Графики населения с изменёнными годами.

3. В нижней части сайта вы видите графики Индонезии, Бразилии, Бангладеша и Пакистана:

Население крупнейших 10 стран мира (1980-2025) Капитализм, Социализм, Сайт, IT, Javascript, Svg, HTML, Население, Демография, Китай, Индия, США, Россия, Статистика, Индонезия, Бразилия, Бангладеш, Пакистан, Нигерия, Мексика, Длиннопост

Рис. 3. Графики населения Индонезии, Бразилии, Бангладеша и Пакистана.

Думаю, очевидно, что можно менять не только года, но и страны, которые показаны на графике.

Если интересно, можете посмотреть этот сайт на GitHub: https://github.com/yaroslav1982/tablepedia-site-population2025

Напоминаю, что 5 дней назад я опубликовал сайт с минимальными и максимальными значениями золота, серебра, платины и палладия:
https://pikabu.ru/story/prodolzhenie_posta_minimalnyie_i_maksimalnyie_stoimosti_zolota_serebra_platinyi_i_palladiya_za_kazhdyiy_god_19002025_12925966

Если есть вопросы, напишите их, пожалуйста, в комментариях.

Показать полностью 3
[моё] Капитализм Социализм Сайт IT Javascript Svg HTML Население Демография Китай Индия США Россия Статистика Индонезия Бразилия Бангладеш Пакистан Нигерия Мексика Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии