Как убрать лишние выступы у блоки меню, имеющих закругленные границы?
Чтобы у всех пунктов табулированного меню было скругление.
$(document).ready(function() {
$(".t-head-item").on('click', function() {
$(".t-head-item ").removeClass("t-head-item--active").eq($(this).index()).addClass("t-head-item--active");
var index = $(this).index();
$(".t-body").hide().eq(index).fadeIn()
})
})
body {
padding: 100px;
}
.t {
--tab-background: #437f98;
--tab-text-color: #fff8f8;
--tab-radius: 15px;
--tab-padding: 20px;
display: grid;
grid-template-rows: auto auto;
grid-template-columns: minmax(1rem, 1fr);
min-width: 200px;
color: var(--tab-text-color);
filter: drop-shadow(2px 4px 6px gray);
}
.t-head {
display: flex;
justify-content: flex-end;
}
.t-head-item {
position: relative;
display: flex;
align-items: center;
justify-self: end;
width: 50%;
padding: var(--tab-padding);
padding-bottom: calc(var(--tab-padding) / 2);
border-radius: var(--tab-radius) var(--tab-radius) 0 0;
filter: drop-shadow(-4px 0 2px gray);
}
.t-head-item:before {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: calc(var(--tab-radius) * 2);
height: calc(var(--tab-radius) * 2);
background: transparent;
border-radius: var(--tab-radius);
box-shadow: var(--tab-radius) var(--tab-radius) 0 0 var(--tab-background);
transform: translateX(-100%);
}
.t-head span {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-weight: 600;
}
.t-body {
z-index: 2;
padding: var(--tab-padding);
border-radius: var(--tab-radius) 0 var(--tab-radius) var(--tab-radius);
background: var(--tab-background);
}
.t-head-item--active {
background: var(--tab-background);
}
<div class="t">
<div class="t-head">
<div class="t-head-item t-head-item--active">
text1
</div>
<div class="t-head-item">Header with icon</div>
</div>
<div class="t-body">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero officia, quam nulla quis praesentium iste quibusdam dicta at illo soluta sapiente est illum vitae. Inventore neque excepturi vitae voluptas reiciendis!
</div>
<div class="t-body" style="display: none">
2Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero officia, quam nulla quis praesentium iste quibusdam dicta at illo soluta sapiente est illum vitae. Inventore neque excepturi vitae voluptas reiciendis!
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Рекомендую изучить градиенты, ибо это предоставляет дополнительные и гораздо более широкие возможности.
$(document).ready(function() {
$(".t-head-item").on('click', function() {
$(".t-head-item ").removeClass("t-head-item--active").eq($(this).index()).addClass("t-head-item--active");
var index = $(this).index();
$(".t-body").hide().eq(index).fadeIn();
})
})
body {
padding: 100px;
}
.t {
--tab-background: #437f98;
--tab-text-color: #fff8f8;
--tab-radius: 15px;
--tab-padding: 20px;
display: grid;
grid-template-rows: auto auto;
grid-template-columns: minmax(1rem, 1fr);
min-width: 200px;
color: var(--tab-text-color);
filter: drop-shadow(2px 4px 6px gray);
}
.t-head {
display: flex;
justify-content: flex-end;
}
.t-head-item {
position: relative;
display: flex;
align-items: center;
justify-self: end;
width: 50%;
padding: var(--tab-padding);
padding-bottom: calc(var(--tab-padding) / 2);
border-radius: var(--tab-radius) var(--tab-radius) 0 0;
text-shadow: 0 2px 3px gray;
}
.t-head-item::before,
.t-head-item::after {
content: "";
position: absolute;
bottom: 0;
width: var(--tab-radius);
height: var(--tab-radius);
}
.t-head-item.t-head-item--active:not(:first-child)::before {
right: 100%;
background: 100% 100% / var(--tab-radius) var(--tab-radius) radial-gradient(var(--tab-radius) circle at 0 0, transparent calc(100% - 1px), var(--tab-background) 100%) no-repeat;
}
.t-head-item.t-head-item--active:not(:last-child)::after {
left: 100%;
background: 100% 100% / var(--tab-radius) var(--tab-radius) radial-gradient(var(--tab-radius) circle at 100% 0, transparent calc(100% - 1px), var(--tab-background) 100%) no-repeat;
}
.t-head span {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-weight: 600;
}
.t-head-item--active {
background: var(--tab-background);
}
.t-body {
z-index: 2;
padding: var(--tab-padding);
border-radius: var(--tab-radius);
background: var(--tab-background);
}
.t-head + .t-body {
border-radius: 0 var(--tab-radius) var(--tab-radius) var(--tab-radius);
}
.t-body:last-child {
border-radius: var(--tab-radius) 0 var(--tab-radius) var(--tab-radius);
}
<div class="t">
<div class="t-head">
<div class="t-head-item t-head-item--active">Tab 1</div>
<div class="t-head-item">Tab 2</div>
<div class="t-head-item">Tab 3</div>
<div class="t-head-item">Tab 4</div>
</div>
<div class="t-body">
1. Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero officia, quam nulla quis praesentium iste quibusdam dicta at illo soluta sapiente est illum vitae. Inventore neque excepturi vitae voluptas reiciendis!
</div>
<div class="t-body" style="display: none">
2. Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero officia, quam nulla quis praesentium iste quibusdam dicta at illo soluta sapiente est illum vitae. Inventore neque excepturi vitae voluptas reiciendis!
</div>
<div class="t-body" style="display: none">
3. Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero officia, quam nulla quis praesentium iste quibusdam dicta at illo soluta sapiente est illum vitae. Inventore neque excepturi vitae voluptas reiciendis!
</div>
<div class="t-body" style="display: none">
4. Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero officia, quam nulla quis praesentium iste quibusdam dicta at illo soluta sapiente est illum vitae. Inventore neque excepturi vitae voluptas reiciendis!
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>