Создайте пользовательский закругленный угол на изображении, используя только CSS

#css

#css

Вопрос:

Ищете разумный способ использовать CSS только для применения левого закругленного угла к изображению. Использование стандартного свойства CSS border radius не подходит, так как оно слишком круглое. Лучшее, что я мог придумать, это разместить SVG-изображение с эффектом округления поверх изображения — не идеально, так как иногда это может «мерцать» при загрузке страницы.

 .banner {background:hotpink}

.img-wrap:before {
content: "";
background: url(img/rounded-corner-left.svg) no-repeat;
position: absolute;
top: 0;
width: 100%;
display: block;
background-size: contain;
height: 100%;
background-position: top left;
z-index: 2;
}
  

введите описание изображения здесь

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

 border-radius: 20% 0 0 0 / 100% 0 0 0;
  

введите описание изображения здесь

Комментарии:

1. Так что-то вроде border-radius: 20% 0 0 0 / 100% 0 0 0; неприемлемо? Посмотрите clip-path и попробуйте что-нибудь с этим.

2. Я думаю, что я поторопился — к сожалению, он все еще слишком закруглен вверху с использованием border radius (я обновил вопрос с помощью border radius, примененного к изображению).

Ответ №1:

Свойство border-top-left-radius определяет радиус верхнего левого угла. или измените другие значения, например: right, left, bottom …

Пример :

 border-radius: 120px 20px 120px 20px;
border-radius: 0 50% 50% 50%;
border-radius: 40px 40px 0 0; // example this one is rounded top left corner 
only
  

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

Ответ №2:

Я не уверен, насколько круглой вы хотите, чтобы левая сторона была, поэтому приведенный ниже фрагмент кода показывает, как сделать левую сторону 100% круглой:

 .image-with-rounded-corner-on-the-left {
  border-top-left-radius: 100%;
  border-bottom-left-radius: 100%;
}  
 <img src="https://images.unsplash.com/photo-1508138221679-760a23a2285b?ixlib=rb-1.2.1amp;ixid=eyJhcHBfaWQiOjEyMDd9amp;auto=formatamp;fit=cropamp;w=667amp;q=80" alt="enter image description here" class="image-with-rounded-corner-on-the-left">  

И ниже показано, как сделать его круглым на 10%:

 .image-with-rounded-corner-on-the-left {
  border-top-left-radius: 10%;
  border-bottom-left-radius: 10%;
}  
 <img src="https://images.unsplash.com/photo-1508138221679-760a23a2285b?ixlib=rb-1.2.1amp;ixid=eyJhcHBfaWQiOjEyMDd9amp;auto=formatamp;fit=cropamp;w=667amp;q=80" alt="enter image description here" class="image-with-rounded-corner-on-the-left">  

Вы можете настроить, насколько круглой вы хотите сделать левую границу в процентах от линий

 border-top-left-radius: [put percentage here];
border-bottom-left-radius: [put percentage here];
  

Комментарии:

1. Спасибо за сообщение! Проблема с процентом радиуса границы примера, который вы предоставили, заключается в том, что радиус слишком сильно поглощает изображение, когда он имеет высокое значение, или когда он имеет низкое значение, он недостаточно «растянут» (единственный способ, которым я могу лучше всего объяснить этот желаемый эффект, — это посмотреть на пример изображенияв моем вопросе).