Ответ 1
- ОБНОВЛЕНО ДЛЯ SAFARI 11 (Обновление осени 2017 года) *
ПРИМЕЧАНИЕ. Фильтры и компиляторы (такие как движок SASS) ожидают, что стандартный "кросс-браузерный" код - НЕ CSS-хаки, подобные этим, что означает, что они будут переписывать, уничтожать или удалять хаки, поскольку это не то, что делают хаки. Это нестандартный код, который тщательно обрабатывается только для целевых версий одного браузера и не может работать, если они изменены. Если вы хотите использовать его с ними, вы должны загрузить выбранный CSS-взлом ПОСЛЕ любого фильтра или компилятора. Это может показаться настоящим, но среди людей, которые не понимают, что они уничтожают взломы, было много путаницы, запуская его через такое программное обеспечение, которое не предназначалось для этой цели.
Safari изменилась с версии 6.1, как многие заметили.
Обратите внимание: если вы используете Chrome [и теперь также Firefox] на iOS (по крайней мере, в версиях iOS 6.1 и новее), и вам интересно, почему ни один из хаков, похоже, не отделяет Chrome от Safari, это потому, что версия iOS для Chrome использует движок Safari. В нем используются хаки Safari, а не Chrome. Подробнее об этом здесь: https://allthingsd.com/20120628/googles-chrome-for-ios-is-more-like-a-chrome-plated-apple/
ТАКЖЕ: Если вы пробовали один или несколько хаков и не можете заставить их работать, отправьте примерный код (еще лучше тестовую страницу) - взлом, который вы пытаетесь, и какой браузер (точную версию!) Вы а также устройство, которое вы используете. Без этой дополнительной информации для меня или кого-либо еще здесь невозможно помочь.
Часто это простое исправление или недостающая точка с запятой. С CSS обычно это или проблема с каким порядком код указан в таблицах стилей, если не только ошибки CSS. Прошу протестировать хаки здесь на тестовом сайте. Если он работает там, это означает, что хак действительно работает для вашей настройки, но это что-то еще, что нужно решить. Люди здесь действительно любят помогать или, по крайней мере, указывают вам в правильном направлении.
Место проведения испытания:
https://browserstrangeness.bitbucket.io/css_hacks.html#webkit
И ЗЕРКАЛО!
https://browserstrangeness.github.io/css_hacks.html#webkit
Firefox для iOS был выпущен осенью 2015 года, и он также реагирует на хаки Safari, но ни один из них не отличается от браузера iOS Chrome.
В этом случае вы можете использовать хаки для более поздних версий Safari.
Сначала вы должны попробовать это, поскольку он охватывает текущие версии Safari и только для чистого Safari:
Этот файл работает правильно с Safari 10.1:
/* Safari 7.1+ */
_::-webkit-full-page-media, _:future, :root .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
Чтобы охватить больше версий, 6.1 и выше, в это время вам нужно использовать следующую пару css-хаков. Один для 6.1-10.0 должен идти с одним, который обрабатывает 10.1 и выше.
Итак, вот-вот я разработал для Safari 10. 1+:
Здесь важна двойная медиапрограмма, не удаляйте ее.
/* Safari 10.1+ */
@media not all and (min-resolution:.001dpcm) { @media {
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}}
Попробуйте это, если SCSS или другой набор инструментов имеют проблемы с вложенным медиа-запросом:
/* Safari 10.1+ (alternate method) */
@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) {
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}}
Этот следующий работает для 6.1-10.0, но не 10.1 (обновление в конце марта 2017 года)
Этот хак, который я создал за много месяцев испытаний и экспериментов, объединил несколько других хаков.
ПРИМЕЧАНИЯ: как и выше, двойной запрос СМИ НЕ является случайностью - он исключает многие старые браузеры, которые не могут обрабатывать вложенные запросы. - Недостающее место после одного из "и важно". Это, в конце концов, хак... и единственное, что работает для 6.1 и все более новые версии Safari в это время. Также помните, как указано в комментариях ниже, взлом нестандартный css и должен применяться после фильтра. Фильтры, такие как SASS-двигатели, будут переписывать/отменять или полностью удалять их прямо.
Как упомянуто выше, пожалуйста, проверьте мою тестовую страницу, чтобы увидеть, что она работает как есть (без изменений!)
И вот код:
/* Safari 6.1-10.0 (not 10.1) */
@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0)
{ @media {
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}}
Для более "специфичного для версии" Safari CSS, пожалуйста, продолжайте читать ниже.
/* Safari 11+ */
@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (stroke-color:transparent) {
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}}
Немного измененные работы для 10.1 (только):
/* Safari 10.1 */
@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (not (stroke-color:transparent)) {
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}}
Один для Safari 10.0:
/* Safari 10.0 (not 10.1) */
_::-webkit-:host:not(:root:root), .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
Safari 10.0 (не-iOS-устройства):
/* Safari 10.0 (not 10.1) but not on iOS */
_::-webkit-:-webkit-full-screen:host:not(:root:root), .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
Safari 9 CSS Hacks:
Один для Safari 9.0 и выше:
/* Safari 9+ */
_:default:not(:root:root), .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
а также запрос поддержки:
/* Safari 9+ */
@supports (-webkit-marquee-repetition:infinite) and (object-fit:fill) {
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}
Один для Safari 9.0-10.0:
/* Safari 9.0-10.0 (not 10.1) */
_::-webkit-:not(:root:root), .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
Safari 9 теперь включает обнаружение функций, поэтому мы можем использовать это сейчас...
/* Safari 9 */
@supports (overflow:-webkit-marquee) and (justify-content:inherit)
{
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}
Теперь только для целевых устройств iOS. Как уже упоминалось выше, поскольку Chrome на iOS внедряется в Safari, он, конечно, тоже попадает в этот файл.
/* Safari 9.0 (iOS Only) */
@supports (-webkit-text-size-adjust:none) and (not (-ms-ime-align:auto))
and (not (-moz-appearance:none))
{
.safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}
один для Safari 9. 0+, но не устройства iOS:
/* Safari 9+ (non-iOS) */
_:default:not(:root:root), .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
И один для Safari 9.0-10.0, но не для iOS-устройств:
/* Safari 9.0-10.0 (not 10.1) (non-iOS) */
_:-webkit-full-screen:not(:root:root), .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
Ниже приведены хаки, которые разделяют 6.1-7.0 и 7. 1+ Для получения правильного результата потребовалась комбинация нескольких хаков:
/* Safari 6.1-7.0 */
@media screen and (-webkit-min-device-pixel-ratio:0) and (min-color-index:0)
{
.safari_only {(;
color:#0000FF;
background-color:#CCCCCC;
);}
}
Поскольку я указал, как заблокировать устройства iOS, здесь приведена модифицированная версия Safari 6. 1+ взломать, который нацелен на устройства, отличные от iOS:
/* Safari 6.1-10.0 (not 10.1) (non-iOS) */
@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0)
{ @media {
_:-webkit-full-screen, .safari_only {
color:#0000FF;
background-color:#CCCCCC;
}
}}
Чтобы использовать их:
<div class="safari_only">This text will be Blue in Safari</div>
Обычно [как в этом вопросе] причина, по которой люди спрашивают о хакерах Safari, в основном относится к отделению ее от Google Chrome (опять же НЕ iOS!). Возможно, важно опубликовать альтернативу: как настроить Chrome отдельно от Safari, так что Я предоставляю вам это здесь, если это необходимо.
Вот основные сведения, снова проверьте мою тестовую страницу на множество конкретных версий Chrome, но они охватывают Chrome в целом. В настоящее время Chrome - версия 45, версии Dev и Canary - до версии 47.
Мой старый компилятор медиа-запросов, который я установил в browserhacks, по-прежнему работает только для Chrome 29+:
/* Chrome 29+ */
@media screen and (-webkit-min-device-pixel-ratio:0) and (min-resolution:.001dpcm)
{
.chrome_only {
color:#0000FF;
background-color:#CCCCCC;
}
}
Замечание функции @supports отлично подходит для Chrome 29+, а также... измененная версия той, которую мы использовали для Chrome 28+ ниже. Safari 9, ближайшие браузеры Firefox и браузер Microsoft Edge не подхватываются этим:
/* Chrome 29+ */
@supports (-webkit-appearance:none) and (not (overflow:-webkit-marquee))
and (not (-ms-ime-align:auto)) and (not (-moz-appearance:none))
{
.chrome_only {
color:#0000FF;
background-color:#CCCCCC;
}
}
Раньше Chrome 28 и новее были легко ориентированы. Это тот, который я отправил в браузеры, увидев, что он включен в блок другого кода CSS (первоначально не предназначенный для взлома CSS) и понял, что он делает, поэтому я извлек соответствующую часть для наших целей:
[ПРИМЕЧАНИЕ:] Этот более старый метод теперь просматривает Safari 9 и браузер Microsoft Edge без вышеуказанного обновления. В будущих версиях Firefox и Microsoft Edge добавлена поддержка нескольких кодов -webkit-CSS в их программировании, и как Edge, так и Safari 9 добавили поддержку функции обнаружения @supports. Ранее Chrome и Firefox включали @supports.
/* Chrome 28+, Now Also Safari 9+, Firefox, and Microsoft Edge */
@supports (-webkit-appearance:none)
{
.chrome_and_safari {
color:#0000FF;
background-color:#CCCCCC;
}
}
Блок Chrome версии 22-28 (при необходимости для поддержки более старых версий) также можно настроить с помощью твиста на мои коммандные хаки Safari, которые я опубликовал выше:
/* Chrome 22-28 */
@media screen and(-webkit-min-device-pixel-ratio:0)
{
.chrome_only {-chrome-:only(;
color:#0000FF;
background-color:#CCCCCC;
);}
}
NOTE: If you are new, change class name but leave this the same-> {-chrome-:only(;
Как и хакеры для форматирования CSS Safari выше, их можно использовать следующим образом:
<div class="chrome_only">This text will be Blue in Chrome</div>
Поэтому вам не нужно искать его в этом посте, вот моя тестовая страница:
https://browserstrangeness.bitbucket.io/css_hacks.html#webkit
[Или зеркало]
https://browserstrangeness.github.io/css_hacks.html#webkit
На тестовой странице также есть много других, в частности, на основе версий, чтобы помочь вам различать Chrome и Safari, а также множество хаков для браузеров Firefox, Microsoft Edge и Internet Explorer.
ПРИМЕЧАНИЕ. Если что-то не работает для вас, сначала проверьте тестовую страницу, но укажите пример кода и WHICH-взломать, что вы пытаетесь помочь кому-либо.