Fui encarregado de atualizar um site para torná-lo responsivo e aparecer corretamente em smartphones. Infelizmente, o site em sua forma atual não é muito fácil de trabalhar - não posso simplesmente mudar o CSS.
É considerado ruim detectar o tamanho do navegador e fazer alterações no CSS com o jQuery?
Por exemplo:
if ($(window).width() < 960) {
//make heaps of CSS changes
}
css
mobile
jquery
optimization
responsive-webdesign
MeltingDog
fonte
fonte
Respostas:
Certo. Obviamente, seria melhor usar CSS sozinho, mas se você não puder, use o que possui. Faça o máximo possível com CSS e use JS, conforme necessário. Não sei por que você não pode alterar o CSS existente, mas pode adicionar uma folha de estilos com JS.
Fonte: http://christian-fei.com/add-stylesheets-after-the-head-using-javascript/
depois enlouqueça com as consultas CSS / mídia.
Ou com jQuery:
Eu fiz 'skins' responsivas, onde algumas coisas simplesmente não eram possíveis sem alterar o DOM. Se você não tem acesso ao HTML, a manipulação do JS DOM às vezes é a única resposta.
EDIT:
Dependendo dos requisitos visuais da sua versão de tela pequena, você pode se surpreender com a distância que esse snippet CSS levará ao longo do caminho para 'dispositivos móveis'.
Se o desenvolvedor original do CSS gostava demais
!important
e você não pode acessar o HTML, pode usar o jQuery / JS para adicionar um ID ao corpo ou ao contêiner de alto nível e adicioná-lo ao seu seletor.fonte
Eu diria que tente usar as consultas de mídia primeiro. Um método que achei mais fácil ao lidar com um design originalmente originalmente para desktop era o seguinte:
Comece com duas folhas de estilo separadas. Um para o novo design responsivo e o outro para a versão antiga da área de trabalho:
Todos os estilos antigos podem estar contidos no desktop.css . Enquanto isso, você pode começar do zero no mobile.css . Você pode achar que pode criar um bom layout de coluna única nesse CSS móvel que também funciona para tablets.
Essa abordagem permite que você tenha um novo começo e possa criar estilos específicos apenas para celulares e tablets e não ter os estilos de desktop aparecendo e substituindo coisas. Você pode ocultar / mostrar / posicionar elementos conforme necessário apenas para dispositivos móveis.
Se você realmente precisar alterar o código da área de trabalho para fazê-lo funcionar com dispositivos móveis e computadores, refatorar a marcação. Como alternativa, se você achar que não pode refatorar realisticamente o HTML para as versões responsiva e móvel, pode colocar uma classe no código da área de trabalho, por exemplo, classe "desktop" e usar CSS na versão móvel para ocultá-la. Em seguida, escreva um novo HTML para essa seção e dê a
class="mobile"
. Em seguida, estilize- o de acordo com mobile.css e oculte-o em desktop.css .fonte
Eu trabalhei em um site que usava esse método e tive problemas com a rotação da tela em dispositivos móveis. Como o JavaScript detectará apenas uma vez no carregamento da página, se o usuário girar o dispositivo, ele não será expandido para toda a largura da mesma forma que nas consultas de mídia. Era mais fácil para mim naquele momento apenas mudar para CSS, mas talvez um especialista em JS saiba se existe uma maneira de detectar uma alteração na largura da janela de exibição. Parece que deveria haver uma maneira com o AJAX, mas eu estaria disposto a apostar que qualquer coisa que você encontrasse seria um exagero no desempenho, como descreve a megasteve.
fonte
A capacidade de resposta e "aparecem corretamente em smartphones" são tarefas completamente diferentes.
Não deve ser a principal fonte de estilo. Esse é o trabalho do CSS. No entanto, os dois podem ser usados juntos de forma eficaz. Em um exemplo simples, o texto pode ter um estilo diferente, dependendo dos resultados de alguma ação. O jQuery pode ser usado para alterar a classe definida pelo CSS.
fonte
Costumávamos usar a popular estrutura 960.gs css para nossos sites.
Queríamos torná-lo responsivo.
Alguém havia feito um plug-in responsivo baseado em JS para os 960 gs, então pensamos em feno por que não apenas usá-lo, pois não precisaríamos fazer nenhuma alteração nos modelos estruturais do site.
Funcionou, mas estava atrasado na maioria dos navegadores, incluindo os bons. Você normalmente recebe um 'flash de conteúdo sem estilo' que varia muito dependendo da complexidade da página.
Apesar das soluções JS funcionarem, elas não são ideais, consultas de mídia CSS 3 são a melhor opção, se possível. No final, refizemos nossos modelos de sites usando o Twitter Bootstrap, o que era muito bom para nossas necessidades.
Embora possa ser interessante fazer atalhos, muitas vezes acaba sendo mais demorado / doloroso a longo prazo.
fonte