Ir para conteúdo

Arquivado

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

Evair Peterson

Como centralizar uma IMG na horizontal no interior de DIV contêiner?

Recommended Posts

Boa noite.

Estou montando um layout de 3 colunas, no qual as colunas esquerda e direita devem ter larguras fixas de 300px e a coluna central se ajustar no que sobra. Quanto ao layout está tudo OK, exatamente como preciso. Porém, no interior da DIV central, coloquei uma IMG, a qual quero que sempre ocupe 100% da altura dessa DIV e que ela fique centralizada no horizontal, não importando se a largura da DIV na qual esta IMG está contida tenha largura maior ou menor do que a largura da própria IMG. Quanto a ocupar 100% da altura está OK, não importa o como eu redimensione a janela do browser ela está se auto-ajustando como desejado. Porém, ela não está ficando centralizada na horizontal, como é o objetivo. Ela está ficando sempre alinhada à esquerda, exceto quando a largura da DIV é maior que a largura da IMG, aí neste caso sim a IMG está ficando perfeitamente centralizada da DIV contêiner, como é o objetivo. Agora, quando a largura da DIV é menor do que a largura da IMG, a IMG está ficando alinhada à esquerda, cortando partes da imagem somente no seu lado direito.

Estou fazendo os testes em um desktop com resolução de 1920x1080 e a imagem que estou usando na IMG tem 1680x945px.
Seguem os códigos HTML e CSS:
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!doctype html>
<html lang="pt-br">
<head>
    <link type="text/css" rel="stylesheet" href="code/css/estudo.css">
</head>
 
<body>
    <div id="main">
        <div id="viewport_left" class="viewports">
        </div>
        <div id="viewport_center" class="viewports">
            <img id="imagem_teste" src="imagem_teste_01.jpg">
        </div>
        <div id="viewport_right">
        </div>
    </div>
    <div id="footer">
    </div>
</body>
</html>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
* {
    margin: 0;
    padding: 0;
    text-align: center;
    overflow: hidden;
}
#main {
    width: 100%;
    margin: 0;
}
#viewport_left {
    min-height: calc(100vh - 25px);
    margin-bottom: 25px;
    width: 324px;
    background-color: #333333;
    position: fixed;
    left: 0;
    top: 0;
}
#viewport_center {
    min-height: calc(100vh - 25px);
    width: calc(100vw - 650px);
    margin-bottom: 25px;
    border-left: 1px solid #FFFFFF;
    border-right: 1px solid #FFFFFF;
    background-color: red;
    position: absolute;
    left: 50%;
    top: 50%;
        margin-left: calc(((100vw - 648px) / 2)* -1);
        margin-top: calc((100vh / 2)* -1);
    display: table;
    overflow: hidden;
}
#imagem_teste {
    max-height: calc(100vh - 25px);
    position: absolute;
    width: auto;
    height: auto;
}
#viewport_right {
    min-height: calc(100vh - 25px);
    margin-bottom: 25px;
    width: 324px;
    background-color: #333333;
    position: fixed;
    right: 0;
    top: 0;
}
#footer {
    position: fixed;
    bottom: 0;
    left: 0;
    height: 24px;
    width: 100%;
    background-color: #333333;
    border-top: 1px solid #FFFFFF;
    text-align: center;
    font-family: Verdana, Geneva, sans-serif;
    font-size: 12px;
    color: #FFFFFF;
}


Alguém sabe como posso corrigir este problema?
Desde já agradeço a toda e qualquer ajuda e colaboração.

Grato, Evair Peterson.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • 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 Giovanird
      Olá a todos!
      tenho varias divs com o mesmo ID e nome de classe. Preciso que a cor da div seja conforme uma escala de valores.
      Estou tentando pegar o valor pelo nome da classe, pois as divs possuem o mesmo id e não tive sucesso. Segue script:
      <div class="planos" id="1" value="74">74</div> <div class="planos" id="1" value="29">29</div> <div class="planos" id="1" value="55">55</div> <div class="planos" id="1" value="74">74</div> <div class="planos" id="1" value="63">63</div> <div class="planos" id="1" value="55">55</div> <script type="text/javascript"> var valueElement = document.getElementsByClassName('.planos').getAttribute('value'); console.log(valueElement); if (valueElement >= "70") { document.getElementsByClassName('.planos').style.backgroundColor == '#4caf50'; } else if (valueElement >= "50" && valueElement <= "69") { document.getElementsByClassName('.planos').style.backgroundColor == '#ffbc00'; } else { document.getElementsByClassName('.planos').style.backgroundColor == '#f44336'; } </script>  
       
    • Por Sapinn
      Opa galera. Fiz um preview de imagens através de um input e ele está funcionado bem agora como eu faço para fazer uma mesmo preview em inputs diferentes. Quando coloco mais de um input e seleciona arquivos ele sempre mostra no primeiro input.
      Meu codigo:
       
      CSS: 
      *{     padding: 0;     margin: 0;     box-sizing: border-box;     font-family: "Rubik",sans-serif; } body{     background-color: #f5f8ff; } .container{     background-color: #ffffff;     width: 60%;     min-width: 450px;     position: relative;     margin:  50px auto;     padding: 50px 20px;     border-radius: 7px;     box-shadow: 0 20px 35px rgba(0,0,0,0.05); } input[type="file"]{     display: none; } label{     display: block;     position: relative;     background-color: #025bee;     color: #ffffff;     font-size: 18px;     text-align: center;     width: 300px;     padding: 18px 0;     margin: auto;     border-radius: 5px;     cursor: pointer; } .container p{     text-align: center;     margin: 20px 0 30px 0; } #images{     width: 80%;     position: relative;     margin: auto;     display: flex;     justify-content: space-evenly;     gap: 20px;     flex-wrap: wrap; } figure{     width: 45%; } img{     width: 100%; } figcaption{     text-align: center;     font-size: 2.4vmin;     margin-top: 0.5vmin; }  
      HTML:
         <div class="container">         <input type="file" id="file-input" accept=".png, .jpeg, .jpg, .pdf" onchange="preview(this)" multiple>         <label for="file-input">             <i class="fas fa-upload"></i>   Escolha seus arquivos         </label>         <p id="num-of-files">Nenhum arquivo escolhido</p>         <div id="images"></div>     </div>     <div class="container">         <input type="file" id="file-input" title="2" accept=".png, .jpeg, .jpg, .pdf" onchange="preview(this)" multiple>         <label for="file-input">             <i class="fas fa-upload"></i>   Escolha seus arquivos         </label>         <p id="num-of-files">Nenhum arquivo escolhido</p>         <div id="images"></div>     </div>  
      JAVASCRIPT:
      let fileInput = document.getElementById("file-input"); let inputFile = document.querySelectorAll("#file-input"); let imageContainer = document.getElementById("images"); let numOfFiles = document.getElementById("num-of-files"); function preview(input){     imageContainer.innerHTML = "";     numOfFiles.textContent = `${fileInput.files.length} Arquivos selecionados`;             for(i of fileInput.files){         let reader = new FileReader();         let figure = document.createElement("figure");         let figCap = document.createElement("figcaption");         figCap.innerText = i.name;         figure.appendChild(figCap);         reader.onload=()=>{             let img = document.createElement("img");             if(figCap.innerText.split('.').pop() == 'pdf'){                 img.setAttribute("src","pdf.png");             }else{                 img.setAttribute("src",reader.result);             }             figure.insertBefore(img,figCap);         }         imageContainer.appendChild(figure);         reader.readAsDataURL(i);     } }  
    • Por GOD
      Quero um código div ou qualquer outra forma, para atingi esse resultado do link
       https://drive.google.com/file/d/0B8Ssi9zuKdQWMExWeVpGUXN0MlRsUzdmdGRuTFl2eU1yejB3/viewocal
       
      Para ficar nesse local.
      https://drive.google.com/file/d/0B8Ssi9zuKdQWeGZSSnVBaFBxM1FUN1hEeWdrRzhTNWI0Q01Z/view
       
      Meu objetivo é que em cada quadro da div, fique uma noticia de um site especifico, que pretendo colocar através de plugin rss.
       
       
      Enfim espero uma ajuda sobre como posso fazer isso
       
       
    • Por clovis.sardinha
      Pessoal, não tenho certeza se coloco a dúvida aqui ou no html. Envolve os dois. 
      Eu tenho um site muito antigo, php 5.2, e resolvi mudar a página principal colocando um efeito parallax.
      No servidor local o site roda normalmente, mas no servidor da localweb as imagens do parallax não aparecem.
      a página mostrada é esta:
      <div class="container-fluid"> <!-- começo do parallax --> <div class="caixa1"> <div class="conteudo-titulo"> <!-- <span class="titulo">TECNOCLEAN - SEGURANÇA E EFICIÊNCIA</span> --> </div> </div> <div class="conteudo"> <h3>A EMPRESA</h3> <p style="width: 80%; margin: auto; text-align: justify;"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus gravida dolor sed mattis mollis. Morbi sodales euismod rhoncus. Suspendisse potenti. Integer hendrerit vitae lectus at feugiat. Quisque libero neque, imperdiet a est congue, elementum ultrices diam. Sed ut felis scelerisque, volutpat justo ut, congue quam. Ut non vestibulum erat, vel semper dolor. Nulla facilisi. Sed convallis at lacus quis venenatis..<br> </p> </div> <div class="caixa2"> <div class="conteudo-titulo" > <!-- <span class="titulo">NOSSO DIFERENCIAL</span> --> </div> </div> <div > <div> <ul class="list-group list-group-flush text-center font-weight-bold"> <li class="list-group-item"><h3>Tradição</h3> 26 anos de experiência</li> <li class="list-group-item"><h3>Confiabilidade</h3> mais de mil clientes</li> <li class="list-group-item"><h3>Segurança</h3> técnica e equipamentos</li> <li class="list-group-item"><h3>Garantia</h3> produtos de qualidade</li> <li class="list-group-item"><h3>Rapidez</h3> equipe especializada</li> </ul> </div> </div> <div class="caixa3"> <div class="conteudo-titulo"> <!-- <span class="titulo">CLIENTES</span> --> </div> </div> <div class="caixa4"> <div class="conteudo-titulo"> <!-- <span class="titulo">EQUIPAMENTOS</span> --> </div> </div> </div> </div> </div> O Css é este:
      /* Efeito Parallax -------------------------------*/ .caixa1, .caixa2, .caixa3, .caixa4 { position: relative; height: 100%; opacity: 0.9; background-repeat: no-repeat; background-size: cover; background-position: center; background-attachment: fixed; } .caixa1 { background-image:url(../imagens/principal.png); } .caixa2 { background-image: url(../imagens/insetos.png); } .caixa3 { background-image: url(../imagens/logos/clientes.png); } .caixa4 { background-image: url(../imagens/equipamentos.png); } .conteudo-titulo { position: absolute; left: 0; top: 45%; width: 100%; text-align: center; } .conteudo-titulo span.titulo { color: #fff; background-color: #111; padding: 18px; font-size: 25px; letter-spacing: 5px; text-transform: uppercase; }  
      Coloquei o arquivo com a estrutura do site e o erro que aparece na url. (um css que não deveria aparecer e dá página não encontrada)
      Coisa interessante: tanto faz colocar ../imagens/foto.png  ou imagens/foto.png e funciona no local e não no servidor.
      Se alguém tiver alguma dica para eu resolver ou testar este erro, agradeço.
       
       

       

×

Informação importante

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