4
respostas

Palavras em 3D

Olá pessoal,

Estou colocando as palavras em 3D porém não esta ficando como desejado, e estou meio perdido, queria esclarecer umas duvidas.

1º Eu não coloquei nada dos transform com valores px, e não sei se isso faria a diferença. Mas até a parte de dar a perspectiva de 3D foi beleza, só que ao tentar melhorar a qualidade da palavra deu ruim. Antes de colocar font-size 400% no li, o translateZ funciona com valor 'em', depois que coloquei o font-size 400% no li, o translateZ faz sumir a palavra e só aparece se eu coloco como 'rem', e olha que coloquei o scale em primeiro para 0.25 . Palpite: Eu acho que o translateZ pega a referencia dos 400% quando uso 'em' e faz o calculo, e não pega do scale, pois apesar do texto aparecer pequeno, a real fonte dele ainda é 400%, seria essa a causa?

2º O translate(-50%, -50%) não deixa com a mesma posição nos dois casos. Se o texto tem opção de font-size 400% + scale 0.25 ele fica em uma posição, se eu remover isso e deixar com a qualidade ruim, ele fica em outra posição. Dai eu não sei a causa disso.

Segue abaixo o HTML da pagina index, e os dois CSS (site e index).

Poderiam me dar essa força por favor?

HTML - index

<!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-3d">
            <li class="palavra-home agilidade">Agilidade</li>
            <li class="palavra-home javascript">JavaScript</li>
            <li class="palavra-home responsivo">Responsivo</li>
            <li class="palavra-home eficiencia">Eficiência</li>
            <li class="palavra-home acessibilidade">Acessibilidade</li>
            <li class="palavra-home design">Design</li>
            <li class="palavra-home codigo-limpo">Código limpo</li>
            <li class="palavra-home html5">HTML5</li>
            <li class="palavra-home css3">CSS3</li>
            <li class="palavra-home otimizacoes">Otimizações</li>
            <li class="palavra-home boas-praticas">Boas práticas</li>
        </ul>
        <a class="banner-twitter" href="https://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="inicio-post">
                    <a href="blog.html">O essencial de design responsivo</a>
                    <p>
                        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>
        <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>

CSS - site

html {
    font-size: 120%;
}

body {
    font-family: "Crimson Text", "Times New Roman", serif;
    background-color: #F2FFFC;
    line-height: 1.5;
}

h1 {
    font-size: 300%;
    text-transform: uppercase;
}

h1,
h2,
.subtitulo-principal {
    font-family: "Open Sans Condensed", "Arial", sans-serif;
}

.titulo-principal {
    text-align: center;
    background-color: #851944;
    color: #FFF;
    padding: 1.25rem;
    border-bottom: .5rem solid #000;
}

.subtitulo-texto {
    font-size: 150%;
    clear: both;
}

main a {
    color: #851944;
}

main p {
    text-align: justify;
    margin: 1rem 0;
}

.navegacao-site {
    text-align: center;
    background-color: #3C1D3D;
    color: #F2FFFC;
    padding: 1em;
}

.navegacao-site a {
    color: inherit;
    font-family: "Open Sans Condensed", "Arial", sans-serif;
    text-transform: lowercase;
}

.navegacao-site h1 {
    font-size: 150%;
    margin-bottom: 1.25em;
}

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

.container {
    width: 80%;
    margin-left: auto;
    margin-right: auto;
    padding: 1.25rem 0;
}

strong {
    font-weight: bold;
}

em {
    font-style: italic;
}

.icones-redes-sociais li {
    display: inline-block;
}

.icones-redes-sociais a {
    /*width: 4.501ch;*/
    width: 2em;
    height: 2em;
    display: block;
    text-indent: -99999rem;
}

.github {
    background-image: url(../imagens/github.png);
}

.twitter {
    background-image: url(../imagens/twitter.png);
}

.linkedin {
    background-image: url(../imagens/linkedin.png);
}

main {
    width: 80%;
    float: left;
    padding-bottom: 4rem;
}

.minha-foto, .navegacao-site {
    border-left: .5rem solid black;
    border-bottom: .5rem solid black;
    box-sizing: border-box;
}

.navegacao-site {
    width: 20%;
    float: right;
    position: relative;
    top: 15rem;
}

.minha-foto {
    position: absolute;
    top: 0;
    right: 0;
    height: 15rem;
}

CSS - Index

.foto-home {
    height: 200px;
    border-radius: 50%;
}

header {
    position: relative;
    overflow-x: hidden;
}
/*
*/    

.banner-twitter {
    font-family: "Open Sans Condensed", sans-serif;
    text-transform: none;
    font-size: 1rem;
    background-color: #3C1D3D;
    color: #FFF;
    text-decoration: none;
    border: .25em solid black;
    width: 25ch;
    padding: .5em;
    box-sizing: border-box;
    display: inline-block;
    text-align: center;
    position: absolute;
    right: 0; top: 0;
    transform-origin: 0 100%;
    transform: translate(29.28%, -100%) rotate(45deg);
}

.palavras-3d {
    -webkit-perspective: 6rem;
    -moz-perspective: 6rem;
    perspective: 6rem;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

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

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

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

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

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

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

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

.javascript {
    top: 15%;
    left: 60%;
    -webkit-transform: rotate(-10deg) translateZ(1em) translate(-50%, -50%) scale(0.25);
    -moz-transform: rotate(-10deg) translateZ(1em) translate(-50%, -50%) scale(0.25);
    transform: rotate(-10deg) translateZ(1em) translate(-50%, -50%) scale(0.25);
}

.acessibilidade {
    top: 30%;
    left: 35%;
    -webkit-transform: rotate(-10deg) translateZ(3rem) translate(-50%, -50%) scale(0.25);
    -moz-transform: rotate(-10deg) translateZ(3rem) translate(-50%, -50%) scale(0.25);
    transform: rotate(-10deg) translateZ(3rem) translate(-50%, -50%) scale(0.25);
}

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

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

.agilidade {
    top: 75%;
    left: 35%;
    -webkit-transform: rotate(10deg) translateZ(1rem) translate(-50%, -50%) scale(0.25);
    -moz-transform: rotate(10deg) translateZ(1rem) translate(-50%, -50%) scale(0.25);
    transform: rotate(10deg) translateZ(1rem) translate(-50%, -50%) scale(0.25);
}

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

.subtitulo-principal {
    text-transform: capitalize;
    font-size: 1rem;
}

.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;
    display: inline-block;
    transform: rotate(-5deg) skewX(-10deg);
}

.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-shadow: 2px 2px #000;
    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;
    color: #FFF;
    border-bottom: .5em solid #851944;
    position: relative;
}

.blog small {
    position: relative;
    top: -2em;
}

.blog li a {
    color: #FCF;
    padding: .5em;
    display: block;
    width: 40ch;
    width: 30%;
}

.blog .inicio-post a {
    background-color: #FFF;
    color: #F26;
}

.inicio-post p {
    background-color: #FFF;
    position: absolute;
    color: #000;
    top: 4em;
    right: 3em;
    left: 30%;
    height: 8em;
    padding: 1em;
}

footer {
    background-color: #000;
    color: #FFF;
    padding: 2em;
}

footer h2 {
    font-size: 3em;
}

footer a {
    color: #F99;
}

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

Eu não entendi se você quer as palavras em perspectiva ou com relevo. Veja esses links:

http://markdotto.com/playground/3d-text/

https://css-tricks.com/almanac/properties/p/perspective/

Bom dia Ricardo,

Desculpe se não ficou claro, estou querendo em perspectiva mesmo, usar o translateZ para dar uma ideia de 3D.

Ruy, Veja esse http://codepen.io/Tinricon/details/ptAho

Desculpa, não entendi agora para que devo usar esse site que me passou.

Na verdade estou fazendo o exercício, deste capítulo, https://cursos.alura.com.br/course/avancando-html-css/task/6140

Fiz um teste no site dabblet, e vejo que a palavra muda de lugar quando eu uso font-size 400% e scale 0.25 , mas não sei porque acontece isso.

Fonte melhorada: http://dabblet.com/gist/085ff5b1c4bdfacb7f0abb64a961ec72

Fonte normal: http://dabblet.com/gist/bbf0c5bb0c71ca14d4f93eb1ec7e966a