Как сделать элемент с одним изогнутым нижним правым border-ом на CSS

    Иногда в веб-дизайне требуется скруглить только один угол элемента, например, нижний правый, оставив остальные прямыми. Стандартное свойство border-radius позволяет задать радиус для каждого угла отдельно. Разберём два надёжных способа на чистом CSS без использования SVG.

    Способ 1: Использование border-radius с разными значениями

    Свойство border-radius принимает до четырёх значений (по часовой стрелке: верхний левый, верхний правый, нижний правый, нижний левый). Чтобы скруглить только нижний правый угол, задайте радиус для него, а остальным поставьте 0.

    .block {
      width: 200px;
      height: 100px;
      background: #f0f0f0;
      border: 2px solid #333;
      border-radius: 0 0 20px 0;
    }

    В этом примере border-radius: 0 0 20px 0 означает: верхний левый - 0, верхний правый - 0, нижний правый - 20px, нижний левый - 0. Метод работает во всех современных браузерах и не требует дополнительных элементов.

    Способ 2: Использование псевдоэлемента ::before или ::after

    Если вам нужно имитировать изогнутую границу без изменения фона самого блока (например, при сложном фоне), можно наложить псевдоэлемент с закруглённым углом поверх блока.

    .block {
      position: relative;
      width: 200px;
      height: 100px;
      background: #fff;
      border: 2px solid #333;
      overflow: hidden;
    }
    .block::after {
      content: '';
      position: absolute;
      bottom: -2px;
      right: -2px;
      width: 20px;
      height: 20px;
      background: #fff;
      border-radius: 0 0 0 20px;
    }

    Этот приём скрывает прямой угол рамки, создавая иллюзию скругления. Подходит для случаев, когда нужно сохранить прозрачность или сложный фон.

    Способ 3: Использование clip-path для изогнутого края

    Свойство clip-path позволяет обрезать элемент по произвольной траектории. Для скругления одного угла используйте функцию path() или inset() с закруглением.

    .block {
      width: 200px;
      height: 100px;
      background: #f0f0f0;
      border: 2px solid #333;
      clip-path: inset(0 0 0 0 round 0 0 20px 0);
    }

    Значение inset(0 0 0 0 round 0 0 20px 0) задаёт отступы от каждого края (все 0) и радиус скругления для нижнего правого угла 20px. Обратите внимание: clip-path обрезает и фон, и рамку, поэтому граница будет видна только по обрезанному контуру. Этот метод поддерживается всеми современными браузерами, но может не работать в старых версиях Internet Explorer.

    Какой способ выбрать?

    • border-radius - самый простой и кросс-браузерный вариант, если нужен именно скруглённый угол рамки.
    • Псевдоэлемент - когда требуется сложная анимация или сохранение прозрачности фона.
    • clip-path - если нужно обрезать блок по сложной кривой, но помните об ограничениях поддержки.

    Все описанные методы не требуют SVG и работают на чистом CSS. Выбирайте подходящий под вашу задачу.

    Часто задаваемые вопросы