Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[AJUDA] para identificar o que eu estou fazendo de errado

Olá, bom dia!

Estava fazendo o curso JavaScript: construindo páginas dinâmicas e o projeto consiste em fazer uma lista de compras.

Mexi em algumas coisas sozinhas e acabei desestruturando o alinhamento de um container e não consigo identificar o que fiz. Já revisei css e script varias vezes...

segue os códigos:

HTML

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lista de Compras</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <main>
        <img src="img/bag.png" alt="Sacola de Compras">
        <form>
            <input type="text" placeholder="Digite o item que deseja adicionar" id="input-text">
            <button id="add-button">Salvar item</button>
        </form>
        
        <ul id="lista-de-compras">
            <h2>Lista de Compras</h2>
            <hr />
            <li>
                <div class="item-list-container">
                    <div class="container-item-name">
                        <div class="checkbox-container">
                            <label for="checkbox-1">
                                <input type="checkbox" class="checkbox-input" id="checkbox-1" />
                                <div class="checkbox-customizado checked"></div>
                            </label>
                        </div>
                        <p class="product">Nome do Produto</p>
                    </div>
                    <div class="buttons">
                        <button id="delete" class = "item-lista-button">
                            <img src="img/delete.svg" alt="Deletar">
                        </button>
                        <button id="edit" class = "item-lista-button">
                            <img src="img/edit.svg" alt="Editar">
                        </button>
                    </div>
                </div>
                <p class="date">Quarta-feira (11/09/2024) às 10:29</p>
            </li>
        </ul>
    </main>

    <script src="script.js"></script>
</body>
</html>

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Atualmente está como na imagem acima, mas deveria estar alinhado o checkbox e o nome do produto como no primeiro item.

3 respostas

JS:

const item = document.querySelector('#input-text');
const botaoSalvar = document.querySelector('#add-button');
const listaDeCompras = document.querySelector('#lista-de-compras');
let contador = 0;

botaoSalvar.addEventListener('click', adicionarItem);

function adicionarItem(evento){
    evento.preventDefault() //evita que o formulario att sozinho;

    const itemDaLista = document.createElement('li');
    const containerItemDaLista = document.createElement('div');
    containerItemDaLista.classList.add('item-list-container');
    itemDaLista.appendChild(containerItemDaLista);

    //Container do Checkbox e nome do item
    const containerItemNome = document.createElement('div');
    containerItemNome.classList.add('.container-item-name');
    containerItemDaLista.appendChild(containerItemNome);

    //Container do Checkbox
    const containerCheckbox = document.createElement('div');
    containerCheckbox.classList.add('checkbox-container');

    const checkboxInput = document.createElement('input');
    checkboxInput.type = 'checkbox';
    checkboxInput.classList.add('checkbox-input');
    checkboxInput.id = "checkbox-" + contador++;

    const checkboxLabel = document.createElement('label');
    checkboxLabel.setAttribute('for', checkboxInput.id);

    const checkboxCustomizado = document.createElement('div');
    checkboxCustomizado.classList.add('checkbox-customizado');

    checkboxLabel.appendChild(checkboxInput);
    checkboxLabel.appendChild(checkboxCustomizado);
    containerCheckbox.appendChild(checkboxLabel);
    containerItemNome.appendChild(containerCheckbox);

    const nomeDoItem = document.createElement('p');
    nomeDoItem.classList.add('product');
    nomeDoItem.innerText = item.value;
    containerItemNome.appendChild(nomeDoItem);

    //Container dos botões
    const containerBotoes = document.createElement('div');
    containerBotoes.classList.add('buttons');

    const botaoRemover = document.createElement('button');
    botaoRemover.classList.add('item-lista-button');7

    const imagemRemover = document.createElement('img');
    imagemRemover.src = 'img/delete.svg';
    imagemRemover.alt = 'Remover';
    botaoRemover.appendChild(imagemRemover);

    const botaoEditar = document.createElement('button');
    botaoEditar.classList.add('item-lista-button');

    const imagemEditar = document.createElement('img');
    imagemEditar.src = 'img/edit.svg';
    imagemEditar.alt = 'Editar';
    botaoEditar.appendChild(imagemEditar);
    
    containerBotoes.appendChild(botaoRemover);
    containerBotoes.appendChild(botaoEditar);
    containerItemDaLista.appendChild(containerBotoes);
    
    itemDaLista.appendChild(containerItemDaLista);
    listaDeCompras.appendChild(itemDaLista);
}

CSS:

@import url('https://fonts.googleapis.com/css2?family=Krona+One&family=Montserrat:ital,wght@0,100..900;1,100..900&family=Numans&display=swap');


*{
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

:root{
    --title-font-family:"Krona One", sans-serif;
    --text-font-family: "Numans", sans-serif;
    --body-color: linear-gradient(180deg, #000000 0%, #26327F 100%);
    --background-color: #F9F9F9;
    --primary-color: #F55B64;
    --secundary-color: #C2373F;
    --black: #131730;
}

body{
    background: var(--body-color);
    background-repeat: no-repeat;
    height: 100vh;

    display: flex;
    flex-direction: column;
    align-items: center;
}

main{
    margin-top: 64px;

    display: flex;
    flex-direction: column;
    gap: 24px;

    width: 440px;
    align-items: center;
    background-color: var(--background-color);
    border-radius: 16px;
    padding: 56px;
    
}

h2{
    font-family: var(--title-font-family);
    color: var(--primary-color);
    font-size: 20px;
    line-height: 32px;
    text-align: left;
}

hr{
    border: none;
    border-bottom: 3px dotted var(--primary-color);
    margin-bottom: 24px;
    width: 100%;
}

p{
    font-family: var(--text-font-family);
    font-size: 18px;
    line-height: 24px;
    font-weight: 400;
    text-align: left;
    color: var(--black);
    
}

#input-text{
    padding: 12px 16px;
    display: block;
    width: 307px;
    border: 1px solid var(--black);
    border-radius: 24px;
}

#input-text::placeholder{
    font-family: "Montserrat", sans-serif;
    line-height: 19px;
    font-size: 16px;
}

#add-button{
    padding: 12px 16px;
    border: none;
    border-radius: 24px;
    background-color: var(--primary-color);
    font-family: var(--text-font-family);
    color: var(--background-color);
    font-size: 18px;
    line-height: 24px;
}

form{
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

ul{
    list-style-type: none;
    width: 100%;
}

.item-list-container{
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.container-item-name{
    display: flex;
    align-items: center;
    gap: 8px;
}

.product{
    font-size: 16px;
    line-height: 20px;
}

.date{
    font-size: 12px;
    line-height: 20px;
}

.item-lista-button{
    border: none;    
    background-color: transparent;
    cursor: pointer;
}

.checkbox-input{
    display: none;
}

.checkbox-customizado{
    width: 20px;
    height: 20px;
    background-color: var(--background-color);
    border: 1px solid var(--black);
    cursor: pointer;
    border-radius: 4px;
}

.checked {
    background-color: var(--black);
    position: relative;
}


.checked::after {
    content: "";
    position: absolute;
    left: 30%;
    top: -10%;
    width: 5px;
    height: 14px;

    border-top: 2px solid var(--background-color);
    border-left: 2px solid var(--background-color);

    transform: rotate(-140deg);
}
solução!

No seu JS passou um pequeno error despercebido, você ao criar a classe do elemento, acho que ao cópiar, você colocou um ponto junto:

containerItemNome.classList.add('.container-item-name');

Basta remover esse ponto que o problema estará solucionado.

OBS.: Se essa resposta te ajudou, não esquece de marcar como a Solução.