@toros0w

Как сделать фон белым не перекрывая основную кнопку?

Доброго времени суток, уважаемые.
Столкнулся с проблемой.
По дизайну нужно сделать так, что бы опции были ниже самой кнопки, то есть вот так.
669d49a3081c3319271740.jpeg

Я пытался сделать так, что бы всё стояли ровно, и смог добиться этого только с помощью background-color: none для options.

Вот так выглядит то, что получилось у меня.
669d49f597e5a468894958.jpeg

Ниже представляю компонент, думаю js не пригодится, поэтому вставлю только template и styles

<template>
  <div :class="['custom-select-wrapper', { open: isOpen }]" @click="toggleDropdown">
    <div class="selected-option">
      {{ selectedOption ? selectedOption.label : 'Categories' }}
    </div>
    <div class="custom-select"></div>
    <img src="/src/assets/icons/CARET_DOWN.svg" alt="" class="custom-sellect-arrow" />
    <div v-if="isOpen" class="options">
      <div
        v-for="option in options"
        :key="option.value"
        class="option"
        @click="selectOption(option)"
      >
        {{ option.label }}
      </div>
    </div>
  </div>
</template>


<style scoped>
.custom-select-wrapper {
  position: relative;
  width: 302px;
  border: 2px solid var(--gray-800);
  border-radius: 20px;
  box-sizing: border-box;
  z-index: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  transition: background-color 0.2s linear 0.1s;
  font-family: var(--syne);
  font-weight: 400;
  color: var(--gray-800);
  font-size: 16px;
  box-shadow: 12px 12px 0px 0px var(--orange-500);
}
.custom-select-wrapper:hover {
  background-color: var(--yellow-500);
}
.custom-select {
  position: relative;
  height: 50px;
  display: flex;
  justify-content: space-between;
  padding: 0 30px 0 30px;
  width: 302px;
  align-items: center;
  border-bottom: none;
  border-radius: 20px 20px 0 0;
  z-index: 1;
}
.custom-sellect-arrow {
  margin-right: 18px;
}
.selected-option {
  cursor: pointer;
  width: 100%;
  text-align: center;
}
.options {
  position: absolute;
  top: 100%;
  /* left: 0; */
  min-width: 302px;
  background-color: none;
  border-right: 2px solid var(--gray-800);
  border-left: 2px solid var(--gray-800);
  border-bottom: 2px solid var(--gray-800);
  border-bottom-left-radius: 20px;
  border-bottom-right-radius: 20px;
  padding-top: 35px;
  margin-top: -15px;
  z-index: -1;
}

.option {
  cursor: pointer;
  display: flex;
  justify-content: left;
  padding-left: 22px;
  align-items: center;
  height: 45px;
  background-color: var(--white);
}
.custom-select-wrapper.open {
  background-color: var(--yellow-500);
}
.option:hover {
  background-color: var(--blue-500);
  border-top: 2px solid var(--gray-800);
  border-bottom: 2px solid var(--gray-800);
}
.option:last-child {
  border-bottom-color: transparent;
  border-bottom-left-radius: 20px;
  border-bottom-right-radius: 20px;
}
</style>


Как добиться результата по дизайну?

P.S. вот что получается, если дать нужный background-color: white вместо none.
669d4b60b42be140667098.jpeg
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
Wispik
@Wispik

и смог добиться этого только с помощью background-color: none для options.

Почему? А если белый цвет на фон поставить? Как раз должно получиться как в дизайне
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы