Repaso general

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Repaso</title>
    <link rel="stylesheet" href="css/estilos.css">
</head>

<body>
    <!-- En el html solamente tenemos el contenido no tenemos nada de estilo-->
    <h1 id="titulo">Hola que tal</h1>
    <h6>Yo muy bien</h6>
    <p class="extra">Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestias consequatur possimus et. Tempora dolorem
        tempore in debitis distinctio, sunt incidunt exercitationem praesentium non maxime aspernatur, sit velit
        officiis! Ut, iusto?</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ullam illo repellendus dicta deleniti voluptates. Modi,
        maxime ab quasi accusamus consectetur doloribus sunt autem libero asperiores illum velit fugiat similique neque.
    </p>
    <ul>
        <li>1</li>
        <li>2</li>
        <li class="movido">3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <div>
        <p>Esto es un bloque</p>
    </div>
    <header>
        <h1>Bloque de cabecera</h1>
    </header>
    <main>
        <aside><p>Barra lateral</p></aside>
        <section>
            <article>
                <h3 class="extra">Artículo 1</h3>
            </article>
            <article>
                <h3>Artículo 2</h3>
            </article>
            <article>
                <h3>Artículo 3</h3>
            </article>
        </section>
        <section id="galeria">
            <div class="imagen"><img src="https://picsum.photos/200"/><h4>Esto es una foto</h4></div>
            <div class="imagen"><img src="https://picsum.photos/200"/><h4>Esto es una foto</h4></div>
            <div class="imagen"><img src="https://picsum.photos/200"/><h4>Esto es una foto</h4></div>
        </section>
    </main>
</body>

</html>
/*Estilo de todos los elementos de mi web */
*{
    font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
}
body{
    overflow-x: hidden;
    /* defino  una variable para todos los elementos que estén dentro del body */
    --fondo:yellow;
}
/*Estilo de una etiqueta */
h1{
    color:rgb(81, 81, 81);
}
/* clase y va a todos los elementos de esa clase */
.extra{
    background-color: blanchedalmond;
}

/* id que es un elemento único */
#titulo{
    /* Utilizo calc para que el ancho sea el de la página menos 200px */
    width: calc(100% - 200px);
    margin: auto;
    background-color: black;
    color: blanchedalmond;
    text-align: center;
    /* Aplicamos la animación */
    animation-name: baile;
    animation-duration: 6s;
    animation-delay: 3s;
}
article{
    margin-left: 50px;
    padding: 2em;
    background-color: gainsboro;
    float: left; /* los elementos se coloquen unos al lado de otros */
}
/* todos los h3 dentro de un article */
article h3{
    margin: 0;
}
.movido{
    position: relative;
    left: 50px;
}
.imagen{
    border: solid 2px gray;
    box-shadow: 5px 5px 5px gray;
    text-align: center;
    transition: 2s;
}
.imagen img{
    width: 100%;
    /* las transiciones tarden 2seg en ejecutarse */
    transition: 2s;
}
/* La imagen se hace grande al pasar por encima */
.imagen img:hover{
    transform: scale(1.2,1.2);
}
/* Cambiamos el color al pasar por encima */
.imagen:hover{
    /* uso la variable fondo definida antes */
    background-color:var(--fondo);
}
/* con el flex consigo que todos los elementos estén alineados y responsive */
#galeria{
    display: flex;
    clear: both;
    justify-content: space-evenly;
    flex-wrap: wrap;
}

/* Con el media query controlo que en determinadas resoluciones cambie el estilo para que
quede mejor */
@media  screen and (max-width:500px) {
    article{
        margin: 50px 0;
        float: none;
    }
    
}

/* Animación de cuatro pasos en los que cambiamos tamaño, rotación y colores */
@keyframes baile {
0%{
    transform: scale(0.5,0.5);
    color:black;
}    
25%{
    color:red;
    transform: rotate(20deg);
}
50%{
    color:black;
    transform: scale(2,1.5);
}
75%{
    transform: rotate(-20deg);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ejemplo de layout con grid</title>
    <link rel="stylesheet" href="css/layout.css">
</head>
<body>
    <header id="pageHeader"><h1>Tornillería martínez</h1>></header>
    <article id="mainArticle"><h1>Tornillería Martínez</h1>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Ipsam veniam laboriosam eaque, alias veritatis reprehenderit maiores nulla quis ratione sequi aliquam omnis in tenetur perferendis. Repellendus architecto harum mollitia laudantium?</p>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Ipsam veniam laboriosam eaque, alias veritatis reprehenderit maiores nulla quis ratione sequi aliquam omnis in tenetur perferendis. Repellendus architecto harum mollitia laudantium?</p></article>
    <nav id="mainNav"><ul>
        <li>Inicio</li>
        <li>Nosotros</li>
        <li>Productos</li>
        <li>Contacto</li>
        <li>Servicios</li>
    </ul></nav>
    <div id="siteAds"><img src="https://picsum.photos/100"/><img src="https://picsum.photos/100"/></div>
    <footer id="pageFooter">(C) Diseño mortal</footer>
</body>
</html>
body { 
    display: grid;
    grid-template-areas: 
      "header header header"
      "nav article ads"
      "footer footer footer";
    grid-template-rows: 80px 1fr 70px;  
    grid-template-columns: 20% 1fr 15%;
    grid-row-gap: 10px;
    grid-column-gap: 10px;
    height: 100vh;
    margin: 0;
    }  
  header, footer, article, nav, div {
    padding: 1.2em;
    background: gold;
    }
  #pageHeader {
    grid-area: header;
    }
  #pageFooter {
    grid-area: footer;
    }
  #mainArticle { 
    grid-area: article;      
    }
  #mainNav { 
    grid-area: nav; 
    }
  #siteAds { 
    grid-area: ads; 
    } 
  /* Stack the layout on small devices/viewports. */
  @media all and (max-width: 575px) {
    body { 
      grid-template-areas: 
        "header"
        "article"
        "ads"
        "nav"
        "footer";
      grid-template-rows: 80px 1fr 70px 1fr 70px;  
      grid-template-columns: 1fr;
   }
  }

Ejemplos variables

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="css/variables.css">
</head>
<body>
    <h1>Hola que tal</h1>
    <h2>Muy bien</h2>
    <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Hic dolore provident minus commodi veniam, nihil necessitatibus sint nulla. Quidem explicabo facere repellendus perspiciatis ea! Impedit in eum sapiente! Et, quaerat.</p>
    <div id="anuncio">Esto es un anuncio</div>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</body>
</html>
html{
    --gris:blue; /* las variables se definen con dos guiones: -- */
    --blanco:yellow;
    --tamanyo:2em;
}
h1{
    color:var(--gris);
}
#anuncio{
    --blanco:white; /*sobreescribiendo la variable blanco */
    color:var(--blanco);
    background-color:   var(--gris);
    font-size: var(--tamanyo);
}
ul{
    background-color: var(--gris);
    color: var(--blanco);
}

Ejemplo transformación

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ejemplos transiciones</title>
    <link rel="stylesheet" href="css/estilos.css">
</head>
<body>
    <div id="transicion1">Hola que tal</div>
    <div id="transicion2">Yo muy bien</div>
    <div id="transicion3">Me alegro</div>
 <div id="transicion4">Estamos en matrix</div>
</body>
</html>
div{
    width: 200px;
    height: 200px;
    background-color: orange;
}
#transicion1{
    transition: width 2s, transform 3s,background-color 4s;
}

#transicion1:hover{
    transform: rotate(45deg);
    width:300px;
    background-color: darkgreen;
}

#transicion2{
    background-color: blue;
    transition: transform 3s,background-color 4s;
}

#transicion2:hover{
    transform: skewX(45deg);
    background-color: rgb(255, 225, 58);
}

#transicion3{
    background-color: rgb(244, 35, 198);
    transition: transform 3s,background-color 4s;
}

#transicion3:hover{
    transform: rotateX(360deg);
    background-color: #26e53d;
}
#transicion4{
    background-color: rgb(75, 234, 255);
    transition: transform 3s,background-color 4s;
}

#transicion4:hover{
    transform: matrix(2,.3,.4,3,200,200);
    background-color: #f4ff7a;
}

Layout 2 parte

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>The Corner</title>
    <link rel="stylesheet" href="css/estilos.css" />
</head>

<body>
    <header>
        <h1>The Corner</h1>
        <nav>
            <p>Inicio</p>
            <p>Productos</p>
            <p>Servicios</p>
            <p>Contacto</p>
        </nav>
    </header>
    <section id="eslogan">
        <h2>Bienvenidos a <span class="destacado">The Corner</span> la mejor academia para aprender.</h2>
        <h2>Cada día te preparamos para el futuro.</h2>
    </section>
    <section id="portada">
        <img src="img/academia.png" alt="academia" />
        <article>
            <h3>Aulas</h3>
            <p>Las mejores aulas de toda Barcelona.
                Medios técnicos inigualables.</p>
        </article>

    </section>
    <div class="separador"></div>
    
    <section id="caracteristicas">
        <article class="caracteristica">
            <p class="numero">1</p>
            <div>
                <h4>Titulo</h4>
                <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Repellendus, blanditiis voluptates? Ad,
                    reprehenderit animi natus nihil adipisci placeat eveniet ipsa. Facere, ullam quaerat quasi ipsa quas
                    harum est praesentium mollitia.</p>
            </div>
        </article>
        <article class="caracteristica">
            <p class="numero">2</p>
            <div>
                <h4>Titulo</h4>
                <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Repellendus, blanditiis voluptates? Ad,
                    reprehenderit animi natus nihil adipisci placeat eveniet ipsa. Facere, ullam quaerat quasi ipsa quas
                    harum est praesentium mollitia.</p>
            </div>
        </article>
        <article class="caracteristica">
            <p class="numero">3</p>
            <div>
                <h4>Titulo</h4>
                <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Repellendus, blanditiis voluptates? Ad,
                    reprehenderit animi natus nihil adipisci placeat eveniet ipsa. Facere, ullam quaerat quasi ipsa quas
                    harum est praesentium mollitia.</p>
            </div>
        </article>
    </section>
    <h2 class="texto_separador">Recent work</h2>
</body>

</html>
*{
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin: 0;
}
header{
    background-color: black;
    color: white;
    padding: 2em;
    /*
    De esta manera se organizan los dos elementos de la cabecera, el h1 y el nav
    display: flex;
    justify-content: space-between;
    align-items: center;
    */
}
nav{
    display: flex;
    float: right;
}
nav p{
    margin: 0 1em;
}
nav p:hover{
    color: yellow;
    cursor: pointer;
}
section{
    margin:2em;
    padding: 1em;
}
#eslogan{
    text-align: center;
    line-height: 3em;
}
.destacado{
    background-color: green;
    color: white;
    border-radius: 6px;
    padding: .2em;
}
#portada{
    position: relative;
}
#portada img{
    width: 100%;
}
#portada article{
    position: absolute;
    bottom: 2em;
    left: 2em;
    width: 30%;
    background-color: #00000095;
    color: white;
    padding: 3em;
}
.separador{
    border-bottom: solid 1px #8f8f8f;
    margin: .4em 3em;
}
#caracteristicas{
    display: flex;
    flex-wrap: wrap;
    justify-content: space-evenly;
    margin: 0;
}
.caracteristica{
    display: flex;
    align-items: start;
    width: 30%;
    padding: 1em;
}

.numero{
    background-color: gray;
    border-radius: 50%;
    font-size: 1.5em;
    width: 1.3em;
    text-align: center;
    padding: .1em;
    margin: 0.1em 1em;
    flex-shrink: 0; /*para evitar que se distorsione */
}
.numero:hover{
    background-color: green;
    color:white;
}
.texto_separador{
    margin: .4em 3em;
    display: flex;
    align-items: center;
}
.texto_separador::after {
    content: '';
    flex: auto;
    margin-left: 1rem;
    border-top: 1px solid #8f8e8e;
  }

Ejemplo Grid

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="css/grid.css"/>
</head>
<body>
    <div id="contenedor">
        <div id="primero" class="elemento">1</div>
        <div id="side" class="elemento">2</div>
        <div id="content" class="elemento">3</div>
        <div id="footer" class="elemento">4</div>
        <!--
        <div class="elemento">5</div>
        <div class="elemento">6</div>
        <div class="elemento">7</div>
        <div class="elemento">8</div>
        <div class="elemento">9</div>
        <div class="elemento">10</div>
        -->
    </div>
</body>
</html>
.elemento{
    border: solid 2px gray;
    padding: 1em;
    background-color: aquamarine;
}
#contenedor{
    display: grid;
     grid-template-columns: 150px 2fr 1fr; /* unidades relativas al espacio libre */
     grid-template-rows: 1fr repeat(2,2fr);
     grid-template-areas:  'header header header header'
                           'side content content content'
                           'side content content content'
                           'side content content content'
                           'footer footer footer footer'
                           
                           ;
}
#primero{
    grid-area: header;
}
#side{
    grid-area: side;
}
#content{
    grid-area: content;
}
#footer{
    grid-area: footer;
}

Layout primera parte

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>The Corner</title>
    <link rel="stylesheet" href="css/estilos.css"/>
</head>
<body>
    <header>
        <h1>The Corner</h1>
        <nav>
            <p>Inicio</p>
            <p>Productos</p>
            <p>Servicios</p>
            <p>Contacto</p>
        </nav>
    </header>
    <section id="eslogan">
        <h2>Bienvenidos a <span class="destacado">The Corner</span> la mejor academia para aprender.</h2>
        <h2>Cada día te preparamos para el futuro.</h2>
    </section>
    <section id="portada">
        <img src="img/academia.png" alt="academia"/>
        <article>
            <h3>Aulas</h3>
            <p>Las mejores aulas de toda Barcelona. 
                Medios técnicos inigualables.</p>
        </article>
    </section>
</body>
</html>
*{
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin: 0;
}
header{
    background-color: black;
    color: white;
    padding: 2em;
    /*
    De esta manera se organizan los dos elementos de la cabecera, el h1 y el nav
    display: flex;
    justify-content: space-between;
    align-items: center;
    */
}
nav{
    display: flex;
    float: right;
}
nav p{
    margin: 0 1em;
}
nav p:hover{
    color: yellow;
    cursor: pointer;
}
section{
    margin:2em;
    padding: 1em;
}
#eslogan{
    text-align: center;
    line-height: 3em;
}
.destacado{
    background-color: green;
    color: white;
    border-radius: 6px;
    padding: .2em;
}
#portada{
    position: relative;
}
#portada img{
    width: 100%;
}
#portada article{
    position: absolute;
    bottom: 2em;
    left: 2em;
    width: 30%;
    background-color: black;
    color: white;
    padding: 3em;
}

Ejemplo flex

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="css/flex_ejemplo.css" rel="stylesheet"/>
</head>
<body>
    <head><img src="img/mascotas.jpg"><h1>Mis mascotas</h1>
    <h5>Tu mejor tienda de mascotas</h5></head>
    <div id="galeria">
        <div class="tarjeta"><h5>Gatito</h5><img src="img/gato.webp"/></div>
        <div class="tarjeta"><h5>Gatito</h5><img src="img/gato.webp"/></div>
        <div>  <div class="tarjeta"><h5>Gatito</h5><img src="img/gato.webp"/></div>
        <div class="tarjeta"><h5>Gatito</h5><img src="img/gato.webp"/></div></div>
      
        <div class="tarjeta"><h5>Gatito</h5><img src="img/gato.webp"/></div>
        <div class="tarjeta"><h5>Gatito</h5><img src="img/gato.webp"/></div>
               
       
    </div>
</body>
</html>

#galeria{
    display: flex;
    flex-wrap: wrap;
    justify-content: space-evenly;
    height: 600px;
    background-color: bisque;
    align-content: stretch;
}
.tarjeta{
    background-color: chartreuse;
    border-style: solid;
    border-radius: 5px;
    border-width: 2px;
    margin: 1em;
    padding: .5em;
}
.tarjeta img{ /* pon estas propiedades a las img dentro de la clase tarjeta */
    width: 190px;
}
.tarjeta h5{
    color:red;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
}

Layout

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="css/styles.css"/>
</head>
<body>
    <header>
        <h1>Tornillerías Martínez</h1>
    </header>
    <aside>
        <ul>
            <li>Inicio</li>
            <li>Productos</li>
            <li>Contacto</li>
        </ul>
    </aside>
    <main>
        <h2>Los mejores tornillos del mundo</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis temporibus exercitationem alias iure repellendus ad sed adipisci minus fuga voluptatibus sequi odit dolore, vel doloribus nobis recusandae quaerat iusto earum?</p>
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati voluptates placeat quaerat corporis at quos earum mollitia inventore debitis, consectetur repellat soluta similique provident harum assumenda eum amet iste consequuntur.</p>
    </main>
    <footer>
        <p>(C) The Corner</p>
    </footer>
</body>
</html>

.cabecera{
    color: green;
    border-style:solid;
    border-right-color: blue;
    border-left-color: rgb(243, 132, 29);
    border-width: 10px; /* todos los bordes tienen 10px de ancho */
    border-width: 10px 5px; /* arriba y abajo tienen 10 izq y derecha 5 */
    border-width: 10px 5px 0; /* empezamos por arriba y seguimos las agujas del reloj */
 
}

.azuloscuro{
    color:#010157;
   /* font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
    font-style: italic; /* lo pone en cursiva */
    /*font-weight:lighter; /* para ponerlo en negrita */
  /*  font-size:1rem; /* 1 rem = 16px */
  
    font: bold 1rem Arial;
    text-align: justify;
  
}
li{
    color:#ff7272;
}
table{
    width: 70%;
    margin: 20px auto;
}
th, td {
    border-style:dotted;
  }
  .contenedor{
    background-color: bisque;
    width:70%;
    margin: auto;
    padding-bottom: 20px;
    position: relative;
  }
  .articulos{
    width: 50%;
    background-color: aqua;
    margin: 20px auto;
    padding-left: 1em;
    text-align: center;
    position: absolute;
   top:50%;
   left:25%;
   width:50%;
  }
 
  header{
    background-color: aquamarine;
  }
  aside{
    background-color: gray;
    width: 33%;
    float: left;
    position: relative;
    bottom:-100px;
    right:40px;
  }
  main{
    background-color: darkkhaki;
    width: 66%;
    float: right;
  }
  footer{
    background-color: black;
    color: white;
    clear: both;
  }

Solución ejercicio HTML+CSS

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Informe de ventas</title>
    <link href="css/styles.css" rel="stylesheet"/>
</head>
<body>
    <h1>Informe de ventas</h1>
    <p class="azuloscuro">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    <ul>
        <li>Ampliación oficinas</li>
        <li>Mayores comisiones</li>
        <li>Nuevos vendedores</li>
    </ul>
    <table >
        <thead>
        <tr>
            <th>Localidad</th>
            <th>Departamento</th>
            <th>Total</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td rowspan="2">Barcelona</td>
            <td>Muebles</td>
            <td>100</td>
        </tr>
        <tr>
            <td>Electrodomésticos</td>
            <td>200</td>
        </tr>
        <tr>
            <td>Tarragona</td>
            <td>Muebles</td>
            <td>50</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td colspan="2">Total</td>
            <td>350</td>
        </tr>
    </tfoot>
    </table>
</body>
</html>
h1{
    color: green;
}

.azuloscuro{
    color:#010157;
}
li{
    color:red;
}

th, td {
    border-bottom: 1px solid #ddd;
  }