Issue with position and overlapping - css
I've came across an issue while coding my navigation bar. When I hover over a navigation bar element it shows correctly the submenu but the submenu should stay there also when mouse cursor hovers from the element to the submenu. This works correctly if there is no element next to the navigation bar element.
I think it will be easier to explain on an example.
When icon below magnifying glass is hovered it shows the submenu correctly however, when hovered over the submenu it disappears. This does not happen when you hover over the ID card and the corresponding submenu.
I figured out it has to do something with the CSS position element but Im unable to find a solution.
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
$($(".arrow").parent().parent().parent()).click(function(){
if (!$('.navbar2').hasClass('closed')){
$(this).toggleClass("showMenu")
}
})
$('.navbar2 .logoDetails a').click(function(){
$('.navbar2').toggleClass('closed')
})
$('.navbar2 .search a').click(function(){
if ($('.navbar2').hasClass('closed')){
$('.navbar2').toggleClass('closed')
}
$("#navBarSearch").focus();
})
$('#navBarSearch').on("input", function() {
const searchedValue = $(this).val()
$('.searchResults').empty()
if (searchedValue != '') {
let matches = new Array()
$('.link').each(function(){
const linkText = $(this).text()
if (linkText.toLowerCase().indexOf(searchedValue.toLowerCase()) >= 0 && jQuery.inArray(linkText.toLowerCase(), matches) === -1) {
matches.push(linkText.toLowerCase())
$('.searchResults').append(`<li class="searchResultsItem"><a href='${$(this).attr('href')}'>${linkText}</a></li>`)
}
})
}
})
});
#import url('https://fonts.googleapis.com/css2?family=Poppins:wght#300;400;500;600;700&display=swap');
:root {
--dark-primary-color: #11101d;
--dark-secondary-color: #1d1b31;
--dark-text-color: #f6f1d1;
--dark-hoverBG-color: #f6f1d1;
--dark-hoverTX-color: #11101d;
}
.navbar2 {
font-family: 'Poppins', sans-serif;
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 260px;
background: var(--dark-primary-color);
transition: all 0.5s ease;
}
.navbar2.closed,
.navbar2.closed .bottomBar {
width: 78px;
}
.navbar2 .logoDetails {
padding-top: 15px;
top: 0;
height: 50px;
width: 100%;
display: flex;
align-items: center;
}
.navbar2 .logoDetails a {
font-size: 30px;
color: var(--dark-text-color);
height: 50px;
min-width: 78px;
text-align: center;
line-height: 50px;
transition: all 0.5s ease;
}
.navbar2 .logoDetails a.collapseIcon {
font-size: 30px;
color: var(--dark-text-color);
height: 50px;
min-width: 78px;
text-align: center;
line-height: 50px;
transition: all 0.5s ease;
}
.navbar2 .logoDetails a.collapseIcon:hover {
background: var(--dark-hoverBG-color);
color: var(--dark-hoverTX-color);
}
.navbar2 .logoDetails .logoName {
font-size: 22px;
color: var(--dark-text-color);
font-weight: 600;
text-decoration: none;
margin-left: 10px;
}
.navbar2.closed .logoDetails .logoName {
display: none;
}
.navbar2 .navLinks {
background: var(--dark-primary-color);
height: 100%;
padding: 15px 0 210px 0;
overflow: auto;
padding-inline-start: 0px!important;
margin-bottom: 0px;
}
.navbar2.closed .navLinks {
overflow: visible;
}
.navbar2 .bottomBar .navLinks {
padding: 0;
}
.navbar2 .navLinks::-webkit-scrollbar {
display: none;
}
.navbar2 .navLinks li {
list-style: none;
position: relative;
transition: all 0.5s ease;
margin-left: 10px;
}
.navbar2.closed .navLinks li {
margin-left: 0px;
}
.navbar2 .navLinks li input {
position: relative;
height: 100%;
width: 100%;
top: 0;
left: 0;
border-radius: 12px;
outline: none;
border: none;
background: var(--dark-secondary-color);
padding-left: 60px;
font-size: 18px;
color: var(--dark-text-color);
transition: all 0.5s ease;
}
.navbar2.closed .navLinks li input {
display: none;
}
.navbar2 .navLinks li .fa-search {
position: absolute;
z-index: 99;
color: var(--dark-text-color);
font-size: 22px;
transition: all 0.5s ease;
}
.navbar2.closed .navLinks li .fa-search:hover {
background: var(--dark-hoverBG-color);
color: var(--dark-hoverTX-color);
}
.navbar2 .navLinks ul.searchResults {
position: absolute;
width: 100%;
padding-left: 0px;
border: 1px solid var(--dark-hoverTX-color);
}
.navbar2 .navLinks ul.searchResults .searchResultsItem {
padding: .75rem 1.25rem;
margin-left: 0px;
background-color: var(--dark-hoverBG-color);
border: 1px solid var(--dark-hoverTX-color);
border-radius: 6px 6px 6px 6px;
z-index: 1;
width: 100%;
}
.navbar2 .navLinks ul.searchResults .searchResultsItem a {
color: var(--dark-hoverTX-color);
}
.navbar2 .navLinks ul.searchResults .searchResultsItem:hover {
background-color: var(--dark-primary-color);
color: var(--dark-text-color);
border: 1px solid var(--dark-hoverBG-color);
}
.navbar2 .navLinks ul.searchResults .searchResultsItem:hover a {
color: var(--dark-text-color);
}
.navbar2.closed .navLinks ul.searchResults,
.navbar2.closed .navLinks ul.searchResults .searchResultsItem {
display: none;
}
.navbar2 .navLinks li:hover {
background: var(--dark-secondary-color);
}
.navbar2 .navLinks li .iconLink {
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
}
.navbar2 .navLinks li .iconLink.search {
height: 50px;
margin-bottom: 10px;
}
.navbar2 .navLinks li i {
height: 50px;
min-width: 78px;
text-align: center;
line-height: 50px;
color: var(--dark-text-color);
font-size: 20px;
transition: all 0.3s ease;
}
.navbar2 .navLinks li.showMenu i.arrow {
transform: rotate(-180deg);
}
.navbar2.closed .navLinks i.arrow {
display: none;
}
.navbar2 .navLinks li a {
display: flex;
align-items: center;
text-decoration: none;
}
.navbar2 .navLinks li .linkName {
font-size: 18px;
font-weight: 400;
color: var(--dark-text-color);
}
.navbar2 .navLinks li .subMenu {
padding-inline-start: 0px;
padding: 6px 0px 0px 78px;
margin-top: -10px;
background-color: var(--dark-secondary-color);
display: none;
transition: all 0.3s ease;
}
.navbar2 .navLinks li .subMenu li {
margin: 0px;
}
.navbar2 .navLinks li.showMenu .subMenu {
display: block;
transition: all 0.3s ease;
}
.navbar2 .navLinks li .subMenu a {
color: var(--dark-text-color);
font-size: 15px;
padding: 5px 0;
white-space: nowrap;
opacity: 0.6;
}
.navbar2 .navLinks li .subMenu a:hover {
opacity: 1;
}
.navbar2.closed .navLinks li a .linkName {
display: none;
}
.navbar2.closed .navLinks li .subMenu {
position: absolute;
left: 100%;
top: -10px;
margin-top: 0;
padding: 10px 20px;
border-radius: 0 6px 6px 0;
transition: all 0.5s ease;
opacity: 0;
display: block;
pointer-events: none;
z-index: 999;
}
.navbar2.closed .navLinks li:hover .subMenu {
top: 0;
opacity: 1;
pointer-events: auto;
}
.navbar2 .navLinks li .subMenu .linkName {
display: none;
}
.navbar2.closed .navLinks li .subMenu .linkName {
font-size: 18px;
opacity: 1;
display: block;
}
.navbar2 .navLinks li .subMenu.blank {
opacity: 0;
pointer-events: none;
}
.navbar2.closed .navLinks li:hover .subMenu.blank {
top: 50%;
transform: translateY(-50%);
display: block;
}
.navbar2 .bottomBar {
border-top: 1px solid var(--dark-text-color);
position: fixed;
bottom: 0;
width: 260px;
transition: all 0.5s ease;
}
.mainSection {
position: absolute;
left: 260px;
width: calc(100% - 260px);
transition: all 0.5s ease;
}
.navbar2.closed ~ .mainSection {
left: 78px;
width: calc(100% - 78px);
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons#1.5.0/font/bootstrap-icons.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<div class="navbar2 closed">
<div class="logoDetails">
<i class="bi bi-list"></i>
<a href="{{ url_for('home.index') }}" class="logoName">
Test
</a>
</div>
<ul class="navLinks">
<li>
<div class="iconLink search">
<i class="fas fa-search"></i>
<input id="navBarSearch" type="text" placeholder="Search...">
</div>
<ul class="searchResults">
</ul>
</li>
<li>
<div class="iconLink">
<a href="#">
<i class="far fa-clone"></i>
<span class="linkName">Test1</span>
</a>
<i class="fas fa-chevron-down arrow"></i>
</div>
<ul class="subMenu">
<li><a class="linkName" href="#">Test1</a></li>
<li><a class="link" href="#">Test1.1</a></li>
<li><a class="link" href="#">Test1.2</a></li>
</ul>
</li>
<li>
<div class="iconLink">
<a href="#"><i class="fas fa-address-card"></i><span class="linkName">Test2</span>
</a>
<i class="fas fa-chevron-down arrow"></i>
</div>
<ul class="subMenu">
<li><a class="linkName" href="#">Test2</a></li>
<li><a class="link" href="#">Test2.1</a></li>
<li><a class="link" href="#">Test2.2</a></li>
</ul>
</li>
</ul>
<div class="bottomBar">
<ul class="navLinks">
<li>
<a href="#">
<i class="fas fa-bug"></i>
<span class="linkName">Report an issue</span>
</a>
<ul class="subMenu blank">
<li><a class="linkName" href="#">Report an issue</a></li>
</ul>
</li>
<li>
<a href="#">
<i class="fas fa-hammer"></i>
<span class="linkName">Feature request</span>
</a>
<ul class="subMenu blank">
<li><a class="linkName" href="#">Feature request</a></li>
</ul>
</li>
</ul>
</div>
</div>
<section class="mainSection">
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
</section>
The mainsection is being drawn above navbar2, so when you move the mouse over mainsection that will take the focus.
To solve this, you would just make sure the navbar2 is considered to be higher by putting something like z-index: 10000 into the CSS rules for that.
Like so:
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
$($(".arrow").parent().parent().parent()).click(function(){
if (!$('.navbar2').hasClass('closed')){
$(this).toggleClass("showMenu")
}
})
$('.navbar2 .logoDetails a').click(function(){
$('.navbar2').toggleClass('closed')
})
$('.navbar2 .search a').click(function(){
if ($('.navbar2').hasClass('closed')){
$('.navbar2').toggleClass('closed')
}
$("#navBarSearch").focus();
})
$('#navBarSearch').on("input", function() {
const searchedValue = $(this).val()
$('.searchResults').empty()
if (searchedValue != '') {
let matches = new Array()
$('.link').each(function(){
const linkText = $(this).text()
if (linkText.toLowerCase().indexOf(searchedValue.toLowerCase()) >= 0 && jQuery.inArray(linkText.toLowerCase(), matches) === -1) {
matches.push(linkText.toLowerCase())
$('.searchResults').append(`<li class="searchResultsItem"><a href='${$(this).attr('href')}'>${linkText}</a></li>`)
}
})
}
})
});
#import url('https://fonts.googleapis.com/css2?family=Poppins:wght#300;400;500;600;700&display=swap');
:root {
--dark-primary-color: #11101d;
--dark-secondary-color: #1d1b31;
--dark-text-color: #f6f1d1;
--dark-hoverBG-color: #f6f1d1;
--dark-hoverTX-color: #11101d;
}
.navbar2 {
font-family: 'Poppins', sans-serif;
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 260px;
background: var(--dark-primary-color);
transition: all 0.5s ease;
z-index: 10000; /*** ADDED THIS LINE ***/
}
.navbar2.closed,
.navbar2.closed .bottomBar {
width: 78px;
}
.navbar2 .logoDetails {
padding-top: 15px;
top: 0;
height: 50px;
width: 100%;
display: flex;
align-items: center;
}
.navbar2 .logoDetails a {
font-size: 30px;
color: var(--dark-text-color);
height: 50px;
min-width: 78px;
text-align: center;
line-height: 50px;
transition: all 0.5s ease;
}
.navbar2 .logoDetails a.collapseIcon {
font-size: 30px;
color: var(--dark-text-color);
height: 50px;
min-width: 78px;
text-align: center;
line-height: 50px;
transition: all 0.5s ease;
}
.navbar2 .logoDetails a.collapseIcon:hover {
background: var(--dark-hoverBG-color);
color: var(--dark-hoverTX-color);
}
.navbar2 .logoDetails .logoName {
font-size: 22px;
color: var(--dark-text-color);
font-weight: 600;
text-decoration: none;
margin-left: 10px;
}
.navbar2.closed .logoDetails .logoName {
display: none;
}
.navbar2 .navLinks {
background: var(--dark-primary-color);
height: 100%;
padding: 15px 0 210px 0;
overflow: auto;
padding-inline-start: 0px!important;
margin-bottom: 0px;
}
.navbar2.closed .navLinks {
overflow: visible;
}
.navbar2 .bottomBar .navLinks {
padding: 0;
}
.navbar2 .navLinks::-webkit-scrollbar {
display: none;
}
.navbar2 .navLinks li {
list-style: none;
position: relative;
transition: all 0.5s ease;
margin-left: 10px;
}
.navbar2.closed .navLinks li {
margin-left: 0px;
}
.navbar2 .navLinks li input {
position: relative;
height: 100%;
width: 100%;
top: 0;
left: 0;
border-radius: 12px;
outline: none;
border: none;
background: var(--dark-secondary-color);
padding-left: 60px;
font-size: 18px;
color: var(--dark-text-color);
transition: all 0.5s ease;
}
.navbar2.closed .navLinks li input {
display: none;
}
.navbar2 .navLinks li .fa-search {
position: absolute;
z-index: 99;
color: var(--dark-text-color);
font-size: 22px;
transition: all 0.5s ease;
}
.navbar2.closed .navLinks li .fa-search:hover {
background: var(--dark-hoverBG-color);
color: var(--dark-hoverTX-color);
}
.navbar2 .navLinks ul.searchResults {
position: absolute;
width: 100%;
padding-left: 0px;
border: 1px solid var(--dark-hoverTX-color);
}
.navbar2 .navLinks ul.searchResults .searchResultsItem {
padding: .75rem 1.25rem;
margin-left: 0px;
background-color: var(--dark-hoverBG-color);
border: 1px solid var(--dark-hoverTX-color);
border-radius: 6px 6px 6px 6px;
z-index: 1;
width: 100%;
}
.navbar2 .navLinks ul.searchResults .searchResultsItem a {
color: var(--dark-hoverTX-color);
}
.navbar2 .navLinks ul.searchResults .searchResultsItem:hover {
background-color: var(--dark-primary-color);
color: var(--dark-text-color);
border: 1px solid var(--dark-hoverBG-color);
}
.navbar2 .navLinks ul.searchResults .searchResultsItem:hover a {
color: var(--dark-text-color);
}
.navbar2.closed .navLinks ul.searchResults,
.navbar2.closed .navLinks ul.searchResults .searchResultsItem {
display: none;
}
.navbar2 .navLinks li:hover {
background: var(--dark-secondary-color);
}
.navbar2 .navLinks li .iconLink {
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
}
.navbar2 .navLinks li .iconLink.search {
height: 50px;
margin-bottom: 10px;
}
.navbar2 .navLinks li i {
height: 50px;
min-width: 78px;
text-align: center;
line-height: 50px;
color: var(--dark-text-color);
font-size: 20px;
transition: all 0.3s ease;
}
.navbar2 .navLinks li.showMenu i.arrow {
transform: rotate(-180deg);
}
.navbar2.closed .navLinks i.arrow {
display: none;
}
.navbar2 .navLinks li a {
display: flex;
align-items: center;
text-decoration: none;
}
.navbar2 .navLinks li .linkName {
font-size: 18px;
font-weight: 400;
color: var(--dark-text-color);
}
.navbar2 .navLinks li .subMenu {
padding-inline-start: 0px;
padding: 6px 0px 0px 78px;
margin-top: -10px;
background-color: var(--dark-secondary-color);
display: none;
transition: all 0.3s ease;
}
.navbar2 .navLinks li .subMenu li {
margin: 0px;
}
.navbar2 .navLinks li.showMenu .subMenu {
display: block;
transition: all 0.3s ease;
}
.navbar2 .navLinks li .subMenu a {
color: var(--dark-text-color);
font-size: 15px;
padding: 5px 0;
white-space: nowrap;
opacity: 0.6;
}
.navbar2 .navLinks li .subMenu a:hover {
opacity: 1;
}
.navbar2.closed .navLinks li a .linkName {
display: none;
}
.navbar2.closed .navLinks li .subMenu {
position: absolute;
left: 100%;
top: -10px;
margin-top: 0;
padding: 10px 20px;
border-radius: 0 6px 6px 0;
transition: all 0.5s ease;
opacity: 0;
display: block;
pointer-events: none;
z-index: 999;
}
.navbar2.closed .navLinks li:hover .subMenu {
top: 0;
opacity: 1;
pointer-events: auto;
}
.navbar2 .navLinks li .subMenu .linkName {
display: none;
}
.navbar2.closed .navLinks li .subMenu .linkName {
font-size: 18px;
opacity: 1;
display: block;
}
.navbar2 .navLinks li .subMenu.blank {
opacity: 0;
pointer-events: none;
}
.navbar2.closed .navLinks li:hover .subMenu.blank {
top: 50%;
transform: translateY(-50%);
display: block;
}
.navbar2 .bottomBar {
border-top: 1px solid var(--dark-text-color);
position: fixed;
bottom: 0;
width: 260px;
transition: all 0.5s ease;
}
.mainSection {
position: absolute;
left: 260px;
width: calc(100% - 260px);
transition: all 0.5s ease;
}
.navbar2.closed ~ .mainSection {
left: 78px;
width: calc(100% - 78px);
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons#1.5.0/font/bootstrap-icons.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<div class="navbar2 closed">
<div class="logoDetails">
<i class="bi bi-list"></i>
<a href="{{ url_for('home.index') }}" class="logoName">
Test
</a>
</div>
<ul class="navLinks">
<li>
<div class="iconLink search">
<i class="fas fa-search"></i>
<input id="navBarSearch" type="text" placeholder="Search...">
</div>
<ul class="searchResults">
</ul>
</li>
<li>
<div class="iconLink">
<a href="#">
<i class="far fa-clone"></i>
<span class="linkName">Test1</span>
</a>
<i class="fas fa-chevron-down arrow"></i>
</div>
<ul class="subMenu">
<li><a class="linkName" href="#">Test1</a></li>
<li><a class="link" href="#">Test1.1</a></li>
<li><a class="link" href="#">Test1.2</a></li>
</ul>
</li>
<li>
<div class="iconLink">
<a href="#"><i class="fas fa-address-card"></i><span class="linkName">Test2</span>
</a>
<i class="fas fa-chevron-down arrow"></i>
</div>
<ul class="subMenu">
<li><a class="linkName" href="#">Test2</a></li>
<li><a class="link" href="#">Test2.1</a></li>
<li><a class="link" href="#">Test2.2</a></li>
</ul>
</li>
</ul>
<div class="bottomBar">
<ul class="navLinks">
<li>
<a href="#">
<i class="fas fa-bug"></i>
<span class="linkName">Report an issue</span>
</a>
<ul class="subMenu blank">
<li><a class="linkName" href="#">Report an issue</a></li>
</ul>
</li>
<li>
<a href="#">
<i class="fas fa-hammer"></i>
<span class="linkName">Feature request</span>
</a>
<ul class="subMenu blank">
<li><a class="linkName" href="#">Feature request</a></li>
</ul>
</li>
</ul>
</div>
</div>
<section class="mainSection">
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
<p> Test Text</p>
</section>
Related
SVG not displaying when the sidebar is closed
I have a sidebar that shows and hides content depending on the collapse status. Here is a LIVE JS FIDDLE Instead of using icons, I would like to use SVG images but if I use SVG images there is a jumpy effect during the transition and the SVG disappears when the sidebar is closed. What I've tried: .sidebar.close .nav-links li a .sidebarSvg{ opacity: 1; } I thought changing the opacity to 1 would do the job but I am doing something wrong. I also tried with display: block; but it did not work. Is my SVG wrong? UPDATE: I also tried placing the svg outside of the <a> but that makes the jumpy effect worst during the toggle transition.
try this : .sidebar.close .nav-links li .iocn-link { width:300px; } Now You can try thsi : let arrow = document.querySelectorAll(".arrow"); for (var i = 0; i < arrow.length; i++) { arrow[i].addEventListener("click", (e)=>{ let arrowParent = e.target.parentElement.parentElement;//selecting main parent of arrow arrowParent.classList.toggle("showMenu"); }); } let sidebar = document.querySelector(".sidebar"); let sidebarBtn = document.querySelector(".bx-menu"); console.log(sidebarBtn); sidebarBtn.addEventListener("click", ()=>{ sidebar.classList.toggle("close"); }); #import url('https://fonts.googleapis.com/css2?family=Poppins:wght#300;400;500;600;700&display=swap'); *{ margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } .sidebarSvg{ margin-left: 15px; margin-right: 15px; } .sidebar{ position: fixed; top: 0; left: 0; height: 100%; width: 290px; background: #193D4C; z-index: 100; transition: all 0.5s ease; } .sidebar.close{ width: 78px; } .sidebar .logo-details{ height: 60px; width: 100%; display: flex; align-items: center; } .logo-icon{ margin-left: 15px; } .sidebar .logo-details i{ font-size: 30px; color: #fff; height: 50px; min-width: 78px; text-align: center; line-height: 50px; } .sidebar .logo-details .logo_name{ font-size: 22px; color: #fff; font-weight: 600; transition: 0.3s ease; transition-delay: 0.1s; margin-left:20px; } .sidebar.close .logo-details .logo_name{ transition-delay: 0s; opacity: 0; pointer-events: none; } .sidebar .nav-links{ height: 100%; padding: 30px 0 150px 0; overflow: auto; } .sidebar.close .nav-links{ overflow: visible; } .sidebar .nav-links::-webkit-scrollbar{ display: none; } .sidebar .nav-links li{ position: relative; list-style: none; transition: all 0.4s ease; } .sidebar .nav-links li:hover{ background: #193D4C; } .sidebar .nav-links li .iocn-link{ display: flex; align-items: center; justify-content: space-between; } .sidebar.close .nav-links li .iocn-link{ display: block; } .sidebar .nav-links li i{ height: 50px; min-width: 78px; text-align: center; line-height: 50px; color: #fff; font-size: 20px; cursor: pointer; transition: all 0.3s ease; } .sidebar .nav-links li.showMenu i.arrow{ transform: rotate(-180deg); } .sidebar.close .nav-links i.arrow{ display: none; } .sidebar .nav-links li a{ display: flex; align-items: center; text-decoration: none; } .sidebar .nav-links li a .link_name{ font-size: 18px; font-weight: 400; color: #fff; transition: all 0.4s ease; } .sidebar.close .nav-links li a .link_name{ opacity: 0; pointer-events: none; } .sidebar .nav-links li .sub-menu{ padding: 6px 6px 14px 80px; margin-top: -10px; background: #193D4C; display: none; } .sidebar .nav-links li.showMenu .sub-menu{ display: block; } .sidebar .nav-links li .sub-menu a{ color: #fff; font-size: 15px; padding: 5px 0; white-space: nowrap; opacity: 0.6; transition: all 0.3s ease; } .sidebar .nav-links li .sub-menu a:hover{ opacity: 1; } .sidebar.close .nav-links li .sub-menu{ position: absolute; left: 100%; top: -10px; margin-top: 0; padding: 10px 20px; border-radius: 0 6px 6px 0; opacity: 0; display: block; pointer-events: none; transition: 0s; } .sidebar.close .nav-links li:hover .sub-menu{ top: 0; opacity: 1; pointer-events: auto; transition: all 0.4s ease; } .sidebar .nav-links li .sub-menu .link_name{ display: none; } .sidebar.close .nav-links li .sub-menu .link_name{ font-size: 18px; opacity: 1; display: block; } .sidebar .nav-links li .sub-menu.blank{ opacity: 1; pointer-events: auto; padding: 3px 20px 6px 16px; opacity: 0; pointer-events: none; } .sidebar .nav-links li:hover .sub-menu.blank{ top: 50%; transform: translateY(-50%); } .sidebar .profile-details{ position: fixed; bottom: 0; width: 290px; display: flex; align-items: center; justify-content: space-between; background: #1d1b31; padding: 12px 0; transition: all 0.5s ease; } .sidebar.close .profile-details{ background: none; } .sidebar.close .profile-details{ width: 78px; } .sidebar .profile-details .profile-content{ display: flex; align-items: center; } .sidebar .profile-details img{ height: 52px; width: 52px; object-fit: cover; border-radius: 16px; margin: 0 14px 0 12px; background: #1d1b31; transition: all 0.5s ease; } .sidebar.close .profile-details img{ padding: 10px; } .sidebar .profile-details .profile_name, .sidebar .profile-details .job{ color: #fff; font-size: 18px; font-weight: 500; white-space: nowrap; } .sidebar.close .profile-details i, .sidebar.close .profile-details .profile_name, .sidebar.close .profile-details .job{ display: none; } .sidebar .profile-details .job{ font-size: 12px; } .home-section{ position: relative; background: #E4E9F7; height: 100vh; left: 290px; width: calc(100% - 260px); transition: all 0.5s ease; } .sidebar.close ~ .home-section{ left: 78px; width: calc(100% - 78px); } .home-section .home-content{ height: 60px; display: flex; align-items: center; } .home-section .home-content .bx-menu, .home-section .home-content .text{ color: #11101d; font-size: 35px; } .home-section .home-content .bx-menu{ margin: 0 15px; cursor: pointer; } .home-section .home-content .text{ font-size: 26px; font-weight: 600; } .userInitials { height: 38px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 38px; text-align: center; vertical-align: middle; -moz-border-radius: 50%; -webkit-border-radius: 50%; border-radius: 50%; background: white; color: #193D4C; font-weight: 600; margin-bottom: 20px; margin-left: 20px; } #media (max-width: 420px) { .sidebar.close .nav-links li .sub-menu{ display: none; } } .dont-break { min-width: 100%; white-space: nowrap; overflow: hidden; } .centered-profile { display:inline-block; } .staff-position{ font-size: small !important; margin-top: 40px !important; } .staff-nav-holder { margin-left: 20px; } .sidebar.close .nav-links li .iocn-link { width:300px; } <!DOCTYPE html> <!-- Created by CodingLab |www.youtube.com/CodingLabYT--> <html lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <!-- Boxiocns CDN Link --> <link href='https://unpkg.com/boxicons#2.0.7/css/boxicons.min.css' rel='stylesheet'> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div class="sidebar close"> <div class="logo-details"> <div class="logo-icon"><svg xmlns="http://www.w3.org/2000/svg" width="43.878" height="44.07" viewBox="0 0 43.878 44.07"> <g id="g110" transform="translate(24.953 4.408)"> <path id="path4" d="M-8.04,26.725A10.416,10.416,0,0,1-12.112,12.6,10.437,10.437,0,0,1,.23,7.767L4.939-3.049a22.3,22.3,0,0,0-28.5,13.106A22.166,22.166,0,0,0-12.748,37.54Z" fill="#f8e3a9"/> <path id="path6" d="M6.523-2.315,1.815,8.5A10.417,10.417,0,0,1,5.887,22.623,10.438,10.438,0,0,1-6.455,27.459l-4.708,10.815a22.3,22.3,0,0,0,28.5-13.1A22.117,22.117,0,0,0,6.523-2.315" transform="translate(0.196 0.03)" fill="#f8e3a9"/> <path id="path8" d="M-3.265,8.85a8.525,8.525,0,0,1,8.525,8.525A8.525,8.525,0,0,1-3.265,25.9a8.525,8.525,0,0,1-8.525-8.526h0A8.608,8.608,0,0,1-3.265,8.85" transform="translate(0.187 0.189)" fill="#f8e3a9"/> </g> </svg> </div> <span class="logo_name dont-break">STACKOVERFLOW</span> </div> <ul class="nav-links"> <li> <div class="iocn-link"> <a href="#"> <span class="userInitials">JW</span> <div class="col-9 staff-nav-holder"> <span class="link_name dont-break centered-profile">John Walker</span> <span class="link_name staff-position">PM</span> </div> </a> <i class='bx bxs-chevron-down arrow centered-profile' ></i> </div> <ul class="sub-menu"> <li><a class="link_name" href="#">John Walker</a></li> <li>Customize your homepage</li> <li>Change your password</li> <li>Logout</li> </ul> </li> <li> <div class="iocn-link"> <a href="#"> <svg class="sidebarSvg" xmlns="http://www.w3.org/2000/svg" width="48" height="48" fill="white" viewBox="0 0 32 32"><g id="icon_layer" data-name="icon layer"><path class="cls-1" d="M20.5,12H16.55a.5.5,0,0,1-.5-.5.5.5,0,0,1,.5-.5H20.5a.51.51,0,0,1,.5.5A.5.5,0,0,1,20.5,12Z"/><path class="cls-1" d="M20.5,17H16.55a.5.5,0,0,1,0-1H20.5a.5.5,0,0,1,0,1Z"/><path class="cls-1" d="M20.5,22H16.55a.5.5,0,0,1,0-1H20.5a.5.5,0,0,1,0,1Z"/><path class="cls-1" d="M12.27,18h0a.49.49,0,0,1-.37-.18l-.8-1a.5.5,0,1,1,.76-.64l.44.52,1.44-1.58a.5.5,0,0,1,.74.67l-1.83,2A.51.51,0,0,1,12.27,18Z"/><path class="cls-1" d="M22.44,5.5H21.32a.5.5,0,0,0,0,1h1.12A1.07,1.07,0,0,1,23.5,7.56V24.44a1.07,1.07,0,0,1-1.06,1.06H9.56A1.07,1.07,0,0,1,8.5,24.44V7.56A1.07,1.07,0,0,1,9.56,6.5h1.22a.5.5,0,1,0,0-1H9.56A2.06,2.06,0,0,0,7.5,7.56V24.44A2.06,2.06,0,0,0,9.56,26.5H22.44a2.06,2.06,0,0,0,2.06-2.06V7.56A2.06,2.06,0,0,0,22.44,5.5Z"/><path class="cls-1" d="M12.37,7.73h7.27a.5.5,0,0,0,.5-.5V4.78a.5.5,0,0,0-.5-.5H18a2,2,0,0,0-3.88,0H12.37a.5.5,0,0,0-.5.5V7.23A.5.5,0,0,0,12.37,7.73Zm.5-2.45h1.66a.5.5,0,0,0,.5-.5,1,1,0,0,1,2,0,.5.5,0,0,0,.5.5h1.6V6.73H12.87Z"/><path class="cls-1" d="M11.09,11.83l.8,1a.53.53,0,0,0,.37.18h0a.48.48,0,0,0,.37-.17l1.83-2a.5.5,0,0,0-.74-.68l-1.44,1.58-.44-.52a.5.5,0,1,0-.76.64Z"/><path class="cls-1" d="M13.5,23h-2a.5.5,0,0,1-.5-.5v-2a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5v2A.5.5,0,0,1,13.5,23ZM12,22h1V21H12Z"/></g></svg> <span class="link_name">Projects</span> </a> <i class='bx bxs-chevron-down arrow' ></i> </div> <ul class="sub-menu"> <li><a class="link_name" href="#">Category</a></li> <li>Create a New Project</li> <li>See All Projects</li> </ul> </li> <li> <div class="iocn-link"> <a href="#"> <i class='bx bx-book-alt' ></i> <span class="link_name">Posts</span> </a> <i class='bx bxs-chevron-down arrow' ></i> </div> <ul class="sub-menu"> <li><a class="link_name" href="#">Posts</a></li> <li>Web Design</li> <li>Login Form</li> <li>Card Design</li> </ul> </li> <li> <a href="#"> <i class='bx bx-pie-chart-alt-2' ></i> <span class="link_name">Analytics</span> </a> </li> <li> <a href="#"> <i class='bx bx-menu'></i> <span class="link_name dont-break">Collapse sidebar</span> </a> </li> </ul> </div> <section class="home-section"> <div class="home-content"> <span class="text"></span> </div> </section> </body> </html>
Why is my NavBar's background not covering the last menu item?
Something on my website is bothering me. The last menu item of my Navbar is outside it's container's background: Here is how my CSS looks like: .nav-menu { display: flex; flex-direction: column; width: 100%; height: 280px; position: absolute; top: 80px; left: -100%; opacity: 1; transition: all 0.5s ease; align-items: space-evenly; } .nav-menu.active { display: flex; flex-direction: column; align-content: flex-start; background: #242222; left: 0; opacity: 1; transition: all 0.5s ease; z-index: 1; } .nav-links { text-align: center; padding: 2rem; width: 100%; display: table; } .nav-links:hover { background-color: #fff; color: #242424; border-radius: 0; } .navbar-logo { position: absolute; top: 0; left: 0; transform: translate(25%, 50%); } .menu-icon { display: block; position: absolute; top: 0; right: 0; transform: translate(-100%, 60%); font-size: 1.8rem; cursor: pointer; } .fa-times { color: #fff; font-size: 2rem; } .nav-links-mobile { display: block; text-align: center; margin: 2rem auto; border-radius: 4px; width: 80%; text-decoration: none; font-size: 1.5rem; background-color: transparent; color: #fff; padding: 14px 20px; border: 1px solid #fff; transition: all 0.3s ease-out; } .nav-links-mobile:hover { background: #fff; color: #242424; transition: 250ms; } } and HTML generated by a React component looks like this: <> <nav className='navbar'> <div className='navbar-container'> <Link to='/' className='navbar-logo' onClick={closeMobileMenu}> LOGO </Link> <div className='menu-icon' onClick={handleClick}> <i className={click ? 'fas fa-times' : 'fas fa-bars'} /> </div> <ul className={click ? 'nav-menu active' : 'nav-menu'}> <li className='nav-item'> <Link to='/' className='nav-links' onClick={closeMobileMenu}> Home </Link> </li> <li className='nav-item'> <HashLink to='/#wherewefly' onClick={closeMobileMenu} className='nav-links'> Where we fly </HashLink> </li> <li className='nav-item'> <Link to='/services' className='nav-links' onClick={closeMobileMenu} > Promotions </Link> </li> <li className='nav-item'> <Link to='/products' className='nav-links' onClick={closeMobileMenu} > Contact </Link> </li> </ul> {button && <Button buttonStyle='btn--outline'>LOGIN</Button>} </div> </nav> </> How can I make the last menu item (Contact) be covered by the black background too? I have tried changing the height but the menu items "follow" and are aligned to the bottom. I can't find out how to change it though. Edited: Picture has been updated
Remove height: 280px;. You are using flex-box so you shouldn't be setting the height or width attributes. The idea is to allow the box to be flexible to it's contents. If you want a fixed height you should be using flex-basis attribute. EXAMPLE I have had to convert your react to html to demonstrate but as you can see the code you provided works as expected. This would indicate the issue lies elsewhere in code you have not provided. .nav-menu { display: flex; flex-direction: column; width: 100%; position: absolute; top: 80px; left: -100%; opacity: 1; transition: all 0.5s ease; align-items: space-evenly; } .nav-menu.active { display: flex; flex-direction: column; align-content: flex-start; background: #242222; left: 0; opacity: 1; transition: all 0.5s ease; z-index: 1; } .nav-links { text-align: center; padding: 2rem; width: 100%; display: table; } .nav-links:hover { background-color: #fff; color: #242424; border-radius: 0; } .navbar-logo { position: absolute; top: 0; left: 0; transform: translate(25%, 50%); } .menu-icon { display: block; position: absolute; top: 0; right: 0; transform: translate(-100%, 60%); font-size: 1.8rem; cursor: pointer; } .fa-times { color: #fff; font-size: 2rem; } .nav-links-mobile { display: block; text-align: center; margin: 2rem auto; border-radius: 4px; width: 80%; text-decoration: none; font-size: 1.5rem; background-color: transparent; color: #fff; padding: 14px 20px; border: 1px solid #fff; transition: all 0.3s ease-out; } .nav-links-mobile:hover { background: #fff; color: #242424; transition: 250ms; } <nav class='navbar'> <div clas='navbar-container'> <a class='navbar-logo'> LOGO </a> <div class='menu-icon'> <i class='fas fa-times' /> </div> <ul class='nav-menu active'> <li class='nav-item'> <a class='nav-links'> Home </a> </li> <li class='nav-item'> <a class='nav-links'> Where we fly </a> </li> <li class='nav-item'> <a class='nav-links'> Promotions </a> </li> <li class='nav-item'> <a class='nav-links'> Contact </a> </li> </ul> <Button class='btn--outline'>LOGIN</Button> </div> </nav>
Well, the height is fixed in the CSS, if you want it to take the height the content has you need to use "fit-content".
Blockquote The issue could be the height of the nav-menu. please use min-hight instead. This may fix your issue .nav-menu { display: flex; flex-direction: column; width: 100%; min-height: 280px; position: absolute; top: 80px; left: -100%; opacity: 1; transition: all 0.5s ease; align-items: space-evenly; }
How can I perform 2 checkbox actions at once w/ pure CSS?
I'm trying to make a pure CSS mobile menu, and I'm having trouble formatting the checkbox label. I want the checkbox label to turn yellow AND the mobile menu to appear, but I can only get the menu. I know the input tag only affects adjacent elements, but I've seen this working elsewhere. Please help! Here is my jsfiddle: https://jsfiddle.net/ichormosquito/wqzj36nh/15/ <input id="menu-btn" type="checkbox" /> <label for="menu-btn" class="overlord"> <span id="hamburger" class="hamb" /></label> <ul id="mobmen"> <li>HOME</li> <li>ABOUT</li> <li>CONTACT</li> <li>SHOP</li> <li>BLOG</li> </ul> #menu-btn { visibility: hidden; position: absolute; } #hamburger { background-color: blue; float: right; margin-right: 10px; cursor: pointer; background-size: 60px; width: 60px; height: 60px; } #menu-btn:checked + #hamburger {background-color: yellow;} #mobmen { display: none; } #menu-btn:checked ~ #mobmen { display: block; } #menu-btn:focus { outline: 0; } .mobilemenu a { color: #ffffff;} ul#mobmen { text-align: center; clear: both; line-height: 100px; font-family: 'brandon-grotesque'; font-weight: 500; color: #ffffff; font-size: x-large; } ul#mobmen li { border-top: solid 2px #220000; background-color: #440000; } ul#mobmen li:hover { background-color: #660000; } ul#mobmen li:focus { background-color: #660000; }
You have t get deeper and target the span within the label #menu-btn:checked + label #hamburger {...} #menu-btn { visibility: hidden; position: absolute; } #hamburger { background-color: blue; float: right; margin-right: 10px; cursor: pointer; background-size: 60px; width: 60px; height: 60px; } #menu-btn:checked+#hamburger { background-color: yellow; } #mobmen { display: none; } #menu-btn:checked+label #hamburger { background-color: yellow; } #menu-btn:checked~#mobmen { display: block; } #menu-btn:focus { outline: 0; } .mobilemenu a { color: #ffffff; } ul#mobmen { text-align: center; clear: both; line-height: 100px; font-family: 'brandon-grotesque'; font-weight: 500; color: #ffffff; font-size: x-large; } ul#mobmen li { border-top: solid 2px #220000; background-color: #440000; } ul#mobmen li:hover { background-color: #660000; } ul#mobmen li:focus { background-color: #660000; } <input id="menu-btn" type="checkbox" /> <label for="menu-btn" class="overlord"> <span id="hamburger" class="hamb" /> </label> <ul id="mobmen"> <li>HOME</li> <li>ABOUT</li> <li>CONTACT</li> <li>SHOP</li> <li>BLOG</li> </ul>
Query related to CSS Selector
I am working on the following piece of code displaying the progress: ol.progress[data-steps="2"] li { width: 49%; } ol.progress[data-steps="3"] li { width: 33%; } ol.progress[data-steps="4"] li { width: 24%; } ol.progress[data-steps="5"] li { width: 19%; } ol.progress[data-steps="6"] li { width: 16%; } ol.progress[data-steps="7"] li { width: 14%; } ol.progress[data-steps="8"] li { width: 12%; } ol.progress[data-steps="9"] li { width: 11%; } .progress { width: 100%; list-style: none; list-style-image: none; margin: 20px 0 20px 0; padding: 0; } .progress li { float: left; text-align: center; position: relative; font-family: sans-serif; } .progress .name, .progress .description { display: block; vertical-align: bottom; text-align: center; color: black; opacity: 0.3; } .progress .name { font-size: 1.5em; margin-top: 1em; margin-bottom: 0.5em; } .progress .step { border: 3px solid #b6b6b6; background-color: #b6b6b6; border-radius: 50%; line-height: 1.2; width: 1.2em; height: 1.2em; display: inline-block; z-index: 0; } .progress .step:before { content: ""; display: block; background-color: #b6b6b6; border: 3px transparent; height: 0.2em; width: 100%; position: absolute; top: 0.6em; left: -50%; z-index: -2; } .progress .step:after { content: ""; display: block; background-color: #1876d5; border: 3px transparent; height: 0.35em; width: 0; position: absolute; top: 0.55em; left: 50%; z-index: -1; } .progress li:first-of-type .step:before { display: none; } .progress li:last-of-type .step:after { display: none; } .progress .done .step { background-color: #1876d5; border: 3px solid #1876d5; } .progress .done .step:after { width: 100%; transition: width 2s ease; } <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <ol class="progress" id="test" data-steps="4"> <li class="done"> <span class="step"></span> <span class="name">Step 1</span> <span class="description">Foo</span> </li> <li class="done"> <span class="step"></span> <span class="name">Step 2</span> <span class="description">Bar</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 3</span> <span class="description">Baz</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 4</span> <span class="description">Abc</span> </li> </ol> </body> </html> I got this output with the above code. Using CSS, I was trying the exclude the blue color between 2nd and 3rd step so that it remains grey color(similar to the one between step 3 and step 4). I tried below which is not working: .progress .step:last-of-type .step:before { display: none; } Is there any similar type of CSS that can be used to achieve this functionality. Thanks.
If I understood your answer this will solve your issue just use nth-child selector to exclude the blue color between 2nd and 3rd step. The following is an example ol.progress[data-steps="2"] li { width: 49%; } ol.progress[data-steps="3"] li { width: 33%; } ol.progress[data-steps="4"] li { width: 24%; } ol.progress[data-steps="5"] li { width: 19%; } ol.progress[data-steps="6"] li { width: 16%; } ol.progress[data-steps="7"] li { width: 14%; } ol.progress[data-steps="8"] li { width: 12%; } ol.progress[data-steps="9"] li { width: 11%; } .progress { width: 100%; list-style: none; list-style-image: none; margin: 20px 0 20px 0; padding: 0; } .progress li { float: left; text-align: center; position: relative; font-family: sans-serif; } .progress .name, .progress .description { display: block; vertical-align: bottom; text-align: center; color: black; opacity: 0.3; } .progress .name { font-size: 1.5em; margin-top: 1em; margin-bottom: 0.5em; } .progress .step { border: 3px solid #b6b6b6; background-color: #b6b6b6; border-radius: 50%; line-height: 1.2; width: 1.2em; height: 1.2em; display: inline-block; z-index: 0; } .progress .step:before { content: ""; display: block; background-color: #b6b6b6; border: 3px transparent; height: 0.2em; width: 100%; position: absolute; top: 0.6em; left: -50%; z-index: -2; } .progress .step:after { content: ""; display: block; background-color: #1876d5; border: 3px transparent; height: 0.35em; width: 0; position: absolute; top: 0.55em; left: 50%; z-index: -1; } .progress li:first-of-type .step:before { display: none; } /*=========== added =====================*/ .progress li:nth-child(2) .step:before { display: none; } .progress li:nth-child(2) .step:after { display: none; } /*=========== added =====================*/ .progress li:last-of-type .step:after { display: none; } .progress .done .step { background-color: #1876d5; border: 3px solid #1876d5; } .progress .done .step:after { width: 100%; transition: width 2s ease; } <ol class="progress" id="test" data-steps="4"> <li class="done"> <span class="step"></span> <span class="name">Step 1</span> <span class="description">Foo</span> </li> <li class="done"> <span class="step"></span> <span class="name">Step 2</span> <span class="description">Bar</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 3</span> <span class="description">Baz</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 4</span> <span class="description">Abc</span> </li> </ol> And if you want some dynamic where you will use .done class name to control the steps without getting stuck with nth-child selector. The following is an example where there is none of li elements have .done class name ol.progress[data-steps="2"] li { width: 49%; } ol.progress[data-steps="3"] li { width: 33%; } ol.progress[data-steps="4"] li { width: 24%; } ol.progress[data-steps="5"] li { width: 19%; } ol.progress[data-steps="6"] li { width: 16%; } ol.progress[data-steps="7"] li { width: 14%; } ol.progress[data-steps="8"] li { width: 12%; } ol.progress[data-steps="9"] li { width: 11%; } .progress { width: 100%; list-style: none; list-style-image: none; margin: 20px 0 20px 0; padding: 0; } .progress li { float: left; text-align: center; position: relative; font-family: sans-serif; } .progress .name, .progress .description { display: block; vertical-align: bottom; text-align: center; color: black; opacity: 0.3; } .progress .name { font-size: 1.5em; margin-top: 1em; margin-bottom: 0.5em; } .progress .step { border: 3px solid #b6b6b6; background-color: #b6b6b6; border-radius: 50%; line-height: 1.2; width: 1.2em; height: 1.2em; display: inline-block; z-index: 0; } .progress .step:before { content: ""; display: block; background-color: #b6b6b6; border: 3px transparent; height: 0.2em; width: 100%; position: absolute; top: 0.6em; left: -50%; z-index: -2; } .progress .done .step:after { content: ""; display: block; background-color: #1876d5; border: 3px transparent; height: 0.35em; width: 0; position: absolute; top: 0.55em; left: 50%; z-index: -1; } .progress li:first-of-type .step:before, .progress li:last-of-type .step:after { display: none; } .progress .done .step { background-color: #1876d5; border: 3px solid #1876d5; } .progress .done .step:after { width: 100%; transition: width 2s ease; } <ol class="progress" id="test" data-steps="4"> <li class=""> <span class="step"></span> <span class="name">Step 1</span> <span class="description">Foo</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 2</span> <span class="description">Bar</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 3</span> <span class="description">Baz</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 4</span> <span class="description">Abc</span> </li> </ol> The following is an example where there first and third li have .done class name ol.progress[data-steps="2"] li { width: 49%; } ol.progress[data-steps="3"] li { width: 33%; } ol.progress[data-steps="4"] li { width: 24%; } ol.progress[data-steps="5"] li { width: 19%; } ol.progress[data-steps="6"] li { width: 16%; } ol.progress[data-steps="7"] li { width: 14%; } ol.progress[data-steps="8"] li { width: 12%; } ol.progress[data-steps="9"] li { width: 11%; } .progress { width: 100%; list-style: none; list-style-image: none; margin: 20px 0 20px 0; padding: 0; } .progress li { float: left; text-align: center; position: relative; font-family: sans-serif; } .progress .name, .progress .description { display: block; vertical-align: bottom; text-align: center; color: black; opacity: 0.3; } .progress .name { font-size: 1.5em; margin-top: 1em; margin-bottom: 0.5em; } .progress .step { border: 3px solid #b6b6b6; background-color: #b6b6b6; border-radius: 50%; line-height: 1.2; width: 1.2em; height: 1.2em; display: inline-block; z-index: 0; } .progress .step:before { content: ""; display: block; background-color: #b6b6b6; border: 3px transparent; height: 0.2em; width: 100%; position: absolute; top: 0.6em; left: -50%; z-index: -2; } .progress .done .step:after { content: ""; display: block; background-color: #1876d5; border: 3px transparent; height: 0.35em; width: 0; position: absolute; top: 0.55em; left: 50%; z-index: -1; } .progress li:first-of-type .step:before, .progress li:last-of-type .step:after { display: none; } .progress .done .step { background-color: #1876d5; border: 3px solid #1876d5; } .progress .done .step:after { width: 100%; transition: width 2s ease; } <ol class="progress" id="test" data-steps="4"> <li class="done"> <span class="step"></span> <span class="name">Step 1</span> <span class="description">Foo</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 2</span> <span class="description">Bar</span> </li> <li class="done"> <span class="step"></span> <span class="name">Step 3</span> <span class="description">Baz</span> </li> <li class=""> <span class="step"></span> <span class="name">Step 4</span> <span class="description">Abc</span> </li> </ol>
menu in css - dropdown menu
I have a little problem with my menu. I intend to do a pulldown menu. As I have the code now, the < li > is displayed , but the idea is by click or by hover "Cambio de centro " unfold the < li > that is inside ... Any idea ? This is my code: <div class="verticalaccordionIndex"> <img src="Images/botones/ficheros-btn.png" class="verticalaccordion"> <ul> <li> <h3>FICHEROS</h3> <div class="subverticalaccordionIndex"> <ul> <li> <h3><a href="SelectCentro.aspx">Cambio de centro <span>+</span></h3> <ul class="content-menu"> <li class="content-li">Festivos</li> <li class="content-li">Áreas de trabajo</li> <li class="content-li">Centros</li> <li class="content-li">Actividades</li> <li class="content-li">Espacio de trabajo</li> <li class="content-li">Cierre de espacios</li> <li class="content-li">Trabajadores</li> <li class="content-li">Convenio</li> </ul> </li> <li> <h3> Gestión de usuarios</h3></li> </li> <li> <li><h3>Salir</h3></li> </li> </ul> </div> </li> </ul> </div> --------------------CSS .verticalaccordionIndex>ul { padding: 0; list-style: none; width: 140px; float: left; position: relative; top: -55px; border-left: 1px solid; left: 20px; } .verticalaccordionIndex>ul>li { display: block; height:30px; list-style: none; margin: 0; overflow: hidden; padding: 0; text-align:center; width: 140px; background-color:TRANSPARENT; transition: height 0.3s ease-in-out; -moz-transition: height 0.3s ease-in-out; -webkit-transition: height 0.3s ease-in-out; -o-transition: height 0.3s ease-in-out; float: left; position: absolute; z-index: 200; height:40px; } .verticalaccordionIndex img{ float: left; width: 3%; height: auto; display: block; position: absolute; top: 206px; left: 63px; z-index: 30; } .verticalaccordionIndex .archiv { float: right; width: 3%; height: auto; display: block; position: absolute; top: 206px; left: 203px; z-index: 60; cursor: pointer; } .verticalaccordionIndex>ul>li>h3 { display: block; margin-top: 2em; padding: 0; top: -27px; position: relative; color: #000; cursor: pointer; font-family: 'Forum', sans-serif; font-size:18px; text-decoration:none; background: TRANSPARENT; width: 140px; text-align: center; } .verticalaccordionIndex>ul>li>div { margin: 0; width: 220px; position: relative; left: -10px; top: -40px; } .verticalaccordionIndex>ul>li:hover, .verticalaccordionIndex>ul>li:focus { height: auto; width: 200px; } .verticalaccordionIndex:hover>ul>li:hover>h3 { color: #000; background: #000; height: 0; top: -28px; } .verticalaccordionIndex>ul>li>h3:hover { cursor:pointer; } .subverticalaccordionIndex>ul>li { /* definimos cada item de la lista */ height:40px; /* la altura de las pestañas */ list-style: none; margin: 0; overflow: hidden; padding: 0; text-align:left; width: 220px; background-color: #9a8d84; transition: height 0.3s ease-in-out; -moz-transition: height 0.3s ease-in-out; -webkit-transition: height 0.3s ease-in-out; -o-transition: height 0.3s ease-in-out; position: relative; left: -31px; color: white; height: auto; } .subverticalaccordionIndex>ul>li>div { /* el contenido oculto */ margin: 0; overflow: auto; padding: 10px; float: left; } .subverticalaccordionIndex>ul{ position: relative; top: 19px; } .subverticalaccordionIndex>ul>li:hover { /* que se despliega al poner el cursor del ratón encima */ height: auto; display: block; position: relative; } .content-li{ list-style: none; color: white; border-bottom: 1px solid white; width: 100%; position: relative; left: -30px; cursor: pointer; font-family: 'Forum', sans-serif; font-size: 1em; } .content-li a{ color: white; text-decoration: none; } .content-li:hover, .content-li:focus{ background-color: #DCCCC1; color: #e86308; } .subverticalaccordionIndex>ul>li>h3{ margin-bottom: 0.3em; margin-left: .5em; } .subverticalaccordionIndex>ul>li>h3>a{ width: auto; cursor: pointer; font-size: 1.1em; font-family: 'Forum', sans-serif; width: 140px; background-color: #9a8d84; color:#DCCCC1; width: auto; } .subverticalaccordionIndex>ul>li>h3>a:hover{ display: block; color: #655448 } .subverticalaccordionIndex>ul>li>a>h3 span{ float: left; margin-right: 0; } .subverticalaccordionIndex>ul>li>h3:hover{ color:#fff; background-color: #9a8d84; } .subverticalaccordionIndex>ul>li>h3>ul { width: 75%; } subverticalaccordionIndex>ul>li>h3>ul.content-menu{ width: 90%; } subverticalaccordionIndex>ul>li>h3:hover{ display: block; height: auto; }
here is a demo illustrating menu dropdown on parent element hover. Please note this is not possible for onclick using pure css and without javascript. css .subverticalaccordionIndex .content-menu { display: none; } .subverticalaccordionIndex li:hover .content-menu { background:red; display: block; } <div class="verticalaccordionIndex"> <img src="Images/botones/ficheros-btn.png" class="verticalaccordion"> <ul> <li> <h3>FICHEROS</h3> <div class="subverticalaccordionIndex"> <ul> <li> <h3>Cambio de centro <span>+</span></h3> <ul class="content-menu"> <li class="content-li">Festivos</li> <li class="content-li">Áreas de trabajo</li> <li class="content-li">Centros</li> <li class="content-li">Actividades</li> <li class="content-li">Espacio de trabajo</li> <li class="content-li">Cierre de espacios</li> <li class="content-li">Trabajadores</li> <li class="content-li">Convenio</li> </ul> </li> <li> <h3> Gestión de usuarios</h3> </li> <li> <h3>Salir</h3> </li> </ul> </div> </li> </ul> </div>
I tried your code but it is wrong. You have to know that each <ul> can only contains <li>. But each <li> can contains <ul> Example : <ul> <li> Company <ul> <li>Our team</li> <li>About</li> </ul> </li> </ul> You forgot to close some markers or you have opened too many. I think your problem is here. Because of that I don't know what you want to do. Like "Sai Deepak" said on your post, provide us any fiddle, because it is hard to understand. But first, try to correct your code.