代码之家  ›  专栏  ›  技术社区  ›  Slowboy

:n不使用列表的子级-style:none;

  •  4
  • Slowboy  · 技术社区  · 7 年前

    我在做一个播放列表。我希望歌曲出现在有条纹的列表中。

    为此,我使用了这个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;
    }
    

    工作正常。

    这是我的浏览器截图 screenshot

    运行代码段全屏查看问题,背景色将消失

    @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>
    2 回复  |  直到 7 年前
        1
  •  2
  •   Temani Afif    7 年前

    问题在于浮动。这个 li 有点感冒了( height:0 )因为你在用 col-* 类没有 row . 你需要考虑 使浮动元素 列-* )正确清除了吗 里面 container 以获得正确的边距( 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 会影响这个吗?

    什么时候? 不同于 none ,我们的项目符号为 元素,即使该元素为空或包含没有clearfix的float元素。使用 将删除此高度,我们有问题:

    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
  •  1
  •   Andrew Li    7 年前

    li height 0 当尺寸大于991px时,因为 浮动div col-* 班级。
    你使用 bootstrap col-md-x 当屏幕大小大于991px时具有float属性。
    overflow:hidden 包装浮动子对象的内容。

    .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>