Selectores básicos CSS

<!DOCTYPE html>
<html>

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

<body>
    <header>
        <div><img src="img/baldosa.jpg"></div>
        <div>
            <h1>hola</h1>
        </div>
        <ul>
            <li>
                <h1>Que pasa??</h1>
            </li>
        </ul>
        <h1>Hola</h1>
        <h1>Hola</h1>
    </header>
    <h1>Hola que tal estamos. Yo muy bien.</h1>
    <h1 id="especial" class="varios sombra">Hola que tal <span class="susto">estamos</span>. Yo muy bien.</h1>
    <h1 class="varios tipo sombra">Hola que tal estamos. Yo muy bien.</h1>
    <h1 class="tipo">Hola que tal estamos. Yo muy bien.</h1>
    <h1 class="varios sombra">Hola que tal <span>estamos</span>. Yo muy bien.</h1>
    <h1 class="varios">Hola que tal estamos. Yo muy bien.</h1>
    <h1 class="varios">Hola que tal estamos. Yo muy bien.</h1>
    <h1 class="sombra verde">Hola que tal <span class="verde">estamos</span>. Yo muy bien.</h1>
    <a href="pepe.html">ENlace</a>
    <a href="fotos.html">ENlace</a>
    <a href="articulos.html">ENlace</a>
    <div>
        <p>parrafo</p>
        <p>parrafo</p>
        <p>parrafo</p>
        <p>parrafo</p>
        <p>parrafo</p>
    </div>
    <footer>
        <div>
            <div>
                <p>Párrafos dentro de muchos divs</p>
                <p>Párrafos dentro de muchos divs</p>
                <p>Párrafos dentro de muchos divs</p>
                <p>Párrafos dentro de muchos divs</p>
                <p>Párrafos dentro de muchos divs</p>
                <a href="">Enlace</a>
            </div>
            <p>estoy solo</p>
            <p>estoy solo</p>
            <p>estoy solo</p>
           
        </div>
    </footer>
</body>

</html>
h1{
    color:blue;
    clear: both;
}
#especial{
    color:red;
    background-color: green;
}
#especial .susto{
    background-color: yellow;
}
.varios{
    color:green;
}
.varios span{
    color:yellow;
}
.tipo{
    font-family: Verdana, Geneva, Tahoma, sans-serif;
}
.sombra{
    text-shadow: 10px 10px 5px grey;
}

/*El estilo se aplica a las dos clases */
.tipo, .sombra{ 
   font-size:4em;
}
/* El estilo se aplica a todos los headers y a todas las imágenes */
header, img{
border:1px solid black;
}

/*El estilo se aplica a todas las imágenes que estén dentro de un header*/
header img{
    width:20%;
    float: left;
}
/*Esto se aplica a todos los h1 dentro del header, estén donde estén (anidados dentro de otros elementos) */
header h1{
    color:purple;
}

/*Esto se aplica a todos los h1 hijos directos del header, si hay anidación no se aplica */
header > h1{
    color:salmon;
}
header + h1{
    background-color: sienna;
}

/*Todos los elementos de clase verde que estén dentro de un h1 */
h1 .verde{
    background-color: green;
}
/* Todos los h1 que además tengan la clase verde */
h1.verde{
    background-color: green;
}
[class]{
    border:3px solid black;
}
/*Todos los elementos con un atributo href que empieza por 'foto' */
[href^=foto]{
    background-color: chartreuse;
}
.susto:hover{
    background-color: chocolate;
}

p:last-child{
color:red;
}

Ejemplo layout bootstrap

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bootstrap</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <!-- Popper JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

    <link rel="stylesheet" href="css/estiloboot.css">
</head>

<body>
    <div class="container-fluid">
        <div class="row">
            <header class="col-12 bg-info"><h1>Cabecera</h1></header>
        </div>
        <div class="row">
           <aside class="col-sm-2 col-md-3 bg-success">
               <ul>
                   <li>111111</li>
                   <li>111111</li>
                   <li>111111</li>
                   <li>111111</li>
               </ul>
           </aside>
           <section class="col-sm-8 col-md-6 bg-info" id="contenido">
               <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Tenetur asperiores esse illum qui. Ut laudantium fuga officia esse at harum pariatur dicta. Reprehenderit excepturi quibusdam fuga debitis eaque nemo adipisci!</p>
           </section>
           <aside class="col-sm-2 col-md-3 bg-danger">
           <img src="img/baldosa.jpg" width="50">
        </aside>
        </div>
        <div class="row">
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
            <article class="col-md-3"><img src="img/baldosa.jpg" width="100"></article>
        </div>
        <div class="row">
            <footer class="col-12 bg-warning"><p>Esto es el pie</p></footer>
        </div>
    </div>

</body>

</html>

article{
    background-color: paleturquoise;
    border:1px solid black;
}
@media (max-width:576px){
  #contenido{
      order:-1;
  }
}

Bootstrap

Para empezar, nuestra amiga w3schools:

https://www.w3schools.com/bootstrap4/default.asp

Ahí encontraremos la explicación de todos los elementos de bootstrap muy bien explicados, pero también podemos ir a las fuentes:

https://getbootstrap.com/docs/4.6/getting-started/introduction/

Aquí encontraremos diferentes bootstraps tuneados:

https://bootswatch.com/

Y aquí templates listos para usar:

https://colorlib.com/wp/free-bootstrap-templates/

En trifulcas hay código de muchos ejemplos:

https://trifulcas.com/ejemplos-bootstrap/

https://trifulcas.com/ejemplo-bootstrap-2/

https://codepen.io/ajaypatelaj/pen/prHjD

Un análisis exhaustivo del grid de bootstrap:

https://trifulcas.com/analisis-del-grid-de-bootstrap/

Ejemplos del grid de bootstrap:

https://coreui.io/docs/layout/grid/

https://www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-grid-system.php

https://freefrontend.com/bootstrap-grid-examples/

Layout flexbox + media query

 <header>
        <h1>Cabecera</h1>
    </header>
    <div class="slider"></div>
    <main>
        <section>
            <h1>Contenido</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, esse! Hic magni voluptate quia, ut eligendi
                pariatur deleniti. Numquam, perspiciatis. Eius soluta ipsam qui nisi, ea cum quod atque pariatur?</p>
        </section>
        <section>
            <h1>Contenido</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, esse! Hic magni voluptate quia, ut eligendi
                pariatur deleniti. Numquam, perspiciatis. Eius soluta ipsam qui nisi, ea cum quod atque pariatur?</p>
        </section>
        <section>
            <h1>Contenido</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, esse! Hic magni voluptate quia, ut eligendi
                pariatur deleniti. Numquam, perspiciatis. Eius soluta ipsam qui nisi, ea cum quod atque pariatur?</p>
        </section>
        <section>
            <h1>Contenido</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, esse! Hic magni voluptate quia, ut eligendi
                pariatur deleniti. Numquam, perspiciatis. Eius soluta ipsam qui nisi, ea cum quod atque pariatur?</p>
        </section>
    </main>
    <footer>
        <p>Pie de página</p>
    </footer>
header{
    height:150px;
    background-color: burlywood;
}
.slider{
    width: 100%;
    height: 300px;
    background-image: url('../img/baldosa.jpg');
    background-size: cover;
}
main{
    display: flex;
    flex-wrap: wrap;
}
main section{
    flex:25%;
}
@media (max-width:728px){
    main section{
        flex:50%;
    }
}

@media (max-width:400px){
    .slider{
        height: 100px;
    }
    footer,aside{
        display: none;
    }
    main {
        flex-direction: column;
    }
}

Layout flex responsive

<!DOCTYPE html>
<html>

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

<body>
    <header>
        <h1>Cabecera</h1>
    </header>
    <main>
        <aside>
            <ul>
                <li>aaaa</li>
                <li>aaaa</li>
                <li>aaaa</li>
                <li>aaaa</li>
            </ul>
        </aside>
        <section>
            <h1>Contenido</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, esse! Hic magni voluptate quia, ut eligendi
                pariatur deleniti. Numquam, perspiciatis. Eius soluta ipsam qui nisi, ea cum quod atque pariatur?</p>
        </section>
    </main>
    <footer>
        <p>Pie de página</p>
    </footer>
</body>

</html>

main{
    display: flex;
}

@media (max-width:728px){
    main{
        flex-direction: column;
    }
}

@media (max-width:400px){
    footer,aside{
        display: none;
    }
}

Comienzo maquetación Flexbox

html:

 <div class="flex">
        <div class="first">&nbsp;</div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
    </div>
    <div>
        <div>&nbsp;</div>
    </div>
    <div>
        <div>&nbsp;</div>
    </div>
    <div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
    </div>
    <div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
    </div>

Css:

div div{
    background-color: black;
    width: 200px;
    margin-left: 20px;
}
.flex{
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.first{
    margin-right: 250px;
    height: 100px;
}

Resumen layouts

El layout es la organización de nuestra página, es un elemento de diseño que nos indica dónde van a ir los diferentes elementos.

Aquí tenemos ejemplos de diferentes layouts:

https://designshack.net/articles/layouts/10-rock-solid-website-layout-examples/

https://websitesetup.org/website-layouts/

Para diseñar los layouts normalmente se utilizan herramientas de wireframing. Hay algunas online:

https://wireframe.cc/

https://www.lancetalent.com/blog/top-5-herramientas-wireframes-ch/

O podemos hacerlo directamente en una libreta.

Para implementar nuestro layout usaremos las etiquetas div o las nuevas etiquetas semánticas:

Elementos semánticos

Que nos permitirán crear nuestro layout:

https://www.w3schools.com/html/html_layout.asp
https://www.w3schools.com/css/css_website_layout.asp

Hoy hemos visto la manera más sencilla que es utilizando float:

https://www.w3schools.com/css/css_float.asp

Pero más adelante veremos otras maneras de hacerlo. Dentro de trifulcas podéis encontrar varios ejemplos:

https://trifulcas.com/layout-one-page/

https://trifulcas.com/layout-semantico-2/

Y una búsqueda por internet os mostrará miles de páginas que tratan el tema:

https://www.geeksforgeeks.org/html-layout/

https://css-tricks.com/the-holy-grail-layout-with-css-grid/

Mini layout simple

html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Layout</title>
    <link rel="stylesheet" href="css/layout.css">
</head>
<body>
    <div id="cabecera">
        <h1>Esto es la cabecera</h1>
    </div>
    <div id="barra">
        <ul>
            <li><a href="">Inicio</a></li>
            <li><a href="">Contacto</a></li>
            <li><a href="">Productos</a></li>
            <li><a href="">faq</a></li>
        </ul>
    </div>
    <div id="contenido">
        <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita omnis.</p>
        <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita omnis.</p>
        <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita omnis.</p>
        <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita omnis.</p>
    </div>
    <div id="pie">
        <p>(c) Jotapé 2021</p>
    </div>
</body>
</html>

css:

*{
    margin:0;
}
#cabecera{
    background-color: pink;
    height: 150px;
    margin: 0;
    padding: 5px;
}
#barra{
    background-color: turquoise;
    width:100px;
    float:left;
    min-height: 500px;
    padding: 20px;
}
#barra ul{
    list-style: none;
    margin:0;
    padding: 5px;
   
}
#contenido{
    background-color: wheat;
    margin: 0;
    min-height: 500px;
    padding: 20px;
}
#pie{
    background-color: black;
    color: white;
    height: 50px;
    clear:left;
    margin: 0;
}

Semántico:

<!DOCTYPE html>
<html>

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

<body>
    <header>
        <h1>Esto es la cabecera</h1>
    </header>
    <aside>
        <ul>
            <li><a href="">Inicio</a></li>
            <li><a href="">Contacto</a></li>
            <li><a href="">Productos</a></li>
            <li><a href="">faq</a></li>
        </ul>
    </aside>
    <main>
        <section>
            <h1>Artículo 1</h1>
            <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas
                obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita
                omnis.</p>
            <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas
                obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita
                omnis.</p>
        </section>
        <section>
            <h1>Artículo 2</h1>
            <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas
                obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita
                omnis.</p>
            <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Assumenda quasi explicabo, quibusdam quas
                obcaecati aliquam mollitia ad rerum maxime facere dolor, earum nisi in deleniti sit tempore nam expedita
                omnis.</p>
        </section>
    </main>
    <footer>
        <p>(c) Jotapé 2021</p>
    </footer>
</body>

</html>
*{
    margin:0;
}
header{
    background-color: pink;
    height: 150px;
    margin: 0;
    padding: 5px;
}
header h1{
    text-align: center;
}
aside{
    background-color: turquoise;
    width:100px;
    float:left;
    min-height: 500px;
    padding: 20px;
}
aside ul{
    list-style: none;
    margin:0;
    padding: 5px;
   
}
main{
    background-color: wheat;
    margin: 0;
    min-height: 500px;
    padding: 20px;
}
footer{
    background-color: black;
    color: white;
    height: 50px;
    clear:left;
    margin: 0;
}
section{
    float:left;
    width: 40%;
    margin-left: 10px;
}