Magick CSS, который по-разному применяется к каждому символу строки

(Вопреки видимому, это не вопрос LaTeX.)

Чтобы правильно отобразить с помощью HTML логотип \LaTeX:

можно использовать следующий ввод HTML:

<span class = "LATEX">L<span class = "A">A</span><span class = "TEX">T<span class = "E">E</span>X</span></span>

и следующий код CSS:

span.TEX {letter-spacing: -0.125em; margin-right:0.125em;}
span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
a span.TEX span.E {text-decoration: none; }
span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
span.LATEX span.TEX{ position:relative; margin-left: -0.4em; margin-right:0.125em; }

Есть ли способ получить тот же результат с более коротким вводом HTML, например, в следующем псевдокоде:

<span class = "LATEXLogo">LaTeX</span>

и следующий код CSS:

span.LATEXLogo { something magick }

Это примерно тот же вопрос, stackoverflow.com/questions/29467540/….

user3783243 11.12.2020 14:47

@A.Meshu Я не вижу возможности применить связанный вопрос к текущему.

Denis Bitouzé 11.12.2020 15:19

Вы разделяете каждый символ в элементе, поэтому используйте . в регулярном выражении вместо просмотра вперед. При этом вы можете перебирать и применять стили к каждому персонажу.

user3783243 11.12.2020 15:21

@user3783243 user3783243 Извините, но это выходит за рамки моей компетенции.

Denis Bitouzé 11.12.2020 15:24

@DenisBitouzé, как указано, css не может этого сделать. Ваша разметка отличается, но это тот же вопрос.

A. Meshu 11.12.2020 15:39
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
6
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

.latex sub, .latex sup {
  text-transform: uppercase;
}

.latex sub {
  vertical-align: -0.5ex;
  margin-left: -0.1667em;
  margin-right: -0.125em;
}

.latex, .latex sub {
  font-size: 1em;
}

.latex sup {
  font-size: 0.85em;
  vertical-align: 0.15em;
  margin-left: -0.36em;
  margin-right: -0.15em;
}
<span class = "latex">L<sup>a</sup>T<sub>e</sub>X</span></p>

Другой вариант, без всяких css/html, с использованием MathJax cdn:

<script type = "text/javascript" async src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"> </script>
\(\rm\LaTeX\)

Хороший! Но возможно ли это с чем-то еще более простым: <span class = "latex">LaTeX</p>?

Denis Bitouzé 11.12.2020 14:29

Нет, поскольку вам нужно нацеливаться на каждого отдельного персонажа, использование <sub> и <sup> — самый простой способ.

0stone0 11.12.2020 14:33

@DenisBitouzé, это возможно, но с помощью javascript.

s.kuznetsov 11.12.2020 14:36

@sergeykuznetsov Почему не с javascript?

Denis Bitouzé 11.12.2020 14:38

Что касается опции javascript, возможно ли получить этот логотип напрямую, не полагаясь на математический режим LaTeX (\(...\)), и иметь возможность просто написать \LaTeX?

Denis Bitouzé 11.12.2020 15:04
Ответ принят как подходящий

От себя могу предложить решение для javascript.

Здесь каждый символ заключен в отдельный тег <inside>. Далее с помощью pseudo-classes в css можно обращаться к четным и не четным буквам в слове:

inside:nth-child(odd) {
  /*your styles*/
}

inside:nth-child(even) {
  /*your styles*/
}

Или вы можете назначить уникальные стили для каждой буквы слова. Так:

inside:nth-child(1) {
  /*your styles*/
}

inside:nth-child(2) {
  /*your styles*/
}

...

inside:nth-child(5) {
  /*your styles*/
}

window.onload = function() {
  let text = document.querySelector('.LATEXLogo');
  let inside = '';

  for (i = 0; i < text.innerText.length; i++) {
    if (text.innerText[i] !== " ") {
      inside += "<inside>";
      inside += text.innerText[i];
      inside += "</inside>";
    }
  }
  text.innerHTML = inside;
}
inside:nth-child(odd) {
  color: red;
}

inside:nth-child(even) {
  color: green;
}
<span class = "LATEXLogo">LaTeX</span>

Действительно, просто вопрос пропажи window.onload :)

Denis Bitouzé 11.12.2020 15:59

@DenisBitouzé, рад помочь :)

s.kuznetsov 11.12.2020 17:12

Что ж, если количество вхождений <span class = "LATEXLogo">LaTeX</span>> 1, только первое отображается, как и ожидалось.

Denis Bitouzé 11.12.2020 21:54

@DenisBitouzé, да. И чтобы применить это ко многим вхождениям, вам нужно изменить вызов селектора. Вот так - document.querySelectorAll. И это не единственное изменение в коде, которое необходимо сделать.

s.kuznetsov 11.12.2020 22:03

@DenisBitouzé, вам нужна помощь в написании кода для многих <span class = "LATEXLogo">LaTeX</span>?

s.kuznetsov 11.12.2020 23:10

@DenisBitouzé, хорошо :) Если у вас возникнут трудности или вопросы, дайте мне знать, пожалуйста.

s.kuznetsov 11.12.2020 23:14

Другие вопросы по теме