【问题标题】::nth-child not working with list-style:none;:nth-child 不使用 list-style:none;
【发布时间】:2018-09-17 08:16:20
【问题描述】:

我正在制作一个播放列表。我希望歌曲出现在条纹列表中。

为此,我正在使用这个 css

.track-list > ul > li{
  list-style: none;

}    

div ul li:nth-child(even) {
       background-color: #ccc;
    }

这根本不起作用,但下面的代码有效。

  .track-list > ul > li{
  list-style: none;

}
    div ul li:nth-child(even) {
      color: #ccc;
    }

但是如果我删除.track-list > ul > li{list-style: none;}

div ul li:nth-child(even) {
   background-color: #ccc;
}

工作正常。

这是我浏览器的截图

这让我很困惑,欢迎提出任何建议

运行sn-p全屏查看问题,背景色会消失

@import url("//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css");


.wrapper{
  height: 100vh;
}

.box-item{
  position: relative;
  width: 100%;
  background-color: red;
  color: blue;
  height: 10vh;
  margin-top: 40px;

}

footer > .listen{
  position: absolute;
  margin-right: 20px;
  bottom: 0;
  right: 0;
}

.playlist-dropdown{
  border: solid 1px #dedede;
}

.interface{
  border-bottom: solid 3px #dedede;
  padding-bottom: 10px;
  padding-top:10px;
}
.name-of-song{
  margin-bottom: 10px;
}

.track-list{
   padding-top: 10px;
}

.track-list > ul > li{
  list-style: none;

}

div ul li:nth-child(even) {
   background-color: #ccc !important;
}



#play, #pause, #mute, #unmute {
  position: relative;
   display: block;
}

#play {
    position: absolute;

}

#pause:before {
    position: absolute;

}

#pause:after {
    position: absolute;

}



#mute{
    position: absolute;

}

#unmute:before {
    position: absolute;

}

#unmute:after {
    position: absolute;
    
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>playlist</title>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

    <link rel="stylesheet" href="css/custom.css">
  </head>
  <body>

     <div class="wrapper">
       <div class="container">
         <div class="box-item ">
           <footer>
             <a class="listen" data-toggle="collapse" href="#playlist-collapse"><span class="glyphicon glyphicon-headphones" aria-hidden="true"></span></a>
           </footer>
         </div>

        <div id="playlist-collapse" class="playlist-dropdown">
          <div class="interface clearfix">

            <div class="col-md-12 name-of-song">
              Name of track being played
            </div>
              <div class="col-md-2">
                <a href="#" id="play"><span class="glyphicon glyphicon-play"></span></a>
              <a href="#" id="pause" style="display: none;"><span class="glyphicon glyphicon-pause"></span></a>
              </div>
              <div class="col-md-6">
                progress bar
              </div>
              <div class="col-md-1">
                <a href="#" id="mute"><span class="glyphicon glyphicon-volume-off"></span></a>
              <a href="#" id="unmute" style="display: none;"><span class="glyphicon glyphicon-volume-up"></span></a>
              </div>
              <div class="col-md-3">
                volume-bar
              </div>

          </div> <!--interface ends -->
          <div class="track-list clearfix">
          <ul>
            <li class="track-row">
              <div class="col-md-2 track-number">
                01
              </div>
              <div class="col-md-7 track-name">
                Track name/ song name
              </div>
              <div class="col-md-1 track-copyright">
                	&copy;
              </div>
              <div class="col-md-2 track-duration">
                00:25s
              </div>
            </li>
            <li>
              <div class="col-md-2 track-number">
                02
              </div>
              <div class="col-md-7 track-name">
                Track name/ song name 02
              </div>
              <div class="col-md-1 track-copyright">
                  &copy;
              </div>
              <div class="col-md-2 track-duration">
                00:25s
              </div>
            </li>
            <li>
              <div class="col-md-2 track-number">
                03
              </div>
              <div class="col-md-7 track-name">
                Track name/ song name03
              </div>
              <div class="col-md-1 track-copyright">
                  &copy;
              </div>
              <div class="col-md-2 track-duration">
                00:25s
              </div>
            </li>
          </ul>
        </div>


     </div>

   </div><!--container-->

   <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>


<script>
$('#play').on('click', function(event) {
		console.log('play click clicked');
    //currentPlayingTrack.play();

    $('#pause').show();
    $('#play').hide();
});

$('#pause').on('click', function(event) {
    //currentPlayingTrack.pause();
    $('#pause').hide();
    $('#play').show();
});

$('#unmute').on('click', function(event) {
		console.log('play click clicked');
    //currentPlayingTrack.play();

    $('#mute').show();
    $('#unmute').hide();
});

$('#mute').on('click', function(event) {
    //currentPlayingTrack.pause();
    $('#mute').hide();
    $('#unmute').show();
});
</script>
 </div> <!--wrapper -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  </body>
</html>

【问题讨论】:

  • 编写代码 sn-p 以便我们也可以看到 HTML 结构。
  • 您的fiddle 有效。
  • 是的,我知道这很奇怪
  • 我将整个代码添加到 Fiddle 中,Fiddle 仍在工作
  • 这可能是 Chrome 的问题吗?其他浏览器我还没试过

标签: html css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

问题在于浮动。 li 正在崩溃 (height:0),因为在内部你使用的是 col-* 类而没有 row。您需要考虑row,以便正确清除浮动元素(col-*),然后在container 中清除row 以获得正确的边距(https://getbootstrap.com/docs/3.3/css/#grid

@import url("//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css");


.wrapper{
  height: 100vh;
}

.box-item{
  position: relative;
  width: 100%;
  background-color: red;
  color: blue;
  height: 10vh;
  margin-top: 40px;

}

footer > .listen{
  position: absolute;
  margin-right: 20px;
  bottom: 0;
  right: 0;
}

.playlist-dropdown{
  border: solid 1px #dedede;
}

.interface{
  border-bottom: solid 3px #dedede;
  padding-bottom: 10px;
  padding-top:10px;
}
.name-of-song{
  margin-bottom: 10px;
}

.track-list{
   padding-top: 10px;
}

.track-list > ul > li{
  list-style: none;

}

div ul li:nth-child(even) {
   background-color: #ccc !important;
}



#play, #pause, #mute, #unmute {
  position: relative;
   display: block;
}

#play {
    position: absolute;

}

#pause:before {
    position: absolute;

}

#pause:after {
    position: absolute;

}



#mute{
    position: absolute;

}

#unmute:before {
    position: absolute;

}

#unmute:after {
    position: absolute;
    
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>playlist</title>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

    <link rel="stylesheet" href="css/custom.css">
  </head>
  <body>

     <div class="wrapper">
       <div class="container">
         <div class="box-item ">
           <footer>
             <a class="listen" data-toggle="collapse" href="#playlist-collapse"><span class="glyphicon glyphicon-headphones" aria-hidden="true"></span></a>
           </footer>
         </div>

        <div id="playlist-collapse" class="playlist-dropdown">
          <div class="interface clearfix">

            <div class="col-md-12 name-of-song">
              Name of track being played
            </div>
              <div class="col-md-2">
                <a href="#" id="play"><span class="glyphicon glyphicon-play"></span></a>
              <a href="#" id="pause" style="display: none;"><span class="glyphicon glyphicon-pause"></span></a>
              </div>
              <div class="col-md-6">
                progress bar
              </div>
              <div class="col-md-1">
                <a href="#" id="mute"><span class="glyphicon glyphicon-volume-off"></span></a>
              <a href="#" id="unmute" style="display: none;"><span class="glyphicon glyphicon-volume-up"></span></a>
              </div>
              <div class="col-md-3">
                volume-bar
              </div>

          </div> <!--interface ends -->
          <div class="track-list clearfix">
          <ul class="container-fluid">
            <li class="track-row row">
              <div class="col-md-2 track-number">
                01
              </div>
              <div class="col-md-7 track-name">
                Track name/ song name
              </div>
              <div class="col-md-1 track-copyright">
                	&copy;
              </div>
              <div class="col-md-2 track-duration">
                00:25s
              </div>
            </li>
            <li class="row">
              <div class="col-md-2 track-number">
                02
              </div>
              <div class="col-md-7 track-name">
                Track name/ song name 02
              </div>
              <div class="col-md-1 track-copyright">
                  &copy;
              </div>
              <div class="col-md-2 track-duration">
                00:25s
              </div>
            </li>
            <li class="row">
              <div class="col-md-2 track-number">
                03
              </div>
              <div class="col-md-7 track-name">
                Track name/ song name03
              </div>
              <div class="col-md-1 track-copyright">
                  &copy;
              </div>
              <div class="col-md-2 track-duration">
                00:25s
              </div>
            </li>
          </ul>
        </div>


     </div>

   </div><!--container-->

   <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>


<script>
$('#play').on('click', function(event) {
		console.log('play click clicked');
    //currentPlayingTrack.play();

    $('#pause').show();
    $('#play').hide();
});

$('#pause').on('click', function(event) {
    //currentPlayingTrack.pause();
    $('#pause').hide();
    $('#play').show();
});

$('#unmute').on('click', function(event) {
		console.log('play click clicked');
    //currentPlayingTrack.play();

    $('#mute').show();
    $('#unmute').hide();
});

$('#mute').on('click', function(event) {
    //currentPlayingTrack.pause();
    $('#mute').hide();
    $('#unmute').show();
});
</script>
 </div> <!--wrapper -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  </body>
</html>

为什么list-style 会影响这个?

list-stylenone 不同时,即使该元素为空或包含没有clearfix 的浮动元素,我们也会为li 元素添加默认高度的项目符号。使用none 将删除这个高度,我们遇到了问题:

ul {
  border: 1px solid;
}

span {
  float: left;
}

li:nth-child(even) {
  background: red;
  color: blue;
}
<ul>
  <li>element 1</li>
  <li></li>
  <li>element 3</li>
</ul>

<ul style="list-style:none">
  <li>element 1</li>
  <li></li>
  <li>element 3</li>
</ul>

<ul>
  <li><span>float element 1</span></li>
  <li><span>float element 1</span></li>
  <li><span>float element 1</span></li>
</ul>

<ul style="list-style:none">
  <li><span>float element 1</span></li>
  <li><span>float element 1</span></li>
  <li><span>float element 1</span></li>
</ul>

【讨论】:

    【解决方案2】:

    这个问题是由 li 引起的,当尺寸大于 991px 时,height 0 是因为 floated divcol-* 类。
    当屏幕尺寸大于 991 像素时,您使用 bootstrapcol-md-x 具有浮动属性。
    因此,您必须将属性 overflow:hidden 设置为 li 以包装浮动子项的内容。
    尝试像这样使用。

    .track-list > ul > li{
      list-style: none;
      overflow:hidden;
     }
    

    下面的代码是固定的。

    @import url("//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css");
    
    
    .wrapper{
      height: 100vh;
    }
    
    .box-item{
      position: relative;
      width: 100%;
      background-color: red;
      color: blue;
      height: 10vh;
      margin-top: 40px;
    
    }
    
    footer > .listen{
      position: absolute;
      margin-right: 20px;
      bottom: 0;
      right: 0;
    }
    
    .playlist-dropdown{
      border: solid 1px #dedede;
    }
    
    .interface{
      border-bottom: solid 3px #dedede;
      padding-bottom: 10px;
      padding-top:10px;
    }
    .name-of-song{
      margin-bottom: 10px;
    }
    
    .track-list{
       padding-top: 10px;
    }
    
    .track-list > ul > li{
      list-style: none;
      overflow:hidden;
    }
    
    div ul li:nth-child(even) {
       background-color: #ccc !important;
    }
    
    
    
    #play, #pause, #mute, #unmute {
      position: relative;
       display: block;
    }
    
    #play {
        position: absolute;
    
    }
    
    #pause:before {
        position: absolute;
    
    }
    
    #pause:after {
        position: absolute;
    
    }
    
    
    
    #mute{
        position: absolute;
    
    }
    
    #unmute:before {
        position: absolute;
    
    }
    
    #unmute:after {
        position: absolute;
        
    }
    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>playlist</title>
    
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    
        <link rel="stylesheet" href="css/custom.css">
      </head>
      <body>
    
         <div class="wrapper">
           <div class="container">
             <div class="box-item ">
               <footer>
                 <a class="listen" data-toggle="collapse" href="#playlist-collapse"><span class="glyphicon glyphicon-headphones" aria-hidden="true"></span></a>
               </footer>
             </div>
    
            <div id="playlist-collapse" class="playlist-dropdown">
              <div class="interface clearfix">
    
                <div class="col-md-12 name-of-song">
                  Name of track being played
                </div>
                  <div class="col-md-2">
                    <a href="#" id="play"><span class="glyphicon glyphicon-play"></span></a>
                  <a href="#" id="pause" style="display: none;"><span class="glyphicon glyphicon-pause"></span></a>
                  </div>
                  <div class="col-md-6">
                    progress bar
                  </div>
                  <div class="col-md-1">
                    <a href="#" id="mute"><span class="glyphicon glyphicon-volume-off"></span></a>
                  <a href="#" id="unmute" style="display: none;"><span class="glyphicon glyphicon-volume-up"></span></a>
                  </div>
                  <div class="col-md-3">
                    volume-bar
                  </div>
    
              </div> <!--interface ends -->
              <div class="track-list clearfix">
              <ul>
                <li class="track-row">
                  <div class="col-md-2 track-number">
                    01
                  </div>
                  <div class="col-md-7 track-name">
                    Track name/ song name
                  </div>
                  <div class="col-md-1 track-copyright">
                    	&copy;
                  </div>
                  <div class="col-md-2 track-duration">
                    00:25s
                  </div>
                </li>
                <li>
                  <div class="col-md-2 track-number">
                    02
                  </div>
                  <div class="col-md-7 track-name">
                    Track name/ song name 02
                  </div>
                  <div class="col-md-1 track-copyright">
                      &copy;
                  </div>
                  <div class="col-md-2 track-duration">
                    00:25s
                  </div>
                </li>
                <li>
                  <div class="col-md-2 track-number">
                    03
                  </div>
                  <div class="col-md-7 track-name">
                    Track name/ song name03
                  </div>
                  <div class="col-md-1 track-copyright">
                      &copy;
                  </div>
                  <div class="col-md-2 track-duration">
                    00:25s
                  </div>
                </li>
              </ul>
            </div>
    
    
         </div>
    
       </div><!--container-->
    
       <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    
    
    <script>
    $('#play').on('click', function(event) {
    		console.log('play click clicked');
        //currentPlayingTrack.play();
    
        $('#pause').show();
        $('#play').hide();
    });
    
    $('#pause').on('click', function(event) {
        //currentPlayingTrack.pause();
        $('#pause').hide();
        $('#play').show();
    });
    
    $('#unmute').on('click', function(event) {
    		console.log('play click clicked');
        //currentPlayingTrack.play();
    
        $('#mute').show();
        $('#unmute').hide();
    });
    
    $('#mute').on('click', function(event) {
        //currentPlayingTrack.pause();
        $('#mute').hide();
        $('#unmute').show();
    });
    </script>
     </div> <!--wrapper -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      </body>
    </html>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2013-04-04
      • 2021-12-14
      • 2012-03-07
      • 2021-12-10
      相关资源
      最近更新 更多