Товаров: 0 (0р.)

Крестик на css: Нарисуйте крестик в CSS — CodeRoad

Содержание

css — Почему этот крестик остается серым в Safari iOS?

Я просто потратил слишком много времени на выяснение того, почему мой <button> не хочет отображать белый цвет текста в iOS Safari. Это кнопка для закрытия модального режима, определяемая так:

<button type="button">✖</button>

Вот что я получил:

Я был уверен, что что-то упустил, поскольку мы все знаем, что кнопки не так просто стилизовать. Но после применения color: #fff; и -webkit-appearance: none я ожидал, что это сработает. Я наконец-то подумал о том, чтобы попробовать других персонажей, и, к моему удивлению, вот результат:

Видимо мой CSS был правильным, виноват был сам персонаж. Теперь мне действительно любопытно, что случилось. Сначала я подумал, что, возможно, этот крест моего выбора был эмодзи, но, похоже, не так. Первый — это обычная заглавная буква X (1 байт), а все остальные — 3 байта. Emoji 4 байта, верно?

Мой вопрос, в основном из любопытства: почему этот крест остается серым?

Для справки вот кресты, которые я тестировал: X ✕ ☓ ✖ ✗ ✘, четвертый — тот. Я использовал шрифт Tahoma , но я не уверен, имеет ли это значение для символов Юникода. Проблемный крестик называется ТЯЖЕЛЫЕ МУЛЬТИПЛИКАЦИИ X (U + 2716).

-1

Robo Robok 8 Апр 2020 в 23:07

2 ответа

К сожалению, смайлики не работают так же. Некоторые из них являются текстовыми символами, а некоторые просто эмодзи. Я делаю этот простой трюк, и это работает большую часть времени:

element {
  color: transparent;  
  text-shadow: 0 0 0 green;
}

1

Naseh Badalov 8 Апр 2020 в 21:21

Тайна разгадана. У этого конкретного кросс-персонажа есть очень близкий эмодзи-брат. Сам крест — U+2716, который является десятичным 10006.

Но есть и эмодзи, которые выглядят почти одинаково, за исключением серого (по крайней мере, в интерпретации Apple) и с мягкой тенью. Этот эмодзи состоит из двух комбинированных персонажей:

  1. Тот же
    U+2716
    крест
  2. Символ с именем VARIATION SELECTOR-16, являющийся U+FE0F или десятичным 65039

Похоже, что Safari на iOS при некоторых обстоятельствах преобразует U+2716 в своего смайлика. Один из таких случаев — поместить его в <button>.

1

Robo Robok 8 Апр 2020 в 22:16

❌ — Метка крест Эмоджи: U+274C

X, знак умножения, крестик, удалить

U+274C

Emoji

Отображение этого Emoji в разных системах

Значение Эмоджи

Для выражения отказа можно пометить что-либо в тексте крестом. Вместе с символом ⭕ представляет набор для игры в крестики-нолики.

Знак добавлен в Юникод из типографского набора дингбаты Германа Запфа серия 100 Международной Гарнитурной Корпорации.

Символ «Метка крест» был утвержден как часть Юникода версии 6.0 в 2010 г. и был добавлен в Эмоджи версии 1.0 в 2015 г.

Этот текст также доступен на следующих языках: English;

Свойства

Версия6.0
БлокДингбаты
Тип парной зеркальной скобки (bidi)Нет
Композиционное исключениеНет
Изменение регистра274C
Простое изменение регистра274C

Другие символы

Кодировка

Кодировкаhexdec (bytes)decbinary
UTF-8E2 9D 8C226 157 1401485146811100010 10011101 10001100
UTF-16BE27 4C39 761006000100111 01001100
UTF-16LE4C 2776 391949501001100 00100111
UTF-32BE
00 00 27 4C
0 0 39 761006000000000 00000000 00100111 01001100
UTF-32LE4C 27 00 0076 39 0 0127762432001001100 00100111 00000000 00000000

Iconizer.net | cross бесплатные иконки

50

Вся коллекция

8700

https://icons8.com/iconizer/files/Juicy_Fruit/orig/cross.png

https://icons8.com/iconizer/files/Juicy_Fruit/thumb/64/cross.png

30

Вся коллекция

1724

https://icons8.com/iconizer/files/Web_Design_Creatives/orig/Cross-lines.png

https://icons8.com/iconizer/files/Web_Design_Creatives/thumb/64/Cross-lines.png

151

Вся коллекция

12515

https://icons8.com/iconizer/files/Woothemes_Ultimate_Icon_Set/orig/cross.png

https://icons8.com/iconizer/files/Woothemes_Ultimate_Icon_Set/thumb/64/cross.png

78

Вся коллекция

1190

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_up.png

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_up.png

223

Вся коллекция

1181

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_down.png

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_down.png

223

Вся коллекция

1256

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_left.png

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_left.png

223

Вся коллекция

1263

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_right.png

https://icons8.com/iconizer/files/SEM_Labs/orig/arrow_cross_right.png

223

Вся коллекция

177

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/8-em-cross.png

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/8-em-cross.png

182

Вся коллекция

357

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/12-em-cross.png

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/12-em-cross.png

182

Вся коллекция

626

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/24-em-cross.png

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/24-em-cross.png

182

Вся коллекция

469

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/16-em-cross.png

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/16-em-cross.png

182

Вся коллекция

299

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/16-tag-cross.png

https://icons8.com/iconizer/files/Sweetie_BasePack/orig/16-tag-cross.png

182

Вся коллекция

501

https://icons8.com/iconizer/files/Flag_icons/orig/Red%20Cross.png

https://icons8.com/iconizer/files/Flag_icons/orig/Red Cross.png

254

Вся коллекция

501

https://icons8.com/iconizer/files/Flag_icons/orig/Red%20Cross.png

https://icons8.com/iconizer/files/Flag_icons/orig/Red Cross.png

254

Вся коллекция

5950

https://icons8.com/iconizer/files/Flavour_Extended/orig/cross.png

https://icons8.com/iconizer/files/Flavour_Extended/orig/cross.png

419

Вся коллекция

4842

https://icons8.com/iconizer/files/Function_icons/orig/cross_48.png

https://icons8.com/iconizer/files/Function_icons/orig/cross_48.png

128

Вся коллекция

778

https://icons8.com/iconizer/files/Fugue_Icons/orig/do-not-disturb-sign-cross.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/do-not-disturb-sign-cross.png

2042

Вся коллекция

893

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_circle_frame.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_circle_frame.png

2042

Вся коллекция

886

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-circle-frame.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-circle-frame.png

2042

Вся коллекция

663

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-script.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-script.png

2042

Вся коллекция

721

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_circle.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_circle.png

2042

Вся коллекция

759

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_octagon_frame.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_octagon_frame.png

2042

Вся коллекция

588

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-button.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-button.png

2042

Вся коллекция

478

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small-white.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small-white.png

2042

Вся коллекция

296

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_small.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_small.png

2042

Вся коллекция

359

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small-circle.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small-circle.png

2042

Вся коллекция

359

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small-circle.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small-circle.png

2042

Вся коллекция

729

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-circle.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-circle.png

2042

Вся коллекция

728

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-white.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-white.png

2042

Вся коллекция

768

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_shield.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_shield.png

2042

Вся коллекция

768

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_shield.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross_shield.png

2042

Вся коллекция

344

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-small.png

2042

Вся коллекция

759

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-octagon-frame.png

https://icons8.com/iconizer/files/Fugue_Icons/orig/cross-octagon-frame.png

2042

Вся коллекция

6065

https://icons8.com/iconizer/files/Addictive_Flavour/orig/cross.png

https://icons8.com/iconizer/files/Addictive_Flavour/orig/cross.png

424

Вся коллекция

10949

https://icons8.com/iconizer/files/Crystal_Clear/orig/button_cancel.png

https://icons8.com/iconizer/files/Crystal_Clear/thumb/64/button_cancel.png

1157

Вся коллекция

13963

https://icons8.com/iconizer/files/Human_o2/orig/dialog-error.png

https://icons8.com/iconizer/files/Human_o2/thumb/64/dialog-error.png

1055

Вся коллекция

655

https://icons8.com/iconizer/files/Silk/orig/cross.png

https://icons8.com/iconizer/files/Silk/orig/cross.png

889

Вся коллекция

653

https://icons8.com/iconizer/files/Led_Icons/orig/cross_octagon_fram.png

https://icons8.com/iconizer/files/Led_Icons/orig/cross_octagon_fram.png

488

Вся коллекция

767

https://icons8.com/iconizer/files/Led_Icons/orig/cross_shield_2.png

https://icons8.com/iconizer/files/Led_Icons/orig/cross_shield_2.png

488

Вся коллекция

673

https://icons8.com/iconizer/files/Led_Icons/orig/cross_octagon.png

https://icons8.com/iconizer/files/Led_Icons/orig/cross_octagon.png

488

Вся коллекция

764

https://icons8.com/iconizer/files/Led_Icons/orig/cross.png

https://icons8.com/iconizer/files/Led_Icons/orig/cross.png

488

Вся коллекция

779

https://icons8.com/iconizer/files/Led_Icons/orig/cross_shield.png

https://icons8.com/iconizer/files/Led_Icons/orig/cross_shield.png

488

Вся коллекция

617

https://icons8.com/iconizer/files/Gnome_icons/orig/stock_insert-cross-reference.png

https://icons8.com/iconizer/files/Gnome_icons/orig/stock_insert-cross-reference.png

1032

Вся коллекция

1049

https://icons8.com/iconizer/files/Farm-fresh/orig/cross.png

https://icons8.com/iconizer/files/Farm-fresh/orig/cross.png

764

Вся коллекция

2212

https://icons8.com/iconizer/files/Crystal_Project/orig/button_cancel.png

https://icons8.com/iconizer/files/Crystal_Project/orig/button_cancel.png

475

Вся коллекция

1373

https://icons8.com/iconizer/files/Shrunk_Pidgin_Smilies/orig/fingers-crossed.png

https://icons8.com/iconizer/files/Shrunk_Pidgin_Smilies/orig/fingers-crossed.png

170

Вся коллекция

831

https://icons8.com/iconizer/files/Web_Design_Creatives/orig/Crossed-abc.png

https://icons8.com/iconizer/files/Web_Design_Creatives/thumb/64/Crossed-abc.png

151

Вся коллекция

10125

https://icons8.com/iconizer/files/Human_o2/orig/gtk-print-error.png

https://icons8.com/iconizer/files/Human_o2/thumb/64/gtk-print-error.png

1055

Вся коллекция

900

https://icons8.com/iconizer/files/Google_Maps_Icons/orig/pedestriancrossing.png

https://icons8.com/iconizer/files/Google_Maps_Icons/orig/pedestriancrossing.png

597

Вся коллекция

1307

https://icons8.com/iconizer/files/Google_Maps_Icons/orig/crossingguard.png

https://icons8.com/iconizer/files/Google_Maps_Icons/orig/crossingguard.png

597

Настройки виджета регистрации

Общий список возможных настроек виджета регистрации:

debug?: boolean;            // Вывод отладочной информации в консоль браузера

display: string;            // Как отображать виджет. "iframe" — в виде формы
                            // на странице. "popup" — в попапе поверх страницы.
initialRoute?: string;      // Экран, с которого начинается отображение
                            // виджета. Как правило "main" (по умолчанию)
                            // или "button".
hidePreloading?: boolean;   // Не показывать индикатор загрузки.

hidePromocodeInput?: string  // Как отображать поле для ввода промокода на 
                             // странице регистрации, подробнее см. 
                             // в разделе "Расширенная кастомизация"

iframe: {
    width?: any;            // Ширина виджета
    height?: any;           // Высота виджета
    autoHeight?: boolean;   // Режим автоподбора высоты
    name?: string;          // Параметр name тега iframe
    src?: string;           // Параметр src тега iframe
    target?: JQuery;
    fill?: boolean;
    background?: string;    // Параметр background тега iframe
    useVkResize?: boolean;  // Использовать ли API Вконтакте
                            // для изменения размера виджета
};
popup: {
    margins?: number[];
    width?: number;
    tint?: boolean;         // Затенять ли остальную страницу
                            // (по умолчанию — true)
    padding?: number;
    addCss?: Object;        // Дополнительные стили в виде пар
                            // свойство—значение.
    triggerSelector?: string;   // Селектор внешней ссылки или кнопки,
                                // по клику на которые открывается попап
                                // должен искаться jQuery. Подойдет
                                // что-то типа ".aButton" или "#theLink"

    autoShrink?: bool;      // Ужимать ли виджет на маленьких экранах
    minViewport?: number;   // Минимальная ширина, до которой ужимается
                            // виджет на маленьких экранах

    noClose?: boolean;      // Показывать ли крестик для закрытия
                            // попапа (по умолчанию — true)
    outerClose?: boolean;   // Выносить ли крестик за край виджета
                            // (false)
    closeColor?: string;    // Цвет крестика ("black")
    closeCss?: Object;      // Дополнительные стили крестика.
                            // (список пар свойство — значение)
    closeConfirm?: {
        texts?: {
            title?: string;  // Заголовок диалога о закрытии попапа
            description?: string; // Текст диалога о закрытии попапа
            close?: string;  // Текст кнопки отмены закрытия попапа
            proceed?: string;// Текст кнопки подтверждения закрытия 
                             // попапа
        }
    }
};
addFormData: any;           // Годится для передачи рефкодов и т.д.
event?: EventModel;         // Модель данных события

utmForward: boolean;        // Транслировать ли UTM метки со страницы
forwardCookies?: boolean;   // Транслировать ли значения cookies в виджет

buttonSettings: {           // Настройки виджета в режиме кнопки
    css: Object;            // Дополнительные CSS стили
    text: string;           // Текст на кнопке
    height: number;         // Высота кнопки в пикселях
};
mainFormButtonSettings: {   // Настройки кнопки покупки билета
                            // в самом виджете
    staticText?: string;
    texts: {
        proceed: string;    // "Продолжить"
        buy: string;        // "Купить"
        items: string[];    // ["билет", "билеты"]
        register: string;   // "Зарегистрироваться"
        atleast: string;    // "Выберите хотя бы один билет"
    };
};
multiankSettings?: {
    addFirstAttendee: boolean;
    distinguishFirstAttendee: boolean;
    initialSelects: boolean;
};
hideFormsWhenNoTickets?: boolean; // Скрывать форму регистрации,
                                  // если билеты пока не выбраны
prefill?: PrefillModels;    // Предзаполнение формы
recurringDatesMode: string; // ("auto"|"squish"|"expand")
                            // Показывать ли заголовки дней отдельно
                            // или схлопывать всё в обычные строчки дата-время.
                            // (Имеет смысл для мастер-событий.)

bindEvents?: any;   // Повесить обработчики на события.
                    // См. раздел «Встроить свое поведение в виджет»

overrideTemplates?: any;    // Переопределить шаблоны
                            // См. «Сверстать по своему макету»

noScrollToWidgetOnViewChange?: boolean; // не скроллить страницу до верха
                                        // виджета при смене его состояния
                                        // (напр., переход от анкеты
                                        //  к оплате)

loadCSS?: string[];         // Загрузка дополнительных стилей.
                            // См. «Перекрасить с помощью CSS»
skipBaseCSS?: boolean;      // Не загружать базовые стили виджета
disableBootstrap?: boolean; // Не загружать стили библиотеки Bootstrap

locale?: string;        // Язык виджета. Доступны значения "ru" или "en".
                        // Про дополнительные значения — см. раздел
                        // «Изменить тексты и локализовать».

Настройки скопированы из исходников на TypeScript, но вы можете подглядывать сюда, даже если используете чистый JavaSript. Или CoffeeScript. Или еще что-нибудь.

Новая тема для MIUI 12 и 12.5 позволяет «преобразовать» смартфоны Xiaomi в iPhone 13

Сеть приросла очередной темой для MIUI с «закосом» под айфоновскую iOS. Автор творения — Ritik Sharma. Ссылка на загрузку в самом низу.

Основные моменты:

  • переход на второй экран с календарем, сведениями о погоде, картами и программами быстрого доступа – свайпом от левой кромки вправо;
  • отключение неактуальных приложений – через клавишу настроек локскрина внизу;
  • открытие music-плейера – двойным щелчком по центру часов либо по нижней трети дисплея;
  • запуск миниатюрного меню с настройками камеры, будильника, блютуза, вай-фая, интернета и пр. – свайп из правого угла сверху вниз;
  • три кнопки по левому и правому краю после перехода на рабочий стол «заточены» на изменение обоев, активацию блюр-эффекта, работы с тенью ящика приложений и т.п.;
  • сокрытие настроек – кликом на «крестик»;
  • двойной тап по надписи для настройки виджетов.

Иконопак iOS со стандартной сеткой рабочего стола и тремя колонками в папке. В шторке – 5 и 4 ярлыка/ряд (в развернутом и свернутом виде соответственно). Формат отображения сети в строке состояния – LTE. Язык набирателя номера – английский и в темном, и в светлом режиме.

Внешний вид при темном режиме:

В светлом:

Обои здесь показаны не все:

Ссылка на закачку (в настройках смартфона нужно выбрать регион Россия) — http://zhuti.xiaomi.com/detail/94c7ba1c-06f2-4622-84e3-8f4125359676

Читайте свежие новости из мира мобильных технологий в Гугл Новостях, Facebook и Twitter, а также подписивайтесь на YouTube-канал и покупайте смартфоны в группе Telegram

Предыдущая статьяАвтономность iPhone 13 Pro Max оказалась лучше, чем у Redmi K40Следующая статьяXiaomi Civi: камерофон за $350 с дизайном, как у Samsung Galaxy S21 Ultra

Интересуюсь всеми новинками, которые появляются в мире гаджетов и расскажу вам самую свежую информацию обо всем, что интересно мне.

css — Unicode-символ для «X» отменить / закрыть?

× & # 215; или & раз; (то же самое) U + 00D7 знак умножения

× Тот же символ, но с увеличенной плотностью шрифта


& # 10799; U + 2A2F Продукт Гиббса


& # 10006; U + 2716 жирный знак умножения


Еще есть смайлик ❌, если вы его поддерживаете. Если вы этого не сделаете, вы просто увидели квадрат = & # 10060;


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

  

PURE CSS X или значок закрытия — JSFiddle

Редактор макета

Классический Столбцы Нижние результаты Правильные результаты Вкладки (столбцы) Вкладки (строки)

Консоль

Консоль в редакторе (бета)

Очистить консоль при запуске

Общие

Номера строк

Обернуть линии

Отступ с табуляцией

Подсказка кода (автозаполнение) (бета)

Размер отступа:

2 пробела 3 пробела 4 пробела

Ключевая карта:

По умолчанию: Sublime TextEMACS

Размер шрифта:

По умолчаниюBigBiggerJabba

Поведение

Код автозапуска

Только код автозапуска, который проверяет

Код автосохранения (натыкается на версию)

Автоматически закрывать HTML-теги

Автоматически закрывающие скобки

Проверка действующего кода

Выделите совпадающие теги

Заглушки

Показывать панель шаблонов реже

cross-fade () — CSS: Cascading Style Sheets

Функция cross-fade () принимает список изображений с процентом, определяющим, какая часть каждого изображения сохраняется с точки зрения непрозрачности, когда оно смешивается с другим. изображений.Значение процента должно быть закодировано без кавычек, должно содержать символ «%» , а его значение должно находиться в диапазоне от 0% до 100%.

Функцию можно использовать в CSS везде, где можно использовать обычную ссылку на изображение.

Процент плавного перехода

Думайте о процентном соотношении как о значении непрозрачности для каждого изображения. Это означает, что значение 0% означает, что изображение полностью прозрачно, а значение 100% делает изображение полностью непрозрачным.

  переходное затухание (url (white.png) 0%, url (black.png) 100%);
затухание (url (white.png) 25%, url (black.png) 75%);
затухание (url (white.png) 50%, url (black.png) 50%);
затухание (url (white.png) 75%, url (black.png) 25%);
плавное затухание (url (white.png) 100%, url (black.png) 0%);
плавное затухание (url (green.png) 75%, url (red.png) 75%);
  

Если какие-либо проценты опущены, все указанные проценты суммируются и вычитаются из 100% . Если результат больше 0%, результат затем делится поровну между всеми изображениями с пропущенными процентами.

В простейшем случае два изображения размываются между собой. Для этого только одно из изображений должно иметь процентное значение, другое будет соответственно блеклым. Например, значение 0%, определенное для первого изображения, дает только второе изображение, а значение 100% дает только первое. Значение 25% отображает первое изображение на 25%, а второе — на 75%. Значение 75% является обратным, показывая первое изображение на 75%, а второе на 25%.

Вышеупомянутое также могло быть записано как:

  переходное затухание (url (white.png) 0%, url (black.png));
затухание (url (white.png) 25%, url (black.png));
переход (url (white.png), url (black.png));
затухание (url (white.png) 75%, url (black.png));
затухание (url (white.png) 100%, url (black.png));
плавное затухание (url (green.png) 75%, url (red.png) 75%);
  

Если проценты не объявлены, оба изображения будут непрозрачными на 50%, а рендеринг с плавным переходом — равномерное слияние обоих изображений. В приведенном выше примере 50% / 50% не обязательно указывать проценты, так как, когда процентное значение опускается, включенные проценты складываются и вычитаются из 100%.Если результат больше 0, то он делится поровну между всеми изображениями с пропущенными процентами.

В последнем примере сумма обоих процентных значений не равна 100%, и поэтому оба изображения включают соответствующие им непрозрачности.

Если проценты не указаны и включены три изображения, каждое изображение будет непрозрачным на 33,33%. Две следующие строки (почти) идентичны:

  переходное затухание (url (red.png), url (yellow.png), url (blue.png));
затухание (url (red.png) 33.33%, url (yellow.png) 33,33%, url (blue.png) 33,33%);
  
  переходное затухание (<изображение>, <изображение>, <процент>)
  

Спецификация функции cross-fade () позволяет использовать несколько изображений и для каждого изображения иметь значения прозрачности независимо от других значений. Так было не всегда. Исходный синтаксис, реализованный в некоторых браузерах, допускал только два изображения, при этом сумма прозрачности этих двух изображений составляла ровно 100%.Исходный синтаксис поддерживается в Safari и поддерживается с префиксом -webkit- в Chrome, Opera и других браузерах на основе мигания.

  переходное затухание (url (white.png), url (black.png), 0%);
затухание (url (white.png), url (black.png), 25%);
затухание (url (white.png), url (black.png), 50%);
переход (url (white.png), url (black.png), 75%);
затухание (url (white.png), url (black.png), 100%);
  

В реализованном синтаксисе сначала объявляются два изображения, разделенных запятыми, за ними следует запятая и требуемое процентное значение.Если пропустить запятую или процент, значение станет недействительным. Процент — это непрозрачность первого объявленного изображения. Включенный процент вычитается из 100% с разницей в непрозрачности второго изображения.

Пример зеленого / красного (с общим процентом 150%) и пример желтого / красного / синего (с тремя изображениями) из раздела синтаксиса спецификации невозможны в этой реализации.

 кроссфейд (, ?) 

где
= <процент>? && <изображение>
= <изображение> | <цвет>

, где
<изображение> = | <изображение ()> | <набор изображений ()> | | <краска ()> | <плавное затухание ()> | <градиент>
<цвет> = | | | | <шестнадцатеричный цвет> | <имя-цвета> | текущий цвет |

где
= image (? [?, ?]!)
= набор изображений ( #)
= element ()
= paint (, ?)
= cross-fade (, ?)
= | <повторяющийся линейный градиент ()> | <радиальный градиент ()> | <повторяющийся радиальный градиент ()> |
= rgb (<процент> {3} [/ ]?) | rgb (<число> {3} [/ <альфа-значение>]?) | rgb (<процент> # {3}, <альфа-значение>?) | rgb (<число> # {3}, <альфа-значение>?)
= rgba (<процент> {3} [/ <альфа-значение>]?) | rgba (<число> {3} [/ <альфа-значение>]?) | rgba (<процент> # {3}, <альфа-значение>?) | rgba (<число> # {3}, ?)
= hsl ( [/ ]?) | hsl (<оттенок>, <процент>, <процент>, <альфа-значение>?)
= hsla (<оттенок> <процент> <процент> [/ <альфа-значение>]?) | hsla (<оттенок>, <процент>, <процент>, <альфа-значение>?)

, где
<теги-изображения> = ltr | rtl
= |
= [ | <строка>] [<разрешение> || type ()]
=
= linear-gradient ([ | to ]?, <цвет -stop-list>)
<повторяющийся-линейный-градиент ()> = повторяющийся-линейный-градиент ([<угол> | до <бокового-или-угла>]?, <список-остановок-цветов>)
<радиальный -gradient ()> = radial-gradient ([ || ]? [at ]?, )
<повторяющийся-радиальный-градиент ()> = Repeating-Radial-gradient ([ || ]? [at ]?, )
= конический градиент ([от <угол>]? [в <положение>] ?, <список-углов-остановок>)
<альфа-значение> = <число> | <процент>
<оттенок> = <число> |

, где
= [left | справа] || [наверх | внизу]
<список-остановок-цветов> = [<остановка-цветов> [, <подсказка-цветов>]? ] #,
= круг | эллипс
<размер> = ближайшая сторона | дальняя сторона | ближайший угол | дальний угол | <длина> | <длина-процент> {2}
<позиция> = [[слева | центр | справа] || [наверх | центр | внизу] | [слева | центр | право | <длина- процент>] [наверх | центр | внизу | <длина-процент>]? | [[слева | справа] <длина-процент>] && [[вверх | снизу] <процент-длины>]]
<список-углов-остановок> = [<углов-цвет-остановка> [, <угловой-цвет-подсказка>]? ] #,

где
= ?
<линейный-цвет-подсказка> = <длина-процент>
<длина-процент> = <длина> | <процент>
<угловой-цвет-стоп> = <цвет> && <цвет-стоп-угол>?
=

, где
= {1,2}
= {1,2}
<угол-процент> = <угол> |

10 кнопок закрытия CSS

Коллекция отобранных вручную бесплатных кнопок закрытия HTML и CSS примеров кода.

  1. CSS-кнопки
  2. CSS-эффекты при наведении курсора на кнопку
  3. CSS 3D-кнопки
  4. Кнопки отправки CSS
  5. Кнопки с градиентом CSS
  6. Плоские кнопки CSS
  7. Кнопки загрузки CSS
  8. CSS Кнопки воспроизведения / паузы
  9. CSS Эффекты нажатия кнопки
Автор
  • merrybottle
О коде

CSS Кнопка закрытия

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

О коде

Закрыть Анимация

Маленькая анимация закрытия, это не гамбургер для закрытия.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Мариус Никула
О коде

Интерактивная кнопка закрытия

Простая, но интерактивная кнопка закрытия .

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

О коде

Анимированный значок закрытия

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Джером Рендерс
Сделано с
  • HTML (мопс) / CSS (Sass) / JavaScript
О коде

Анимация кнопки открытия / закрытия

Совместимые браузеры: Chrome, Firefox, Opera, Safari

Зависимости: font-awesome.css

Автор
  • Джонатан Блэр
Сделано с
  • HTML / CSS (SCSS) / JavaScript
О коде

Открыть / Закрыть

Реализация «анимации значков открытия и закрытия» Данна Петти https://dribbble.com/shots/1621359-Open-Close-Icon-Animation.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Стефано
О коде

Вернуться закрыть

На основе «Back To Close» Сандипа Вирка https: // dribbble.com / shots / 1980182-Back-to-Close

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Параскевас Нтинакис
О коде

Кнопка закрытия

Простая кнопка закрытия в HTML и CSS.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

О коде

Кнопки закрытия на чистом CSS

Концепт Рубена Рейеса.Не стесняйтесь поэкспериментировать с ним, оживить его, интегрировать с иконками бургеров и т. Д.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

О коде

Кнопка закрытия

Для сайта требуется кнопка закрытия , поэтому я подумал, что протестирую что-нибудь, чтобы увидеть требуемый код. Это простая анимация, но выглядит чертовски хорошо.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Советы по кросс-браузерной разработке: часть 1 — CSS

Знаете ли вы, что люди до сих пор используют Internet Explorer 8 (IE8)? В рамках недавнего крупного редизайна Tinfoil, потребовавшего полного переписывания интерфейса, нам пришлось принять твердое решение о том, какие браузеры и какие версии этих браузеров поддерживать.Двумя основными целями при переписывании были заменить как можно больше изображений с помощью CSS и HTML (кнопки, стрелки и т. Д.) И перенести большую часть взаимодействий и переходов с полностраничных обновлений на динамические страницы с AJAX. Согласно нашей аналитике, 2% нашего трафика поступает из IE8 и выше. Остальной трафик поступает от браузеров, которые автоматически обновляются до последней версии и достаточно современны, чтобы поддерживать все функции, которые нам нужны.

В идеальном мире мы бы кодировали в соответствии со стандартами, установленными Консорциумом всемирной паутины (W3C), и считали бы это днем, будучи уверенными, что каждый браузер будет отображать наше приложение одинаково.На практике, однако, стандарты могут занять годы, прежде чем они станут стандартными, а в старых браузерах всегда будут отсутствовать или не работать функции. Тем не менее, мы, как разработчики интерфейса, должны позаботиться о том, чтобы наше приложение работало для всех наших пользователей. Учитывая это, а также тот факт, что люди все еще используют IE8 и выше для использования нашего приложения, мы приняли исполнительное решение поддерживать все браузеры обратно до Internet Explorer 8.

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

Тестировать, тестировать и снова тестировать в IE8

Изначально я думал, что могу пойти по ленивому пути. Я перепробовал множество инструментов эмуляции браузера и фреймворков для тестирования совместимости IE8, пытаясь выполнить свою задачу по кроссбраузерному тестированию без установки Windows XP (или того хуже, Vista). Все это имеет свои преимущества (удобство, стоимость и т. Д.), Но ничто не сравнится с настоящим. Даже режим совместимости IE9 отображает страницы несколько иначе, чем чистый IE8. Получите виртуальную машину или настоящий ПК, установите Windows XP и убедитесь, что вы не обновляете IE до более ранней версии 8.Всякий раз, когда вы тестируете какую-либо новую функциональность интерфейса, запустите свой компьютер с Windows XP, протестируйте его в IE8 и включите этот процесс в свой обычный рабочий процесс. Первоначальная стоимость создания такой среды может быть высокой или нет, но в целом это реальная экономия времени.

Начните свой CSS с помощью таблицы стилей сброса браузера

Все браузеры имеют разумные настройки стиля и макета по умолчанию. Однако не все механизмы рендеринга имеют одинаковые значения по умолчанию. Один браузер может постановить, что тег body должен иметь поле 8 пикселей (текущий стандарт де-факто), другой может настаивать на 10 пикселей.Интересный факт: IE7 по умолчанию использует верхнее / нижнее поле в 15 пикселей и левое / правое поле в 10 пикселей по умолчанию.

Хотя вы, как веб-разработчик, не можете контролировать, какой браузер выберет пользователь, ваша задача — обеспечить единообразие макета вашего сайта для всех из них. Вот здесь и пригодится таблица стилей сброса браузера. Идея, лежащая в основе таблицы стилей сброса браузера, заключается в том, чтобы дать вам возможность контролировать стиль по умолчанию для всех элементов. Вместо того, чтобы полагаться на поле тела 8 пикселей в большинстве браузеров, вы можете быть уверены, что все теги тела будут иметь поле 0 пикселей или что вы решите.Действительно минимальная отправная точка для сценария сброса может выглядеть так.

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

Использовать префиксы поставщика и резервные варианты для свойств CSS3

Хотите использовать гладкий градиент CSS3? Как насчет закругленных прямоугольников? Поскольку стандарты W3C постоянно развиваются, важно, чтобы в ваших стилях были разумные резервы на случай, если браузер не поддерживает свойство CSS.Старые браузеры будут понимать эти резервные варианты и пропускать код, который они не могут понять, в то время как новые браузеры будут понимать как резервные варианты, так и новые свойства. Чтобы это работало, резервные копии должны появляться непосредственно перед новыми свойствами в вашем CSS, чтобы новые браузеры предпочитали новые свойства.

Не менее важно использовать различные префиксы поставщиков для браузеров, у которых есть собственная, незавершенная версия стандарта. Правильный способ использования градиента CSS3 — сначала перечислить все префиксы поставщика и, наконец, закончить свойством стандартного градиента W3C.Старые браузеры, которые поддерживают только свои собственные префиксы поставщиков, будут использовать их, а те браузеры, которые реализовали стандарт, предпочтут это, поскольку он указан последним. Ниже приводится таблица префиксов поставщиков для каждого из популярных браузеров.

Следующий код может выглядеть некрасиво, но он совместим как с предыдущими, так и с предыдущими версиями. Именно так мы определяем наши синие градиенты на нашем веб-сайте с помощью чистого CSS. Мы используем библиотеку под названием Compass, фреймворк Sass, который управляет для нас всем, что связано с префиксами поставщиков.Все, что нам нужно сделать, это поддерживать библиотеку в актуальном состоянии, а все остальное позаботится само. Я очень рекомендую это. С Compass приведенный выше пример эквивалентен следующему.

Конкретно целевой IE8

Итак, вы попробовали описанные выше методы, но у вас все еще возникают проблемы в IE8? У вас может не быть другого выбора, кроме как использовать условные комментарии IE. Эти уловки были добровольно добавлены Microsoft в свои браузеры, чтобы помочь в устранении несоответствий IE. К счастью, они представлены в виде комментариев HTML, поэтому другие браузеры просто проигнорируют их.

Приведенный выше простой оператор «if» может быть заменен чем-то более сложным, если вы хотите настроить таргетинг на все IE старше определенной версии.

Я оставил эту технику напоследок, потому что она действительно должна быть вашим последним средством. Большинство проблем с несогласованностью CSS можно решить, используя подходящие резервные варианты и разумно упорядочивая стили. Чем меньше кодовых путей вы должны поддерживать, тем легче поддерживать стабильность вашего кода.

Часть 2 будет посвящена JavaScript, так что следите за обновлениями.Чтобы ознакомиться с нашими разработками, запустите IE8, зарегистрируйтесь и поиграйте.

Принципы кросс-браузерного кодирования CSS — Smashing Magazine

Краткое резюме ↬ Можно утверждать, что в веб-дизайне нет цели более удовлетворительной, чем сделать так, чтобы красивый и интуитивно понятный дизайн выглядел одинаково одинаково во всех используемых браузерах.К сожалению, обычно считают, что достичь этой цели практически невозможно. Некоторые даже заявили, что безупречная кроссбраузерная совместимость не обязательна. [Ссылки проверены и исправлены 6 марта 2017 г.]

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

Наша цель как разработчиков — не просто заставить его работать в каждом браузере; наша цель должна состоять в том, чтобы заставить его работать в каждом браузере с минимальным объемом кода, чтобы обеспечить бесперебойное обслуживание веб-сайта в будущем.

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

Больше после прыжка! Продолжить чтение ниже ↓

Понимание модели бокса CSS

Это одна из первых вещей, с которой вам следует полностью ознакомиться, если вы хотите получить кроссбраузерных макетов с очень небольшим количеством приемов и обходных путей. . К счастью, блочная модель не является трудной для понимания и в целом работает одинаково во всех браузерах, за исключением обстоятельств, связанных с определенными версиями Internet Explorer (подробнее об этом позже).

Модель блока CSS отвечает за вычисление:

  • Сколько места занимает элемент уровня блока
  • Независимо от того, перекрываются ли границы и / или поля или нет
  • Размеры ящика
  • В некоторой степени, положение блока относительно другого содержимого на странице.

Блочная модель CSS имеет следующие основные правила:

  • Элементы блочного уровня по существу прямоугольные (как и все элементы на самом деле)
  • Размеры блочного элемента рассчитываются по ширине, высоте, заполнению, границам и полям
  • Если высота не указана, высота элемента блока будет равна его содержанию, плюс заполнение (если нет числа с плавающей запятой, о чем см. Ниже)
  • Если ширина не указана, неплавающий прямоугольник будет расширяться, чтобы соответствовать ширине своего родительского элемента без заполнения (подробнее об этом позже)

Некоторые важные вещи, о которых следует помнить при работе с элементами уровня блока:

  • Если для блока задана ширина «100%», у него не должно быть полей, отступов или границ, в противном случае он будет выходить за пределы своего родителя.
  • Смежные по вертикали поля могут вызвать некоторые сложные проблемы со сворачиванием, которые могут вызвать проблемы с макетом
  • Элементы, расположенные относительно или абсолютно, будут вести себя по-разному, подробности чего обширны и выходят за рамки данной статьи
  • Приведенные выше правила и принципы сформулированы в предположении, что страница, содержащая элементы уровня блока, отображается в стандартном режиме (этот пункт был добавлен позже после просмотра опубликованных комментариев).


Модель окна, отображаемая с помощью Firebug в Firefox

Понимание разницы между блочным и встроенным

Для опытных разработчиков это еще одна легкая задача.Однако это еще одна важная область, которая при полном понимании приведет к появлению лампочки, можно избежать многих головных болей, , и вы будете чувствовать себя намного увереннее при создании кросс-браузерных макетов.

Изображение ниже иллюстрирует разницу между блочными и встроенными элементами:

Вот несколько основных правил, которые отличают блочные элементы от встроенных:

  • Элементы блока по умолчанию естественным образом расширяются по горизонтали, чтобы заполнить их родительский контейнер, поэтому нет необходимости устанавливать ширину «100%»
  • Блочные элементы по умолчанию начинаются с самого левого края родительского блока, под любыми предыдущими блочными элементами (если не используются поплавки или позиционированные элементы; см. Ниже)
  • Встроенные элементы игнорируют настройки ширины и высоты
  • Встроенные элементы перемещаются вместе с текстом и имеют типографские свойства, такие как пробел , размер шрифта и межбуквенный интервал
  • Встроенные элементы можно выровнять с помощью свойства vertical-align , но блочные элементы не могут
  • У встроенных элементов будет некоторое естественное пространство под ними, чтобы разместить текстовые элементы, которые опускаются ниже линии (например, буква «g»).
  • Встроенный элемент станет блочным, если он перемещается

Общие сведения о перемещении и очистке

Для макетов с несколькими столбцами, которые относительно легко поддерживать, лучший метод — использовать числа с плавающей запятой.Таким образом, наличие твердого понимания того, как работают числа с плавающей запятой, является еще одним важным фактором в достижении кроссбраузерности.

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

Вот некоторые важные вещи, о которых следует помнить при перемещении и очистке элементов:

  • Плавающие элементы удаляются из потока других неплавающих элементов уровня блока; Другими словами, если вы перемещаете блок влево, конечный абзац (уровень блока), который не перемещается, появится за плавающим элементом в стеке, а любой текст внутри абзаца (встроенный уровень) будет обтекать плавающий элемент
  • Чтобы содержимое обтекало плавающий элемент, он должен быть либо встроенным, либо перемещаться в том же направлении
  • Плавающий элемент без заявленной ширины будет сжиматься до ширины его содержимого, поэтому обычно лучше установить ширину для плавающего элемента
  • Если элемент блока содержит плавающие дочерние элементы, он «схлопнется», что потребует исправления.
  • Элемент, который «очищен», не будет обтекать плавающие элементы над ними в документе
  • Элемент, который очищен и перемещен, очистит себя только от элементов, которые идут до, а не после

Используйте Internet Explorer в первую очередь (или не используйте)

Обратите внимание, что команда Smashing Magazine настоятельно не рекомендует сначала разрабатывать веб-сайты в Internet Explorer.По нашему мнению, сайты должны разрабатываться в «современных» браузерах, сначала со стандартами, а затем настраиваться для версий Internet Explorer с ошибками. Приведенный ниже совет не отражает мнение редакционной группы Smashing. Согласны или не согласны? Прокомментируйте эту статью!

Большая часть того, что я обсуждал до сих пор, касается принципов кодирования и компоновки CSS. Этот принцип больше связан с привычками и предпочтениями большинства дизайнеров. Хотя нам может не понравиться использовать IE6 и IE7 в нашей повседневной работе в Интернете, когда приходит время создавать клиентский проект с нуля, одна из лучших вещей, которые вы можете сделать, — это протестировать свой макет в этих браузерах, находящихся на ранней стадии разработки.Возможно, вы даже захотите открыть отдельную версию IE6 или IE7 и просто начать разработку в этом браузере.

Конечно, у вас не будет доступа к таким инструментам, как Firebug, но обычно для CSS (особенно на ранних этапах разработки) Firebug вам не понадобится. Намного легче сначала заставить макет работать в IE6 и IE7, а затем исправить его для других браузеров, чем делать это наоборот. Если дождаться конца процесса разработки, чтобы открыть IE6 и / или IE7, это может вызвать некоторые, если не все, из следующих проблем:

  • Потребуется несколько взломов, требующих отдельных таблиц стилей для разных версий IE, что сделает код раздутым и менее удобным в обслуживании, а также замедлит работу веб-сайта
  • Макет в некоторых местах, возможно, придется переделать, что увеличит время разработки
  • Время тестирования будет увеличиваться, иногда экспоненциально, оставляя меньше времени для более важных задач
  • Макет в других браузерах не будет таким же, как в IE6 и IE7

Я не ожидал, что разработчики будут использовать Internet Explorer так агрессивно для личных проектов, веб-приложений или другой работы, не связанной с клиентом.Но для корпоративных клиентов , пользовательская база которых в основном основана на Internet Explorer, этот совет может предотвратить множество головных болей при правильной работе и определенно сделает кроссбраузерность более вероятной .

Иногда рассмотрение проблем IE как «досадных ошибок» может создать ненужный негатив и затруднить разработку и дальнейшее обслуживание. Работа с IE — это факт жизни дизайнеров и разработчиков, поэтому просто рассматривайте его проблемы, как любую проблему с CSS, — и создавайте оттуда.

Основные проблемы Internet Explorer

Если вы собираетесь начать с IE в своей разработке или, по крайней мере, проверить свой макет в IE на ранней стадии, тогда вы должны понимать, с чем у Internet Explorer (обычно версий 6 и 7) есть проблемы или каковы его ограничения. находятся.

Подробное обсуждение всех возможных проблем, которые могут возникнуть в Internet Explorer, и список всех его проблем совместимости с CSS, безусловно, выходит за рамки этой статьи.Но есть некоторые довольно существенные несоответствия и проблемы, возникающие в связи с IE, о которых должны знать все разработчики CSS. Вот краткое изложение наиболее распространенных проблем, с которыми вам придется столкнуться:

  • IE6 станет проблематичным при чрезмерном использовании поплавков, что приведет (как ни парадоксально) к исчезновению содержимого или дублированию текста
  • IE6 удвоит маржу для плавающих элементов на стороне, которая имеет то же направление, что и плавающий; настройка дисплея : встроенный часто исправляет это
  • В IE6 и IE7, если элемент не имеет макета, это может вызвать ряд проблем, в том числе не отображается фон, неправильно сжимаются поля и т. Д.
  • IE6 не поддерживает свойства CSS на основе минимума и максимума, такие как min-height или max-width
  • IE6 не поддерживает фиксированное позиционирование фоновых изображений
  • IE6 и IE7 не поддерживают многие альтернативные значения для свойства display (например.грамм. встроенная таблица , ячейка таблицы , строка таблицы и т. Д.)
  • Вы не можете использовать псевдокласс : hover ни для одного элемента в IE6, кроме привязки ( )
  • Некоторые версии IE мало поддерживают определенные селекторы CSS (например, селекторы атрибутов, дочерние селекторы и т. Д.).
  • IE версий 6-8 слабо поддерживает CSS3, но есть обходные пути

Есть еще много ошибок, проблем и несоответствий, которые могут возникнуть в Internet Explorer, но они, вероятно, являются наиболее распространенными и наиболее важными, о которых следует помнить при попытке создать кроссбраузерную среду.Я призываю всех разработчиков провести дальнейшее исследование многих проблем , о которых я упомянул выше, чтобы иметь более точное представление о том, какие проблемы могут вызывать эти проблемы и как их решать.

Некоторые вещи никогда не будут выглядеть одинаково

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

Формы часто выглядят иначе

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

Взгляните на изображение ниже, которое отображает элементов элемента отображаются по-разному в разных браузерах

Некоторыми элементами формы можно управлять визуально.Например, если клиент требует, чтобы кнопка отправки выглядела одинаково во всех браузерах, это не проблема, вы можете просто использовать изображение вместо стандартного , которое аналогично < select> элементов, в разных браузерах будут выглядеть по-разному.

Но другие элементы формы, такие как переключатели, поля textarea и вышеупомянутые элементы