Подскажите, как закруглить края у серой обёртки вокруг кнопки?
Ответы (2 шт):
Как-то так можна реализовать.
@import url("https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap");
* {
margin: 0;
padding: 0;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #fff;
font-family: "Lato", sans-serif;
font-weight: 400;
font-style: normal;
}
section {
padding-block: min(20vh, 2rem);
width: calc(min(76.5rem, 90%));
margin-inline: auto;
color: #111;
}
section a {
display: inline-block;
text-decoration: none;
}
section .container {
margin-top: 5em;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
gap: 2rem;
}
section .container .card:nth-child(1) .box .icon .iconBox {
background: #d3b19a;
}
section .container .card:nth-child(2) .box .icon .iconBox {
background: #70b3b1;
}
section .container .card:nth-child(3) .box .icon .iconBox {
background: #d05fa2;
}
section .container .card ul {
margin: 0;
padding: 0;
list-style-type: none;
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 0.625rem;
}
section .container .card ul li {
text-transform: uppercase;
background: var(--clr-tag);
color: #282828;
font-weight: 700;
font-size: 0.8rem;
padding: 0.375rem 0.625rem;
border-radius: 0.188rem;
}
section .container .card ul .branding {
color: #704a31;
}
section .container .card ul .packaging {
color: #1e3938;
}
section .container .card ul .marketing {
color: #4d1637;
}
section .container .card .content {
padding: 0.938rem 0.625rem;
}
section .container .card .content h3 {
text-transform: capitalize;
font-size: clamp(1.5rem, 1.3909rem + 0.4364vw, 1.8rem);
}
section .container .card .content p {
margin: 0.625rem 0 1.25rem;
color: #565656;
}
section .container .card-inner {
position: relative;
width: inherit;
height: 18.75rem;
background: var(--clr);
border-radius: 1.25rem;
border-bottom-right-radius: 0;
overflow: hidden;
}
section .container .card-inner .box {
width: 100%;
height: 100%;
background: #fff;
border-radius: 1.25rem;
overflow: hidden;
}
section .container .card-inner .box .imgBox {
position: absolute;
inset: 0;
}
section .container .card-inner .box .imgBox img {
width: 100%;
height: 100%;
object-fit: cover;
}
section .container .card-inner .box .icon {
position: absolute;
bottom: -0.375rem;
right: -0.375rem;
width: 6rem;
height: 6rem;
background: var(--clr);
border-top-left-radius: 50%;
}
section .container .card-inner .box .icon:hover .iconBox {
transform: scale(1.1);
}
section .container .card-inner .box .icon::before {
position: absolute;
content: "";
bottom: 0.375rem;
left: -1.25rem;
background: transparent;
width: 1.25rem;
height: 1.25rem;
border-bottom-right-radius: 1.25rem;
box-shadow: 0.313rem 0.313rem 0 0.313rem #fff;
}
section .container .card-inner .box .icon::after {
position: absolute;
content: "";
top: -1.25rem;
right: 0.375rem;
background: transparent;
width: 1.25rem;
height: 1.25rem;
border-bottom-right-radius: 1.25rem;
box-shadow: 0.313rem 0.313rem 0 0.313rem var(--clr);
}
section .container .card-inner .box .icon .iconBox {
position: absolute;
inset: 0.625rem;
background: #282828;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
transition: 0.3s;
}
section .container .card-inner .box .icon .iconBox span {
color: #fff;
font-size: 1.5rem;
}
<section>
<div class="container">
<div class="card">
<div class="card-inner" style="--clr:#fff;">
<div class="box">
<div class="imgBox">
<img src="https://images.unsplash.com/photo-1601049676869-702ea24cfd58?q=80&w=2073&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="Trust & Co.">
</div>
<div class="icon">
<a href="#" class="iconBox"> <span class="material-symbols-outlined">
</span></a>
</div>
</div>
</div>
<div class="content">
<h3>trust & co.</h3>
<p>Fill out the form and the algorithm will offer the right team of experts</p>
<ul>
<li style="--clr-tag:#d3b19a;" class="branding">branding</li>
<li style="--clr-tag:#70b3b1;" class="packaging">packaging</li>
</ul>
</div>
</div>
</div>
</section>
Пример, не мой, но концепция думаю понятна. Правда в твоем случаи ещё с тенями будут заморочки.
Скругления вокруг кнопки могут потребовать немало кода и подгонки. А ещё и тени для объёма... Да и масштабировать это позже будет затруднительно. Думаю, что наилучшим решением здесь будет использование растровой или векторной картинки.
Если картинку вставлять через тег <img>
или css-свойство background
, то результат будет, мягко говоря, не очень, так как при любых значениях object-fit
или background-size
и масштабировании, изображение будет либо обрезаться, либо менять свои пропорции.
Но, выход есть! Можно задействовать довольно редко используемое свойство border-image
и специально подготовленную картинку.
.image { position: relative; /* Only for example --> */ display: inline-grid; place-items: start center; min-height: 120px; max-height: 90vh; min-width: 120px; max-width: 90vw; box-shadow: 0 0 1px #00f; overflow: hidden; resize: both; }
.background { background: url('https://i.sstatic.net/6HWZR1PB.png') 0 0 / 100% 100% no-repeat; }
.border { border-image: url('https://i.sstatic.net/6HWZR1PB.png') 30% 65% 65% 30% fill / auto repeat; }
button {
position: absolute;
bottom: 8px; right: 4px;
width: 50px; height: 50px;
border: none; border-radius: 100vmax;
font: 28px/1em sans-serif;
color: #fff; background: #025790;
transition: .5s ease-in-out;
}
button:hover { transform: rotate3d(1, 1, 1, 1turn); }
<div class="background image">background<button>🡥</button></div>
<div class="border image">border<button>🡥</button></div>
Более подробно про свойство border-image
можно почитать здесь.