悬停不能按预期工作

Hover don't works as expected

问题是当我悬停在 li 上时,悬停不起作用,第一个有效,但悬停区域与 div 的大小不同。

这是一个通过复选框工作的侧边栏,没有 javascript。

这里是HTML

 <input type="checkbox" id="sidebartoggler">

<div id="page-wrap">
  <label for="sidebartoggler" id="toggle">☰</label>
<div id="sidebar">
    <ul class="elements">
      <li>Str. Glowna</li>
      <li>Wyb. przedmiotu</li>
    </ul>
</div>

<div class="page-content">

和CSS

.page-content
{
  position: relative;
  z-index: 0;
  transition: padding-left 0.5s;
}
#chose
{
  font-size: 40px;
  text-align: center;
  margin: 5% 0 5% 0;
}
#sidebar
{
  position: fixed;
  left:-190px;
  right: 0;
  top: 0px;
  bottom:0px;
  width: 170px;
  padding: 10px;
  background: #333;
  transition: left 0.5s;
  display: inline-block;

}
#toggle
{
  position: fixed;
  left:20px;
  top: 15px;
  font-size: 30px;
  transition: left 0.5s;
}
#sidebartoggler
{
  display: none;

}
#sidebartoggler:checked + #page-wrap #sidebar
{
  left:0px;

}
#sidebartoggler:checked + #page-wrap #toggle
{
  left:200px;

}
#sidebartoggler:checked + #page-wrap .page-content
{
  padding-left: 180px;

}
.page-content
{
  padding-left: 0px;
}
#sidebar ul
{
  font-size: 15px;
  list-style: none;
  list-style-position: inside;
  width: 170px;
  margin: 20px 0 0 -40px;
  text-align: center;

}
#sidebar ul > li
{
  padding: 10px 0;
  margin: 5px 0 0 0;
  background-color: #444;
  display: block;
}
#sidebar ul > li:hover
{

  background-color: #555
}

在这里你可以看到完整的代码:https://jsfiddle.net/2hnLyjw4/1/ 对不起我的英语不好。 感谢您的帮助!

问题是您在 .page-content 上使用 padding-left;这导致内容根据需要向右移动,但 div 部分位于菜单顶部并干扰悬停事件。

改为使用margin-left:

.page-content {
  position: relative;
  z-index: 0;
  transition: margin-left 0.5s;
}

...

#sidebartoggler:checked + #page-wrap .page-content {
  margin-left: 180px;
}

.page-content {
  margin-left: 0px;
}