Как срезать угол с помощью CSS, когда необходимо фоновое изображение?

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

Выше приведено изображение проекта, над которым я работаю. Вот как далеко я продвинулся:

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

Создать коробку было довольно просто; однако теперь я НЕ ПОНЯЛ, как создать этот срезанный угол в левом нижнем углу. Я уже перепробовал кучу вещей, и большинство из них работает, если фон не прозрачен, а представляет собой блок цвета. Поскольку фоном должно быть это изображение, я не могу заставить срезанный угол работать, если одна сторона не имеет определенного цвета. Это мой код:

<div class="profile">
    // HTML content
</div>

<style>
   profile {
   border: 2px solid #fff;
   color: #fff;
   height: 100%;
   padding: 10px;
   width: 250px;
</style>

Я уже пробовал несколько вещей, например, здесь (не точный код, который я использовал, но я следовал этому примеру):

.cut {
  border: none;
  position: relative;
}

.cut:before {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  border-bottom: 20px solid lightgrey;
  border-left: 20px solid #e67e22;
  width: 0;
}

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

Кто-нибудь знает, как это сделать? Предложения очень ценятся. Спасибо!


person Chris Iridium    schedule 20.09.2017    source источник


Ответы (2)


Вы можете использовать элемент before/after, чтобы сделать нижнюю часть такой:

.profile {
position:relative;
display:inline-block;
margin:50px;
border:1px solid #000;
border-bottom:none;
width:100px;
height:200px;
background:#ccc;
}
.profile:after {
content:" ";
position:absolute;
border:1px solid #000;
height:20px;
width:80px;
bottom:-20px;
right:-1px;
border-top:0;
border-left:0;
background:#ccc;
}
.profile:before {
content:" ";
position:absolute;
border-bottom:1px solid #000;
height:29px;
width:29px;
transform:rotate(45deg);
bottom:-15px;
left:6px;
background:#ccc;
}
<div class="profile"></div>

нижняя часть разделена на две части: прямоугольник только с двумя границами + квадрат с одной границей, повернутой на 45°

Надеюсь, поможет

NB: Будьте осторожны при изменении размеров

person Temani Afif    schedule 20.09.2017
comment
Вот это сработало! Большое спасибо за быстрый ответ. - person Chris Iridium; 21.09.2017

Я думаю, вы пытаетесь срезать угол изображения вместо div, поэтому вы можете сделать что-то вроде этого:

body {
    background: url('https://www.lunapic.com/editor/premade/o-paint-bucket.gif');
}

.container {
    display: inline-block;
    width: 200px;
    height: 300px;
    overflow: hidden;
}

.container .image_container {
    width: 320px;
    height: 550px;
    overflow: hidden;
    display: block;
    position: relative;
    transform: rotate(45deg);
    margin-left: calc(260px - 360px);
    margin-top: -40px;
}

.container .image_container .image {
    transform: rotate(-45deg);
    margin-top: 10px;
    margin-left: -10px;
}
<div class="container">
  <div class="image_container">
    <div class="image">
      <img src="https://www.w3schools.com/css/img_fjords.jpg" />
    </div>
  </div>
</div>

person Adeel    schedule 20.09.2017
comment
извините, я сломал верхний левый угол, но теперь, я думаю, вы можете обрезать нижний угол изображения :) - person Adeel; 20.09.2017