Estou tentando encontrar um css hack para apenas safari NÃO chrome, eu sei que estes são os dois navegadores webkit, mas estou tendo problemas com alinhamentos div no chrome e safari, cada um é exibido de forma diferente.
Eu tenho tentado usar isso, mas isso afeta o cromo também,
@media screen and (-webkit-min-device-pixel-ratio:0) {
#safari { display: block; }
}
alguém sabe de outro que se aplica apenas ao safari, por favor?
Respostas:
NOTA: Filtros e compiladores (como o mecanismo SASS) esperam código padrão 'entre navegadores' - NÃO hacks CSS como esses, o que significa que eles reescreverão, destruirão ou removerão os hacks, pois não é isso que os hacks fazem. Muito disso é um código não-padrão que foi cuidadosamente desenvolvido para segmentar apenas versões de navegador único e não pode funcionar se elas forem alteradas. Se você deseja usá-lo com esses, você deve carregar o CSS hack escolhido depois de qualquer filtro ou compilador . Isso pode parecer um dado, mas tem havido muita confusão entre as pessoas que não percebem que estão desfazendo um hack, executando-o através de um software que não foi projetado para esse fim.
O Safari mudou desde a versão 6.1, como muitos notaram.
Observe: se você está usando o Chrome [e agora também o Firefox] no iOS (pelo menos nas versões 6.1 do iOS e mais recentes) e se pergunta por que nenhum dos hacks parece separar o Chrome do Safari, é porque a versão iOS do Chrome está usando o mecanismo do Safari. Ele usa hacks do Safari e não os do Chrome. Saiba mais sobre isso aqui: https://allthingsd.com/20120628/googles-chrome-for-ios-is-more-like-a-chrome-plated-apple/ O Firefox para iOS foi lançado no outono de 2015. Ele também responde a o Safari Hacks, mas nenhum do Firefox, igual ao iOS Chrome.
TAMBÉM: Se você tentou um ou mais hacks e tem problemas para fazê-los funcionar, publique um código de exemplo (melhor ainda, uma página de teste) - o hack que você está tentando e que navegador (s) (versão exata!) Você está usando o dispositivo que você está usando. Sem essas informações adicionais, é impossível para mim ou qualquer outra pessoa aqui ajudá-lo.
Geralmente, é uma correção simples ou um ponto e vírgula ausente. Com CSS, geralmente é isso ou um problema de qual ordem o código está listado nas folhas de estilo, se não apenas erros de CSS. Por favor, teste os hacks aqui no site de teste. Se funcionar lá, significa que o hack realmente está funcionando para a sua instalação, mas é outra coisa que precisa ser resolvida. As pessoas aqui realmente gostam de ajudar, ou pelo menos apontam você na direção certa.
O site de teste:
https://browserstrangeness.bitbucket.io/css_hacks.html#safari
E ESPELHO!
https://browserstrangeness.github.io/css_hacks.html#safari
Aqui, fora do caminho, existem hacks para você usar em versões mais recentes do Safari.
Você deve tentar este primeiro, pois abrange as versões atuais do Safari e é apenas puro Safari:
Este ainda funciona corretamente com o Safari 13 (início de 2020):
Para cobrir mais versões, 6.1 e acima, neste momento você precisa usar o próximo par de hacks css. O do 6.1-10.0 é compatível com o que lida com 10.1 e superior.
Então, aqui está uma que eu trabalhei para o Safari 10.1+:
A consulta de mídia dupla é importante aqui, não a remova.
Tente este se o SCSS ou outro conjunto de ferramentas tiver problemas com a consulta de mídia aninhada:
Este próximo funciona para 6.1-10.0, mas não para 10.1 (atualização de final de março de 2017)
Esse hack que eu criei durante muitos meses de testes e experimentações combinando vários outros hacks.
OBSERVAÇÕES: como acima, a consulta de mídia dupla NÃO é um acidente - exclui muitos navegadores mais antigos que não conseguem lidar com o aninhamento de consultas de mídia. - O espaço que falta depois de um dos 'e' também é importante. Afinal, isso é um hack ... e o único que funciona para 6.1 e todas as versões mais recentes do Safari no momento. Também esteja ciente, conforme listado nos comentários abaixo, o hack é um CSS não padrão e deve ser aplicado DEPOIS de um filtro. Filtros como mecanismos SASS reescrevem / desfazem ou o removem completamente.
Como mencionado acima, verifique minha página de teste para ver como está funcionando (sem modificações!)
E aqui está o código:
Para obter mais CSS do 'versão específica' do Safari, continue lendo abaixo.
Um para o Safari 11.0:
Um para o Safari 10.0:
Trabalhos ligeiramente modificados para 10.1 (apenas):
Safari 10.0 (dispositivos não iOS):
Hacks CSS do Safari 9:
Um simples suporte à consulta de recurso hack para o Safari 9.0 e posterior:
Um simples corte de sublinhado para o Safari 9.0 e posterior:
Outro para o Safari 9.0 e superior:
e outros recursos de suporte também consultam:
Um para o Safari 9.0-10.0:
O Safari 9 agora inclui detecção de recursos para que possamos usá-lo agora ...
Agora, segmente apenas dispositivos iOS. Como mencionado acima, como o Chrome no iOS está enraizado no Safari, é claro que também atinge esse.
um para o Safari 9.0 ou superior, mas não para dispositivos iOS:
E um para o Safari 9.0-10.0, mas não para dispositivos iOS:
Abaixo estão os hacks que separam 6.1-7.0 e 7.1+. Eles também exigiam uma combinação de vários hacks para obter o resultado certo:
Desde que eu apontei o caminho para bloquear dispositivos iOS, eis a versão modificada do hack do Safari 6.1+ que tem como alvo dispositivos não iOS:
Para usá-los:
Geralmente, [como nesta pergunta], a razão pela qual as pessoas perguntam sobre os hackers do Safari é principalmente a referência a separá-lo do Google Chrome (novamente NÃO para iOS!). Pode ser importante publicar a alternativa: como direcionar o Chrome separadamente do Safari também, Estou providenciando isso para você aqui, caso seja necessário.
Aqui estão os princípios básicos, verifique novamente minha página de teste para várias versões específicas do Chrome, mas elas cobrem o Chrome em geral. O Chrome é a versão 45, as versões Dev e Canary estão com a versão 47 no momento.
Minha antiga combinação de consulta de mídia que eu coloquei no navegador hacks ainda funciona apenas para o Chrome 29 ou superior:
Uma consulta ao recurso @supports também funciona bem para o Chrome 29+ ... uma versão modificada da que estávamos usando para o Chrome 28+ abaixo. O Safari 9, os próximos navegadores Firefox e o Microsoft Edge não são escolhidos com este:
Anteriormente, o Chrome 28 e mais recentes eram fáceis de segmentar. Este é um que eu enviei para o browserhacks depois de vê-lo incluído em um bloco de outro código CSS (não originalmente destinado a hackear CSS) e percebi o que ele faz, então extraí a parte relevante para nossos propósitos:
[OBSERVAÇÃO:] Este método mais antigo abaixo mostra agora o Safari 9 e o navegador Microsoft Edge sem a atualização acima. As próximas versões do Firefox e Microsoft Edge adicionaram suporte a vários códigos CSS -webkit- em sua programação, e o Edge e o Safari 9 adicionaram suporte à detecção de recursos do @supports. Chrome e Firefox incluíram @supports anteriormente.
O bloco das versões 22-28 do Chrome (se necessário para suportar versões mais antigas) também é possível segmentar com um toque nos meus hacks combinados do Safari que publiquei acima:
Como os hacks de formatação CSS do Safari acima, eles podem ser usados da seguinte maneira:
Para que você não precise procurá-lo neste post, aqui está minha página de teste ao vivo novamente:
https://browserstrangeness.bitbucket.io/css_hacks.html#safari
[Ou o espelho]
https://browserstrangeness.github.io/css_hacks.html#safari
A página de teste também tem muitas outras, especificamente baseadas em versão, para ajudá-lo a diferenciar ainda mais o Chrome e o Safari, além de muitos hacks nos navegadores Firefox, Microsoft Edge e Internet Explorer.
NOTA: Se algo não funcionar para você, verifique primeiro a página de teste, mas forneça um código de exemplo e QUALQUER hack que você está tentando que alguém o ajude.
fonte
Existe uma maneira de filtrar o Safari 5 ou superior no Chrome:
fonte
Apenas Sarari
fonte
:not(:root:root)
seletor é inválido de acordo com a especificação CSS Selectors 3 (na qual:not()
pode conter apenas um seletor simples, ou seja, um seletor de tipo ou um ID ou uma classe ou uma pseudo-classe), mas completamente válido de acordo com o CSS Selectors 4 (onde:not()
aceita a lista de seletores). É verdade que atualmente apenas o Safari entende a sintaxe do CSS Selectors 4, mas esta solução não é à prova de futuro.Este hack 100% funciona apenas para o safari 5.1-6.0. Acabei de testar com sucesso.
fonte
Para aqueles que desejam implementar um hack para o Safari 7.0 e abaixo, mas não para 7.1 e acima - use:
fonte
Substitua sua turma em (.myClass)
/ * Somente Safari * / .myClass: not (: root: root) {
enter code here
}fonte
A propósito, para qualquer um de vocês que só precisa segmentar o Safari em celulares, basta adicionar uma consulta de mídia a este hack:
E não esqueça de adicionar a classe .safari_only ao elemento que você deseja segmentar, exemplo:
fonte
Eu gosto de usar o seguinte método:
fonte
Ao usar esse filtro somente para safari, eu poderia segmentar o Safari (iOS e Mac), mas excluir o Chrome (e outros navegadores):
fonte
Etapa 1: use https://modernizr.com/
Etapa 2: use a classe html .regions para selecionar apenas o Safari
O Modernizr adicionará classes html ao DOM com base no que o navegador atual suporta. O Safari suporta regiões http://caniuse.com/#feat=css-regions, enquanto outros navegadores não (ainda assim). Este método também é muito eficaz na seleção de diferentes versões do IE. Que a força esteja com você.
fonte
oi eu fiz isso e funcionou para mim
fonte
Nota: Se apenas o iOS for suficiente (se você estiver disposto a sacrificar a área de trabalho do Safari), isso funcionará:
fonte
Você pode usar um hack de consulta de mídia para selecionar o Safari 6.1-7.0 de outros navegadores.
Isenção de responsabilidade: este hack também tem como alvo versões antigas do Chrome (antes de julho de 2013).
fonte
Isso funciona:
fonte
No final, uso um pouco de JavaScript para alcançá-lo:
no CSS, para direcionar o mecanismo do navegador Apple, o seletor será:
fonte
https://stackoverflow.com/a/17637937/3174065 , é respondida aqui, embora esse método use algum JS. se usado, certifique-se de colocar os js no rodapé, o corpo deverá estar totalmente carregado para que ele seja acionado corretamente; quando colocado na cabeça, ele erro porque dispara antes do corpo ser carregado.
Em seguida, ele adiciona uma classe .safari ao corpo, mas apenas no safari, facilitando a segmentação do css.
fonte
Está trabalhando 100% no safari .. tentei
fonte
Eu testei e funcionou para mim
fonte