Почему Сброс YUI CSS не передает Проверку?

Хотя существуют некоторые основательные ответы, я думал, что совместно использую свой подход. Я предпочитаю использовать функциональный подход с помощью Функтора. Функтор является просто необычным способом сказать, что мы будем передавать функцию значению. (Предположения, что я видел, передают значения функции)

, Создают помощника TypeOf

const TypeOf = obj => Object.prototype.toString.call(obj).slice(8,-1);

, Это подобно typeof, но теперь возвращается Array для [] и Object для {}. Мне нравится думать о нем как о строгом typeof. Если Вы работаете над приложением Gmail, и производительность является беспокойством тогда, можно сделать что-то вроде этого.

const TypeOf = obj => (
  Array.isArray(obj)
   ? "array"
    : obj === null // catch null edge case.  typeof null is an object :)
   ? null
    : typeof obj
)

Вы могли остановиться здесь и прекратить дело, однако Вы могли сделать это немного более мощным составом использования. Вы извлекаете большую пользу при создании Функтора TypeBox, снова необычное слово для передачи функции к значению вместо того, чтобы передать значение функции.

Создают TypeBox

const TypeBox = (predicate, defaultValue) => {
  const TypePredicate = value => ({
     value,
     map: cb => predicate(value)
                ? TypePredicate(cb(value))
                : TypePredicate(defaultValue)
  });
  return TypePredicate;
}

здесь существует большое продолжение, но это очень мощно. Функция TypeBox использует закрытие и возвращает наш Функтор. Закрытия предоставляют Вам доступ к Lexical_Scope, думают о нем как о рюкзаке, который содержит вещи, к которым Вы хотите получить доступ позже.

Создают ArrayBox

const ArrayBox = TypeOf(obj => TypeOf(obj) === 'Array' ? obj : [obj]);

ArrayBox, передает наш predicate и defaultValue к [1 112] и будет доступен, когда мы вызываем/выполняем ArrayBox (назовите его, вообще имеет смысл для Вашего варианта использования).

Теперь забавная часть

, Если входом является Массив, возвращает его.

ArrayBox(["foo", "bar"]).value; // ['foo', 'bar']

, Если вход не является массивом, возвратите его в одном

ArrayBox("foo").value // ["foo"]

, Что является большим об этом подходе, то, что он масштабируется, легко протестировать, и он использует состав. Можно составить функции любым способом для получения желаемого результата.

существует много других способов, которыми мы могли приблизиться к этому использованию Или или Монады.

7
задан Cœur 22 July 2017 в 17:29
поделиться

2 ответа

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

В качестве примера, поскольку CSS будет использовать последнюю объявленную версию правила, выполнение следующих действий приведет к тому, что IE7 и ниже будет использовать размер шрифта 113%, в то время как другие браузеры используют ] font-size 100% для абзацев.

p { font-size: 100%; *font-size: 113%; }

Немного больше информации можно найти на webdevout.net .

Лично я считаю приемлемым использование таких хаков для чтобы обойти поломку IE. Судя по всему, Yahoo! чувствует то же самое.

9
ответ дан 6 December 2019 в 14:06
поделиться

Вероятно, это взлом совместимости с IE.

Есть много синтаксиса CSS ошибки, которые некоторые браузеры (особенно IE 6) игнорируют, а другие нет. Некоторые файлы CSS будут использовать ошибки, чтобы создать правило, что один браузер будет видеть, а другой - нет.

РЕДАКТИРОВАТЬ : Полный список см. здесь . В вашем конкретном случае это правило будет видно только IE 7 или более ранней версии.

6
ответ дан 6 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

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