Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
How do I move components within my button horizontally and vertically based on screen width?

I would like my button, which contains 3 components (1 being on the far left, 2 being in the center, and 3 being on the far right (because of align-center: space between), which I need for another variant), to function like this, when the screen size is greater than 560px:

wireframe showing two divs on the left of a container and one div on the right

where flex-direction: row keeps it functioning how I want. Then, I want to change it slightly when the screen width drops below 560px. I would like to move the 1 component above the 2 and 3 components and be centered between them (horizontally), as can be seen here...

wireframe showing final solution with small screen size

I was able to achieve the solution with the picture when I placed a div surrounding component 1 and 2, but then I cannot achieve the final solution when the screen width is below 560px. I have been able to achieve that solution as well when I pair component 2 and 3 within the same div as well, but that makes the wider function not work how I want either.

I imagine there's a way to achieve what I want without enforcing these div groupings, but I'm not really sure. I'm also somewhat new to Javascript, so any advice about something I've said would be appreciated too.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

I used a breakpoint to change the ruleset for both the container element (button in your case) and the children.

The below example is in LESS, but you can see the compiled CSS in this codepen by using the dropdown on the CSS panel.

@mediumQuery: ~"screen and (max-width:560px)";

.container {
  display : flex;
  flex-direction: row;
  column-gap : 20px;
  border : 2px solid @yellow;
  padding : 10px;
  width : 100vw;
  div {
    display : inline-block;
    border : 2px solid @purple;
    width : 200px;
    height : 100px;
    font-size : 40px;
    line-height : 100px;
    text-align : center;
    &:last-child{
      margin-left: auto;
    }
  }
  @media @mediumQuery {
    display : block;
    flex-direction : unset;
    column-gap : unset;
    border : 2px solid @lightBlue;
    text-align : center;
    div {
      margin : 20px;
      &:first-child {
        display : block;
        margin : auto;
      }
    }
  }
}
about 4 years ago · Santiago Trujillo Relatório

0

you can put the div you want to be on top into another container and then play with @media queries and adjust how you want

main {
  display: flex;
  flex-wrap: wrap;
  max-width: 560px;
  border: 1px solid;
}
div {
  width: 100px;
  height: 100px;
  border: 1px solid;
}
div:nth-child(3) {
  margin-left: auto;
}
@media screen and (max-width: 560px) {
  main {
    justify-content: space-between;
  }
  section {
    width: 100%;
  }
  section div {
    margin: auto;
  }
}
@media screen and (max-width: 240px) {
  main {
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }
  div:nth-child(3) {
    margin: auto;
  }
}
<main>
  <section>
    <div>1</div>
  </section>
  <div>2</div>
  <div>3</div>
</main>

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda