#html #twitter-bootstrap #css #css-shapes
#HTML #twitter-bootstrap #css #css-shapes
Вопрос:
Я использую bootstrap 4 и пытаюсь создать эту форму изображения:
Весь квадрат — это мое изображение, но я бы хотел отрезать красную часть или сделать ее прозрачной, чтобы увидеть цвет фона.
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<img src="path/to/image" class="img-fluid" alt="Some text">
</div>
</div>
</div>
Как мне это сделать?
Комментарии:
1. Самым простым способом было бы сделать изображение в формате png и просто создать нужную форму в photoshop, если вам нужно использовать CSS, вы можете использовать обрезку или маскировку, но они не поддерживаются широко
2. Я думаю
Photoshop
, это лучший ответ на ваш вопрос.
Ответ №1:
CSS — код
Этого можно легко достичь , используя только CSS border-radius
. Ниже приведен простой пример.
body {
background: blue;
}
img {
border-radius: 100% 20% 0% 0% / 15% 40% 0% 0%;
overflow: hidden;
}
<img src="https://placekitten.com/200/200" />
Используя предоставленный вами HTML-код, так же просто добавить его в
body {
background: blue;
}
img {
border-radius: 100% 20% 0% 0% / 15% 40% 0% 0%;
overflow: hidden;
}
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<img src="https://placekitten.com/200/200" class="img-fluid" alt="Some text">
</div>
</div>
</div>
SVG / clip-path
Альтернативой является использование пути к клипу SVG, который затем используется на вашем изображении.
Это немного отличается от ответа Персийна, но в том же духе
body {
background: red;
}
img {
-webkit-clip-path: url("#shape_clip");
clip-path: url("#shape_clip");
width: 200px;
height: 200px;
}
<svg width="0" height="0">
<defs>
<clipPath id="shape_clip" clipPathUnits="objectBoundingBox">
<path d="M0,1 L1,1 L1,.3 Q1,0 .65,.1 L0,.25z" />
</clipPath>
</defs>
</svg>
<img src="https://placekitten.com/200/300" />
Комментарии:
1. Это уже близко, но не совсем то, чего я так пытаюсь достичь. Радиус 20% правильный, но я хочу прямую диагональную линию
2. @JasonHall добавьте альтернативу SVG / clip-path, которая должна соответствовать вашим требованиям
Ответ №2:
SVG
Сложные формы могут быть труднодостижимы в CSS.
Я бы рекомендовал использовать SVG для создания этой фигуры
<svg viewBox="0 0 100 100" width="300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink">
<clipPath id="clip">
<path d="M5,20
C0,20 70,10 70,10
C70,10 85,10 85,30
V95
H5Z"/>
</clipPath>
<image clip-path="url(#clip)" xlink:href="https://placekitten.com/g/300/300" x="0" y="0" height="100%" width="100%"/>
</svg>
Комментарии:
1. Эта форма практически то, что мне нужно, как я могу убедиться, что я использую для этого реальное изображение вместо черного цвета? «Раньше не так много разбирался в svg и путях
2. @JasonHall добавил изображение (котенка) и превратил путь в клип-путь вместо этого 🙂
3. Это именно то, что мне было нужно. Если я помещу SVG в столбец из Bootstrap, возможно ли сделать его адаптивным для всех размеров?
4. SVG по умолчанию адаптируется для всех размеров. Ответ @Stewartside svg на самом деле более отзывчивый, чем мой.
Ответ №3:
Вы могли бы достичь этого эффекта с помощью маскировки изображения SVG. Я не знаю размеров вашей маски, но эта ссылка должна вам помочь:
Ответ №4:
Вы можете использовать что-то вроде приведенного ниже, чтобы получить желаемый эффект, вам нужно будет отредактировать его, чтобы добавить к нему картинку. Но CSS before
-теги — ваш друг
ОБНОВЛЕНО
.clipboard, .shadowboard {
position: absolute;
top: 10px;
left: 10px;
right: 10px;
bottom: 10px;
background-color: #d3d0c9;
background-image: url(http://i1.wp.com/cdn.batman-news.com/wp-content/uploads/2014/06/Batman-News-Default.jpg);
background-size: cover;
background-position: center center;
border-top-right-radius: 65px;
}
<div class="clipboard" style="-webkit-clip-path: polygon(0 31%, 100% -4%, 100% 100%, 0% 100%);clip-path: polygon(0 31%, 100% -4%, 100% 100%, 0% 100%);"></div>
Комментарии:
1. Если вы попытаетесь добавить изображение, это полностью разрушит эффект
2. Форма становится очень близкой, но когда я пытаюсь сделать ее действительно изображением.. это не работает
3. Я обновил его, пожалуйста, взгляните на обновленный код
4. @Sphinx почему вы помещаете путь к клипу внутри атрибута стиля? Просто установите ее в css.