7
respostas

Position não funciona

A propriedade position: fixed; não está funcionando no Chrome e nem no Firefox, mas funciona no IE 11

Segue o CSS

.foto-home {
    height: 200px;
}
.saudacao p {
    font-size: 1.5em;
    color: #99A;
    line-height: 1;
    padding: 2em;
}
.saudacao-inicio {
    font-size: 3em;
    color: #889;
}
.saudacao-ultima-linha {
    text-align: right;
    display: block;
}
.saudacao strong {
    font-size: 2em;
    color: #000;
}
.saudacao em {
    color: #851944;
    font-size: 4em;
    transform: rotate(-5deg) skew(-10deg);
    display: inline-block;
}
.botao-index {
    font-size: 1.25em;
    background-color: #851944;
    color: #FFF;
    padding: .5em;
    border: .2em solid black;
    width: 40ch;
    margin: 2em auto;
    display: block;
    text-align: center;
}
.secao-inicio {
    padding: 2em;
}
.secao-inicio h2 {
    font-size: 3em;
    text-transform: uppercase;
    margin-bottom: .5em;
}
.trabalhos {
    background-color: #3C1D3D;
    border-top: .5em solid #000;
    border-bottom: .5em solid #000;
}
.trabalhos h2 {
    color: #FFF;
}
.trabalhos ul {
    overflow: hidden;
    border: .5em solid black;
}
.trabalhos li {
    float: left;
    width: 33.333%;
}
.trabalhos img {
    width: 100%;
    display: block;
}
.blog {
    background-color: #999;
    position: relative;
    color: #FFF;
    border-bottom: .5em solid #851944;
}
.blog small {
    position: relative;
    top: -2em;
}
.blog li {
    width: 30%;
}
.blog li a {
    color: #FCF;
    padding: .5em;
    display: block;
}

footer .rodape-pagina {
    background-color: #000;
    color: #FFF;
    padding: 2em;
    color: #F2FFFC;
    padding: 1em;
    clear: both;
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    box-sizing: border-box;
}

footer .rodape-pagina h2 {
    font-size: 3em;
}
footer .rodape-pagina a {
    color: #F99;
}

main {
    width: 100%;
    padding-bottom: 0;
    float: none;
}


html, body {
     height: 100%;
     overflow-x: hidden;
}

body {
   perspective: 6px;
   perspective-origin: 50% 160px;  
}

.palavras-home, .titulo-principal {
    transform-style: preserve-3d;
}

.palavra-home {
    font-family: "Shadows Into Light", cursive;
    font-weight: bold;
    color: #D5447E;
    position: absolute;

}
/*Corrigir bug do palavra na perspectiva*/
.titulo-principal ul {
  perspective: 18px;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
/*Fim*/

.palavras-home li {
  font-size: 400%;
}

.eficiencia {
    top: 50%;
    left: 60%;
    transform: translate(-50%,-50%) rotate(-5deg) translateZ(4px) scale(0.25);
    opacity: .3;
}

.boas-praticas {
    top: 70%;
    left: 20%;
    transform: translate(-50%, -50%) rotate(10deg) translateZ(1px) scale(0.25);
    opacity: .3;
}

.codigo-limpo {
    top: 45%;
    left: 25%;
    transform: translate(-50%, -50%) rotate(-10deg) translateZ(2px) scale(0.25);
    opacity: .6;
}

.css3 {
    top: 55%;
    left: 35%;
    transform: translate(-50%, -50%) rotate(5deg) translateZ(2px) scale(0.25);
    opacity: .6;
}

.html5 {
    top: 30%;
    left: 65%;
    transform: translate(-50%, -50%) rotate(10deg) translateZ(2px) scale(0.25);
    opacity: .6;
}

.javascript {
    top: 15%;
    left: 60%;
    transform: translate(-50%, -50%) rotate(-5deg) translateZ(1px) scale(0.25);
    opacity: .3;
}

.acessibilidade {
    top: 30%;
    left: 35%;
    transform: translate(-50%,-50%) rotate(-5deg) translateZ(3px) scale(0.25);
    opacity: .8;
}

.responsivo {
    top: 40%;
    left: 40%;
    transform: translate(-50%, -50%) rotate(10deg) translateZ(3px) scale(0.25);
    opacity: .8;
}

.otimizacoes {
    top: 70%;
    left: 65%;
    transform: translate(-50%, -50%) rotate(-5deg) translateZ(2px) scale(0.25);
    opacity: .6;
}

.agilidade {
    top: 75%;
    left: 35%;
    transform: translate(-50%, -50%) rotate(5deg) translateZ(1px) scale(0.25);
    opacity: .3;
}

.design {
    top: 40%;
    left: 60%;
    -webkit-transform: translate(-50%, -50%) rotate(10deg) translateZ(2px) scale(0.25);
    transform: translate(-50%, -50%) rotate(10deg) translateZ(2px) scale(0.25);
    opacity: .6;
}


.banner-twitter {
    width: 14em;
    line-height: 1;
    padding: 1em 0;
    box-sizing: border-box;

    text-align: center;
    text-decoration: none;
    background-color: #3C1D3D;
    color: white;
    border: .25em solid black;

    font-size: 1.2em;
    font-family: "Open Sans Condensed", sans-serif;

    position: absolute;
    top: 0;
    right: 0;
    transform-origin: 0 0;
    transform: translate(6.5754em, -2.4749em) rotate(45deg);
}

.titulo-principal {
    position: relative;
}
.blog .inicio-post {
    position: absolute;
    top: 4em;
    height: 8em;
    left: 30%;
    right: 4em;
    background-color: #F2FFFC;
    color: #000;
    padding: 1.5em;
}
.blog .mais-recente {
    background-color: #F2FFFC;
}
.blog .mais-recente a {
    color: #F26;
}

Segue o html

<!DOCTYPE html>
<html lang="pt">
<head>
    <meta charset="UTF-8">
    <title>João da Silva - Desenvolvedor Web</title>
    <link rel="shortcut icon" href="imagens/favicon.png">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/site.css">
    <link rel="stylesheet" href="css/index.css">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Shadows+Into+Light">
</head>
<body>
    <header class="titulo-principal">
        <img class="foto-home" src="imagens/eu.jpg" alt="Foto de João da Silva">
        <h1>João da Silva</h1>
        <p class="subtitulo-principal">Desenvolvedor web</p>
        <ul class="palavras-home">
            <li class="palavra-home eficiencia">Eficiência</li>
            <li class="palavra-home boas-praticas">Boas práticas</li>
            <li class="palavra-home codigo-limpo">Código limpo</li>
            <li class="palavra-home css3">CSS3</li>
            <li class="palavra-home html5">HTML5</li>
            <li class="palavra-home javascript">JavaScript</li>
            <li class="palavra-home acessibilidade">Acessibilidade</li>
            <li class="palavra-home responsivo">Responsivo</li>
            <li class="palavra-home otimizacoes">Otimizações</li>
            <li class="palavra-home agilidade">Agilidade</li>
            <li class="palavra-home design">Design</li>
        </ul>
        <a class="banner-twitter" href="http://twitter.com/joaodasilva">Siga-me no Twitter</a>
   </header>
    <main>
        <section class="secao-inicio saudacao">
            <p class="saudacao"><span class="saudacao-inicio">Olá,</span> meu nome é <strong>João da Silva</strong> <span class="saudacao-ultima-linha">e eu construo <em>sites maravilhosos</em></span></p>
            <a class="botao-index" href="bio.html">Conheça mais um pouco sobre mim</a>
        </section>
        <section class="secao-inicio trabalhos">
            <h2>Trabalhos</h2>
            <ul>
                <li><img src="imagens/bmw.png" alt="Site da BMW"></li>
                <li><img src="imagens/ibm.png" alt="Site da IBM"></li>
                <li><img src="imagens/uol.png" alt="Site da UOL"></li>
            </ul>
            <a class="botao-index" href="portfolio.html">Veja mais</a>
        </section>
        <section class="secao-inicio blog">
            <h2>Blog</h2>
            <small>Últimos posts</small>
            <ol>
                <li class="mais-recente">
                    <a href="blog.html">O essencial de design responsivo</a>
                    <p class="inicio-post">
                        Design responsivo tem ganho cada vez mais atenção como técnica de desenvolvimento de páginas web para dispositivos móveis. Mas como começar?
                    </p>
                </li>
                <li>
                    <a href="blog.html">Por que fazer páginas acessíveis?</a>
                </li>
                <li>
                    <a href="blog.html">JavaScript não obstrusivo</a>
                </li>
            </ol>
            <a class="botao-index" href="blog.html">Veja mais</a>
        </section>
    </main>
     <footer class="rodape-pagina">
        <h2>Vamos conversar?</h2>
        <p>Você pode entrar em contato comigo <a href="contato.html">por e-mail</a> ou pelo telefone <a href="tel:+551234567890">(12) 3456-7890</a></p>
    </footer>
</body>
</html>
7 respostas

Basicamente a propriedade perspective estabelece um bloco de conteúdo similar ao position: relative . Dá uma olhada em : perspective property W3

No seu CSS é definida esta propriedade na tag body.

As outras páginas do site dos exercícios como bio, blog e portfólio estão funcionando. Só não funciona nesta, por quê?

O position que não está funcionando nesta página é o do rodapé, o fixed e não o relative.

Veja que neste trecho você define:

html, body {
     height: 100%;
     overflow-x: hidden;
}

body {
   perspective: 6px;
   perspective-origin: 50% 160px;  
}

Isso está sendo definido no index.css, então apenas no index.html (que usa o index.css) a propriedade perspective está sendo definida no body. Ao aplicar a perspectiva no body, todos os elementos dentro dele serão afetados, logo o rodapé que é o último elemento do body também será afetado.

Como suas outras páginas utilizam as configurações de body do arquivo reset.css e seus respectivos .css, elas não possuem a propriedade perspective definida, logo não serão afetadas e por isso o position: fixed; funciona corretamente nelas.

Em resumo, não deve-se usar a propriedade perspective com o position: fixed. Os navegadores não tratam essa situação da forma que geralmente se espera.

E como eu posso resolver isto se os próprios exercícios do curso manda aplicar a perspectiva na home e o position: fixed no site.

Não me lembro de ter aplicado o position: fixed; na página principal. Nos exercícios apliquei o position: fixed apenas nas demais páginas, a index.html não tinha essa propriedade no rodapé. Baixe um arquivo contendo o projeto completo e compare as diferenças. Esses arquivos, geralmente, são disponibilizados após a video-aula. Verifique se o html e o css do rodapé da página principal estão corretos.

Ok obrigada