Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

M.S.S

Rolagem Suave + Mobile + Scrolling + META + Viewport

Recommended Posts

Boa tarde,

 

Eu estou com dor de cabeça com a altura da viewport de dispositivos mobile e já tentei todo tipo de hack do bem para evitar que o conteúdo trema na rolagem.

 

O problema não ocorre em PC nos navegadores IE, Firefox, Chrome, Edge, Safari e Opera nem no MAC nos navegadores Chrome, Safari e Firefox.

 

Mas como quase todos os navegadores mobile têm um redimensionamento automático com a rolagem da página você acaba tendo problema com recursos como o “top:100%” com “position:absolute” na rolagem do conteúdo (o navegador mais problemático é o Chrome de IOS).

 

Isso ocorre também com background, mesmo com recurso o “background-cover: cover;” e o “background-size: cover;” configurados (detalhe que eu configurei os prefixos -webkit-, -moz-, -ms-, -o- e -vendor-).

 

Segue a META que eu estou usando (acredito que o problema seja em parte por causa dela, mas preciso dela para que a resolução fique adequada para dispositivos mobile)

 

Estou usando essa META no site em que estou desenvolvendo, pois quero que o usuário não de zoom no site (por causa do layout).

<meta name="viewport" content="initial-scale=1.0,user-scalable=no,maximum-scale=1">

Mas testei a mesma META com "user-scalable=yes" e não adiantou.

<meta name="viewport" content="initial-scale=1.0,user-scalable=yes,maximum-scale=1">

Segue meu código CSS:

#texto_sombra {
font-family:"Trebuchet MS", tahoma,  verdana, arial;
font-size:35px;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.80);
text-align:center;
color:#FFFFFF;
bottom: 80px;
display: block;
left: 50%;
position: absolute;
width: 400px;
z-index:1 !important;
}

#container_pai {
top:100%;
width:80%;
margin-left:10% !important;
margin-right:10% !important;
height:600px;
background:#fff;
position:absolute; 
padding:0px; 
display:block; 
z-index:20 !important;
}

#backgroup {
background: url(http://wallpaper.ultradownloads.com.br/118363_Papel-de-Parede-Campo-Aberto--118363_1600x1200.jpg);
background-position: center center;
background-repeat: no-repeat;
position:fixed;
z-index:-1;
display:block !important;
width: 100%;
height: 100%;
min-width:100%;
min-height:100% !important;
right:0px;
bottom:0px !important;
margin: 0px;
overflow:hidden;
  
/*AJUSTE*/
-webkit-background-cover: cover;
-vendor-background-cover: cover;
-moz-background-cover: cover;
-ms-background-cover: cover;
-o-background-cover: cover;
background-cover: cover;
/*///////////////////////////////*/	
-webkit-background-size: cover;
-vendor-background-size: cover;
-moz-background-size: cover;
-ms-background-size: cover;
-o-background-size: cover;
background-size: cover;
/*AJUSTE*/
}

Segue meu código HTML:

<div id="texto_sombra">Titulo da Página</div>
<div id="container_pai"></div>
<div id="backgroup"></div>

Visão do código no jsfiddle:

 

https://jsfiddle.net/mauriansoares/xy01xL7z/

 

Se alguém puder ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites
Na verdade o que provoca esse "efeito" é a barra de endereço, que ao descer o scroll (celular) ela é oculta, fazendo com que a altura do browser aumente alguns pixels (porque ocupa o espaço que antes tinha a barra de endereço), e ao subir ela aparece novamente, diminuindo a altura.


Não sei se tem como resolver isto por CSS, mas você poderia usar JavaScript... quando a página for carregada, você pega a altura da janela e coloca ela fixa (em px) no elemento... aí ela não altera mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei fazer isso.

Criei uma DIV que recebia o height via uma variável em javascript.
Chegue a colocar animações de CSS via javascript para suavizar o redimensionamento da Viewport por causa da barra de endereço.
Mas não consegui resolver o problema.

Segue o meu código:

 

Javascript:

<script type="text/javascript">
function DivAltura(id) {
	
var stage = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;
	
document.getElementById("blocoLivre").style.height = stage+"px";
document.getElementById("blocoLivre").style.WebkitTransition = "all 0.2s"; // Code for Safari 3.1 to 6.0
document.getElementById("blocoLivre").style.transition = "all 0.2s"; 
}
</script>

HTML:

<body onLoad="DivAltura('blocoLivre')" onresize="DivAltura('blocoLivre')">


<div id="blocoLivre"></div>


// Conteúdo do site

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um detalhe importante, o problema não aparece no navegador padrão do Android e no Opera Coast.
No safari ele é muito sutil, pois sua Viewport não tem um redimensionamento grande.

Já no Chrome e no Firefox o problema é mais evidente.

 

Dispositivos em que eu fiz testes:

Ipad Air 9.7″ com IOS 9

Iphone 4 com IOS 7
Tablet Samsung Galaxy Tab4 10.1″ com android 4.4

Compartilhar este post


Link para o post
Compartilhar em outros sites

M.s.s,

Quando é criado a estrutura de um site e você necessita da utilização de um JS para corrigir problemas, então a elaboração do HTML / CSS (Responsivo) foi feita de forma incorreta. A ideia de um site responsivo é que as coisas se ajustem de forma que encaixem na viewport do dispositivo, nada mais além disso.

Caso queira fazer um teste, inicie um projeto com Bootstrap, monte-o sem editar nenhum documento css e veja se o mesmo problema ocorre nos dispositivos em questão.

Aconselho ler os seguintes sites:

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que a tela treme com o "TOP:100%" na hora que a Viewport se ajusta, não há uma transição suave.

O mesmo acontece se você usar um javascript para forçar uma DIV a ter 100% de height via variável que passa o valor em pixel.

Acho que o problema em parte é a meta tag.

<meta name="viewport" content="initial-scale=1.0,user-scalable=yes,maximum-scale=1">

Detalhe, que a mesma página não treme se eu não usar o "TOP:100%" ou Script para forçar o height em uma DIV para esconder o conteúdo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
    • Por Felipe Medeiros
      Bom, criei um tema filho e o que aprendi é que para alterar qualquer coisa do tema filho eu preciso copiar o arquivo do tema pai o colocar dentro da pasta do tema filho.
       
      No meu caso, estou usando o tema "Astra" bem famosinho. O arquivo css que quero modificar não está dentro da pasta do tema pai, está em "wp-content/uploads/uag-plugin/assets/0/uag-css-10.css" sendo que o diretorio do tema pai é "wp-content/themes/Astra"
       
      O problema é o seguinte, preciso modificar a barra de pesquisa da pagina inicial, porem o inspetor de elementos do chrome ta acusando que esse arquivo é o responsavel por estilizar a barra de pesquisa. Será que isso tem a ver com "Cache de objetos", eu sei que o plugin liteSpeed Cache, AMP, Rank Math, todos eles tem essas paradas de criar arquivos css e js para tornar o site mais rapido.
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por FabianoSouza
      Gente, tenho as TRs da minha tabele já com os cantos arredondados (através das TDs first-child e last-child). Fiz dessa forma porque desconheço uma maneira de aplicar radius diretamente na TR.
       
      O problema é que ao colorir a TR com o over do CSS, perde-se a formatação do border radius das TDs e exibe a TR com os cantos quadrados.
       
      Preciso que os cantos fiquem arredondados mesmo ao passar o mouse sobre a TR.
       
      Como resolvo isso?
    • Por viniciusfroner
      Tenho um pequeno sistema de envio, estou utilizando o "PHPMailerAutoload". Após o usuário inserir as informações e clicar em enviar a mensagem é enviada com sucesso, o único problema é que apresentado ao usuário a seguinte mensagem:
      if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } Acabei procurando e não achei como posso remover a mensagem "Error:"
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.