Imagine tab based list selection where active element (li) is getting extra box shadow. Also the bottom part (description) is having same box shadow to fake the selected tab and description div having box shadow and standing out.
Problem is when I apply box shadow to description div it also throws a shadow over the active li element, therefore destroying the imitation of folder.
.list ul,
.list li {
margin: 0;
padding: 0;
}
.list ul {
border: 1px solid red;
}
.list li {
display: flex;
display: inline-block;
padding: 20px 10px;
border-right: 1px solid red;
}
.list li.active {
box-shadow: 0px -5px 30px 1px rgba(62, 57, 107, .77), 0px -5px 9px 1px rgba(62, 57, 107, .76);
border-right: 0;
}
.desc {
border: 1px solid red;
border-top: 0;
box-shadow: 0px -5px 30px 1px rgba(62, 57, 107, .77), 0px -5px 9px 1px rgba(62, 57, 107, .76);
}
<div class="list">
<ul>
<li class="active">
Monday
</li>
<li>
Tuesday
</li>
<li>
Wednesday
</li>
</div>
<div class="desc">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque, molestiae aperiam eos beatae reiciendis quisquam libero quae voluptatum possimus, est a! Totam similique facilis accusantium molestias voluptatum accusamus amet suscipit?
</div>
Codepen: https://codepen.io/anon/pen/EMjoYr
You can hide the box shadow under the active li by giving it a background colour and a higher z-index than the element with the box-shadow:
Please note I have also added an end ul
tag as yours is missing in the question
.list ul,
.list li {
margin: 0;
padding: 0;
}
.list ul {
border: 1px solid red;
}
.list li {
display: flex;
display: inline-block;
padding: 20px 10px;
border-right: 1px solid red;
}
.list li.active {
background:white; /* match background colour of page */
position:relative; /* add this for z-index to work */
z-index:1; /* add this to go ovber top of box shadow */
border-bottom: 1px solid white; /* this is to cover the bottom line */
margin-bottom:-1px; /* move the border over the line */
box-shadow: 0px -5px 30px 1px rgba(62, 57, 107, .77), 0px -5px 9px 1px rgba(62, 57, 107, .76);
}
.desc {
border: 1px solid red;
border-top: 0;
box-shadow: 0px -5px 30px 1px rgba(62, 57, 107, .77), 0px -5px 9px 1px rgba(62, 57, 107, .76);
}
<div class="list">
<ul>
<li class="active">
Monday
</li>
<li>
Tuesday
</li>
<li>
Wednesday
</li>
</ul>
</div>
<div class="desc">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque, molestiae aperiam eos beatae reiciendis quisquam libero quae voluptatum possimus, est a! Totam similique facilis accusantium molestias voluptatum accusamus amet suscipit?
</div>
If you need to remove the bit of shadow caused by the active tab, I would cover it with a pseudo element (and add padding to the textbox):
.list ul,
.list li {
margin: 0;
padding: 0;
}
.list ul {
border: 1px solid red;
}
.list li {
display: flex;
display: inline-block;
padding: 20px 10px;
border-right: 1px solid red;
}
.list li.active {
/* match background colour of page */
background: white;
/* add this for z-index to work */
position: relative;
/* add this to go ovber top of box shadow */
z-index: 1;
box-shadow: 0px -5px 30px 1px rgba(62, 57, 107, .77), 0px -5px 9px 1px rgba(62, 57, 107, .76);
}
.list li.active:after {
content: '';
display: block;
/* height of desc padding */
height: 20px;
position:absolute;
top:100%;
left:0; right:0;
background: white;
}
.desc {
border: 1px solid red;
padding: 20px;
border-top: 0;
box-shadow: 0px -5px 30px 1px rgba(62, 57, 107, .77), 0px -5px 9px 1px rgba(62, 57, 107, .76);
}
<div class="list">
<ul>
<li class="active">
Monday
</li>
<li>
Tuesday
</li>
<li>
Wednesday
</li>
</ul>
</div>
<div class="desc">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque, molestiae aperiam eos beatae reiciendis quisquam libero quae voluptatum possimus, est a! Totam similique facilis accusantium molestias voluptatum accusamus amet suscipit?
</div>