Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2018, 15:45
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Получение и вывод псевдоэлементов через js
Возможно ли вообще вывести псевдоэлементы через js? Если да, то, помогите, пожалуйста, настроить скрипт 2.

ДЕмо: https://jsfiddle.net/6k0L92nu/
где,

1. Есть скрипт, который:
а) добавляет стили div'у в style="", прописанные в data-cls{}
б) добавляет стили и выводит их в textarea:

$('.btn').click(function() {
        $('#bSm').val();
        $('#bSm').css($(this).data('cls'));

        var bsmStyles = $('#bSm').attr('style').replace(/; /g, ';\n');
        var val = $('#form_code').val();

        $('#form_code').val(val.replace(/#bSd \{([\s\S]*?)\}/, `#bSd {\n${bsmStyles}\n}`));
      });


2. Есть похожий скрипт, но он добавляет класс, стили которого прописаны в css:
$(function() {
        var b = $('.btn_cls');
        b.click(function() {
          var cls = $(this).data("cls");
          $('#bSm').toggleClass(cls);
        });
      });


Проблема в том, что добавленный класс не имеет своих свойств, а только добавляет псевдоэлементы :before и :after. Можно ли, по аналогии с первым скриптом, "вытащить" из таблицы стилей значения :before и :after и вставить их в textarea? Например, при добавлении класса utilTwo, в textarea, под #bSd {} должно выводиться так:
#bSd.utilTwo:before {
здесь его стили
}

#bSd.utilTwo:after {
здесь его стили
}
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2018, 17:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

madeas,
Похоже, эти классы вам придется вытаскивать из textContent элемента style
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2018, 17:49
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<style>
	div:before{
		display: none;
	}
</style>
<div></div>
<script>
console.log(getComputedStyle(document.querySelector('div'),':before').display);
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка и получение данных через скрипт polsok Events/DOM/Window 1 02.11.2015 08:52
Генерация svg через js Валерий1996 Общие вопросы Javascript 0 12.08.2015 10:25
eMail через JS konstantinopol Общие вопросы Javascript 15 12.01.2015 10:06
Вывод ссылки через Javascript johny_torr Общие вопросы Javascript 5 08.12.2013 22:44
Получение расчетного листка через интранет StartingCoder Общие вопросы Javascript 2 02.07.2008 17:19