【问题标题】:Styling bootstrap carousel indicators样式化引导轮播指示器
【发布时间】:2022-02-02 07:44:31
【问题描述】:

我正在尝试将默认引导轮播指示器设置为卡在底部的非常细的黄线,如下所示。

我让它们位于页面底部,但我似乎无法将它们更改为矩形或更改它们的颜色。

HTML

<ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
    <li data-target="#myCarousel" data-slide-to="3"></li>
</ol>

CSS

.carousel-indicators {
    margin: 0px;
    height: 0px;
}

.carousel-indicators ol {
    width: 100%;
}

.carousel-indicators li {
    height: 3px !important;
    border-radius: 0px !important;
    width: 25%;
}

【问题讨论】:

  • 一些事情:首先,您的第二条规则不会被评估 - 您的目标是 ol 内部的 .carousel-indicators 分类元素,但 ol 是 那个元素。如果您只想将 width: 100% 全部应用于同一个元素,则可以将其移至上述样式规则中。其次——我尝试将你的 .carousel-indicators li 规则粘贴到引导网站中进行测试,它确实将指标扁平化为细长的矩形——所以如果它不适合你,规则可能不会被应用或踩到由此处未包含的其他代码。

标签: html css twitter-bootstrap


【解决方案1】:

这样的?请注意,宽度并不完全准确,因为我只是将其设为 33%。

.item img {
  width: 100%;
  height: auto
}

.carousel {
  position: relative;
  width: 200px;
  height: 100px;
}

ol.carousel-indicators {
  position: absolute;
  bottom: 0;
  margin: 0;
  left: 0;
  right: 0;
  width: auto;
}

ol.carousel-indicators li,
ol.carousel-indicators li.active {
  float: left;
  width: 33%;
  height: 10px;
  margin: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
}

ol.carousel-indicators li.active {
  background: yellow;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<div id="carousel" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#carousel" data-slide-to="0" class="active"></li>
    <li data-target="#carousel" data-slide-to="1"></li>
    <li data-target="#carousel" data-slide-to="2"></li>
  </ol>
  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <img src="http://placehold.it/200x100" alt="Slide 1">
      <div class="carousel-caption">
        Slide 1
      </div>
    </div>
    <div class="item">
      <img src="http://placehold.it/200x100" alt="Slide 2">
      <div class="carousel-caption">
        Slide 2
      </div>
    </div>
    <div class="item">
      <img src="http://placehold.it/200x100" alt="Slide 3">
      <div class="carousel-caption">
        Slide 3
      </div>
    </div>
  </div>
  <a class="left carousel-control" href="#carousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#carousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

【讨论】:

  • 谢谢,我只需要进行一些调整并更改一些名称,它就可以立即工作。我想我只是对所有
    1. 标签以及哪些样式控制哪些标签
    感到困惑
  • 一个很好的改进是根据指标的总数来调整指标的大小,而不是假设三个。
【解决方案2】:

很棒的CSS!我用它来制作半白色的球指示器和黄色的活动指示器。

ol.carousel-indicators {
     position: absolute;
     bottom: 5px;
     margin: 0;
     left: 0;
     right: 0;
     width: auto;
}

ol.carousel-indicators li, ol.carousel-indicators li.active {
     width: 1rem;
     height: 1rem;
     margin: 0;
     border-radius: 50%;
     border: 0;
     background: transparent;
}

ol.carousel-indicators li {
     background: rgba(255,255,255,0.39);
     margin-left: .5rem;
     margin-right: .5rem;
}

ol.carousel-indicators li.active {
     background: yellow;
}

【讨论】:

    【解决方案3】:

    我刚刚为自己编写了类似的代码, 我认为它会帮助你多一点。 通过使用 Flex 布局,您可以类似地拉伸指标 不用担心它们的宽度 弹性增长:1;做这份工作

    https://codepen.io/ophiuch/pen/Jzowbo

    .carousel  /*slider */
    {
    	position: relative;
    }
    .carousel .carousel-indicators	/* indicator wrapper*/
    {
    	position: absolute;
    	bottom: 0;
    	left:0px;
    	width: 100%;
      	margin: 0;
      	left: 0;
     	right: 0;
     	width: 100%;
     	display: flex;	/* this is for indicators  */
    }
    #headcarousel_container .carousel-indicators li /* indicators*/
    {
    	flex-grow: 1;  /* make all indicator li similarly stretched */
    	height: 40px;
    	border-radius: 2px;	
    }
    
    #headcarousel_container .carousel-indicators li.active
    {
    	background-color:rgba(251,222,87,0.5) ;/* changes indicators color when it is active*/ 
    }
    .carousel .carousel-inner .item img
    {
    	width: 100%;
    	height: 100vh;
    	object-fit: cover; 
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Carousel</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
    </head>
    <body>
     			<!--slider -->
    			<div  class="container-fluid" id="headcarousel_container" style="padding: 0;">
    				<div id="headcarouselid" class="carousel slide" data-ride="carousel">
    					<!-- indicators -->
    					<ul class="carousel-indicators">
    						<li class="active" data-target="#headcarouselid" data-slide-to="0"></li>
    						<li class="" data-target="#headcarouselid" data-slide-to="1"></li>
    						<li class="" data-target="#headcarouselid" data-slide-to="2"></li>
    						<li class="" data-target="#headcarouselid" data-slide-to="3"></li>
    						<li class="" data-target="#headcarouselid" data-slide-to="4"></li>
    					</ul>
    					<!-- Wrapper for slides -->
    					<div class="carousel-inner">
    						<div class="item active">
    							<img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569_960_720.jpg" title="slidepicture" alt="slidepicture">
    						</div>
    						<div class="item">
    							<img src="https://cdn.pixabay.com/photo/2014/07/28/20/39/landscape-404072_960_720.jpg" title="slidepicture" alt="slidepicture">
    						</div>
    						<div class="item">
    							<img src="https://cdn.pixabay.com/photo/2018/08/23/07/35/thunderstorm-3625405_960_720.jpg" title="slidepicture" alt="slidepicture">
    						</div>
    						<div class="item">
    							<img src="https://cdn.pixabay.com/photo/2017/09/08/20/29/chess-2730034_960_720.jpg" title="slidepicture" alt="slidepicture">
    						</div>
    						<div class="item">
    							<img src="https://cdn.pixabay.com/photo/2018/05/30/15/31/rustic-3441673_960_720.jpg" title="slidepicture" alt="slidepicture">
    						</div>						
    					</div>
    					<!-- Left and right controls -->
    					<a class="carousel-control left" href="#headcarouselid" data-slide="prev">
    						<span class="glyphicon glyphicon-chevron-left"></span>
    					</a>
    					<a class="carousel-control right" href="#headcarouselid" data-slide="next">
    						<span class="glyphicon glyphicon-chevron-right"></span>
    					</a>						
    				</div>
    			</div>
    
    </body>
    </html>

    【讨论】:

      【解决方案4】:

      这个 sn-p 更改 prev 和 nextreact-bootstrap 的轮播图标控件:

      & span.carousel-control-prev-icon, & span.carousel-control-next-icon{
              background-color: black;
          }
      

      是的,只有背景。图标本身是一个 xml 图像,因此无法找到更改颜色的方法。 :/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2018-12-25
        • 2015-09-28
        • 2019-05-19
        • 2016-12-03
        • 2017-08-10
        • 1970-01-01
        相关资源
        最近更新 更多