Двойная рамка делает div больше

Я использую React и Tailwind, я хочу добиться этого:

Поэтому я добавил границу для кнопок + и -, а также добавил границу для родительского элемента div, чтобы отобразить границу для всего элемента.

Проблема в том, что границы кнопок кажутся больше из-за двух границ.

Если я использую рамку только справа для кнопки -, мы увидим, что она пропускает немного пикселей без рамки...

Как я могу достичь этого?

Вот Игровая площадка Tailwind

Вот мой код:

<div class = "p-8">
  <div class = "flex w-fit items-center rounded ring-1 ring-neutral-300">
    <button type = "button" class = "h-10 w-10 rounded border border-neutral-300 bg-transparent focus:outline-none">-</button>

    <input id = "{id}" type = "number" value = "{count}" class = "arrow-hide h-10 w-16 rounded border-none text-center text-base font-semibold focus:outline-none" />

    <button type = "button" class = "h-10 w-10 rounded border border-neutral-300 bg-transparent focus:outline-none">+</button>
  </div>
</div>

Спасибо !

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку вам также нужна закругленная граница на внутреннем углу кнопок, ИМХО лучшее решение — сделать так, чтобы они перекрывали границу контейнера:

margin: -1px; position: relative; z-index: 1; height: calc(2.5rem + 2px);

Им нужны два дополнительных пикселя высоты, так что, вероятно, их придется жестко закодировать вот так, не вижу никакого способа напрямую объединить это с классом h-10 здесь. z-index необходим для того, чтобы поле ввода не было поверх правой границы левой кнопки.

И, конечно же, это будет работать только в том случае, если вам не нужна альфа-прозрачность на этих границах.

Ответ принят как подходящий

Если я использую рамку только справа для кнопки -, мы увидим, что она пропускает немного пикселей без рамки...

На самом деле он не пропускает ни одного пикселя, он кажется блеклым из-за закругленной границы.


Возможное решение:

  1. Удалите rounded из разделов + и -
  2. Примените только левую и правую границу к соответствующим элементам div.

Обновленный код:

<div class = "p-8">
  <div class = "flex w-fit items-center rounded ring-1 ring-neutral-300">
    <button type = "button" class = "h-10 w-10 border-r border-neutral-300 bg-transparent focus:outline-none">-</button>

    <input id = "{id}" type = "number" value = "{count}" class = "arrow-hide h-10 w-16 rounded border-none text-center text-base font-semibold focus:outline-none" />

    <button type = "button" class = "h-10 w-10 border-l border-neutral-300 bg-transparent focus:outline-none">+</button>
  </div>
</div>

Выход:

Попутный ветер

Большое спасибо. Это не на 100% похоже на изображение, но я могу справиться с закругленными углами. Спасибо !

Johan 30.03.2023 09:26

Другие вопросы по теме