Есть ли какой-либо чистый метод CSS для создания каждой буквы, одним словом, различным цветом?

Вот простая версия, которая работает:

(defn lookup
  [k lol]
  (let [the-map (into {}
                  (for [lst lol]
                    {(first lst) (second lst) } ))
        result (get the-map k)]
    result ) )

(lookup (quote b)      (quote (((a b) 1) (c 2) (b 3)))) => 3
(lookup (quote [a b])  (quote (((a b) 1) (c 2) (b 3)))) => 1
(lookup (quote d)      (quote (((a b) 1) (c 2) (b 3)))) => nil

Однако ваш код будет проще, если вы замените все цитируемые списки, такие как '(1 2 3), на векторы, подобные [1 2 3] (don тогда не нужно использовать начальную кавычку) и заменить все символы в кавычках, например 'a, на ключевые слова, подобные :a (также не нужно заключать в кавычки символы.

Внесение этих изменений и добавление модульных тестов выглядит следующим образом Итак:

(ns tst.demo.core
  (:use tupelo.core demo.core tupelo.test) )

(defn lookup
  [k lol]
  (get (into {} lol) k))

(dotest
  (is= 3    (lookup :b      [[[:a :b] 1] [:c 2] [:b 3]]))
  (is= 1    (lookup [:a :b] [[[:a :b] 1] [:c 2] [:b 3]]))
  (is= nil  (lookup :d      [[[:a :b] 1] [:c 2] [:b 3]])))

PS Пожалуйста, см. Brave Clojure для более подробной информации.


Обновление:

[ 1122] Нельзя использовать обычную функцию с этим синтаксисом:

(look-up b '(((a b) 1) (c 2) (b 3)))

, поскольку b является символом и подразумевается как переменная , а не как часть данных .Вы можете выбрать:

  1. Преобразовать символ b в ключевое слово :b, как я предлагал
  2. Всегда заключать в кавычки символ, например 'b (болезненный и ошибочный -prone)
  3. Написать макрос (который автоматически «заключает в кавычки» все его аргументы) и сделать так, чтобы макрос вызывал первую версию функции lookup (много работы за небольшую выгоду).

Таким образом, я предложил пункт (1) в качестве предпочтительного решения.

9
задан Paul D. Waite 21 December 2010 в 18:38
поделиться

4 ответа

Вот некоторый JavaScript.

var message = "The quick brown fox.";
var colors = new Array("#ff0000","#00ff00","#0000ff"); // red, green, blue

for (var i = 0; i < message.length; i++){
  document.write("<span style=\"color:" + colors[(i % colors.length)] + ";\">" + message[i] + "</span>");
}
13
ответ дан 4 December 2019 в 08:17
поделиться

На серверной стороне можно сделать это достаточно легко без раздражающих поисковых систем AFAIK.

// This server-side code example is in JavaScript because that's
// what I know best.
var words = split(message, " ");
var c = 1;
for(var i = 0; i < words.length; i++) {
   print("<span class=\"color" + c + "\">" + words[i] + "</span> ");
   c = c + 1; if (c > 3) c = 1;
}

Если Вы действительно хотите очень простой встроенный HTML-код, запишите клиентский JavaScript, чтобы получить сообщение из данного P или DIV или безотносительно на основе его идентификатора, разделить его, повторно кодировать его как выше и заменить P или атрибут 'innerHTML' DIV.

6
ответ дан 4 December 2019 в 08:17
поделиться

Нет определенно никакого решения, использующего просто CSS, поскольку селекторы CSS не предоставляют Вам доступа к отдельным буквам (кроме :first-letter).

6
ответ дан 4 December 2019 в 08:17
поделиться

Я не должен вручную генерировать изображение для каждой страницы

Затем генерируйте изображение автоматически.

Вы не указываете, какую технологию серверной стороны Вы используете, но любой, которого хороший позволит Вам управлять изображениями (или по крайней мере называть внешней утилитой изображения)

Таким образом, нетехнические пользователи должны были бы просто сделать что-то вроде этого:

<img src="images/redblueyellow.cfm/programs.png" alt="programs"/>

И redblueyellow.cfm сценарий затем или использовал бы существующий programs.png или генерировал бы новое изображение с несколькими цветами, как желаемый.

Я могу обеспечить демонстрационный CFML или псевдокодировать, чтобы сделать это, если Вы хотели бы?

1
ответ дан 4 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: