Если у вас есть 4 возможных макета, лучше всего использовать Javascript и отбрасывать псевдоэлементы.
Допустим, ваш пользователь может выбрать макет по своему выбору с элементами внутри класса «селектор» и ваш стиль по умолчанию "встроенный". Ваш HTML будет выглядеть следующим образом:
<div class="selector">
<a id="inline">inline</a>
<a id="screenplay">screenplay</a>
</div>
<br>
<div class="script inline">
<p class="character">Mike</p>
<p class="stage_direction"><span>(</span>whispering<span>)</span></p>
<p class="sentence">Watch out ! He's sleeping !</p>
</div>
Нажав на селектор, вы измените свой класс div скрипта следующим кодом:
document.querySelector(".selector").addEventListener("click", function(e){
var itemClicked = e.target;
// Get the new class stored in ID of element (you may use data attribute instead)
var scriptClass = itemClicked.id;
var script = document.querySelector(".script");
// Reset your class to script alone
script.className = "script";
// Add the new class
script.classList.add(scriptClass);
});
Затем вы можете выбрать стиль , показать или скрыть элементы, в зависимости от выбранного класса. Пример того, как ваш CSS будет выглядеть:
.selector a {
display: inline-block;
margin-right: 20px;
color: blue;
cursor: pointer;
text-decoration: underline;
}
.script.inline {
font-family:arial, verdana, sans-serif;
}
.script.inline p {
display: inline;
}
.script.inline .stage_direction span {
display: none;
}
.script.screenplay {
font-family:courier, courier new, serif;
}
.script.screenplay .stage_direction {
text-transform: uppercase;
}
Смотрите рабочий пример здесь: https://jsfiddle.net/5c4udr8j/1/