【问题标题】:overwrite or add styles to predefined classes in bootstrap 3覆盖或添加样式到引导程序 3 中的预定义类
【发布时间】:2016-11-11 02:54:30
【问题描述】:

这是关于引导程序 3。我想在调整浏览器大小时更改预定义引导程序 3 列的颜色。

这是 index.html 的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap Template</title>


<link href="css/bootstrap.css" rel="stylesheet" type="text/css" media="screen"/>
<link href="css/custom.css" rel="stylesheet" type="text/css" media="screen"/>
<!--<link href="css/bootstrap-theme.css" rel="stylesheet" type="text/css" media="screen"/>-->
</head>

<body>
    <div class="container">
        <div class="row">
           <div class="col-lg-9 col-md-4 col-sm-2 col-xs-12 border">one</div>
           <div class="col-lg-2 col-md-4 col-sm-8 col-xs-12 border">two</div>
           <div class="col-lg-1 col-md-4 col-sm-2 col-xs-12 border">three</div>
        </div>
   </div>



<script src="js/jquery.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>

custom.css 文件:

.border
{
border:2px solid;       
}

.col-lg-1,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-lg-10,
.col-lg-11,
.col-lg-12{background-color:red;}

.col-md-1,
.col-md-2,
.col-md-3,
.col-md-4,
.col-md-5,
.col-md-6,
.col-md-7,
.col-md-8,
.col-md-9,
.col-md-10,
.col-md-11,
.col-md-12{background-color:yellow;}

.col-sm-1,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-sm-10,
.col-sm-11,
.col-sm-12{background-color:green;}

.col-xs-1,
.col-xs-2,
.col-xs-3,
.col-xs-4,
.col-xs-5,
.col-xs-6,
.col-xs-7,
.col-xs-8,
.col-xs-9,
.col-xs-10,
.col-xs-11,
.col-xs-12{background-color:blue;}

当浏览器重新调整大小时,第一列的背景色应该是红色,然后是背景色黄色,然后是背景色绿色,最后是蓝色背景色。但是,在浏览器中查看此网页并重新调整大小时,所有列的背景颜色都保持蓝色。

我想更改颜色(覆盖或添加样式到引导程序 3 中的预定义类)。如何实现?

【问题讨论】:

  • 之所以称为层叠样式表是有原因的...
  • 这个解决方案太愚蠢了。他们本可以添加一个名为“col-sm”“col-xs”等的类……所有其他“col-xs-1,col-xs-2,……”都会继承。网络很烂。

标签: html css twitter-bootstrap-3


【解决方案1】:

您的问题是 css 不会在某些宽度下应用某些类的样式,它只能使用媒体查询告诉哪些样式规则应用于不同宽度的某些类。 Bootstrap 通过使用媒体查询来工作。

仅仅因为您使用引导程序并不意味着它会神奇地将媒体查询应用到它自己的特定宽度的类。请参阅http://getbootstrap.com/css/#grid-media-queries 以查看引导程序内部使用的媒体查询以应用样式规则。媒体查询非常简单,但可能看起来有点令人生畏,您会习惯它们,并且当您更多地使用它们时它们会变得有意义。

您的背景蓝色正在发生,因为它是最底部的样式规则,因此如果您只有想要以不同宽度显示的样式规则,它就是唯一被应用的规则。这就是媒体查询的用途。它们仅在指定的宽度处应用样式,并在任何其他宽度处消失。

这是您想要覆盖 css 类的内容。

css

/* Styles go here */
.border
{
  border:2px solid;       
}
/*screen-xs*/
@media (max-width: 768px) { 
  .col-xs-1,
  .col-xs-2,
  .col-xs-3,
  .col-xs-4,
  .col-xs-5,
  .col-xs-6,
  .col-xs-7,
  .col-xs-8,
  .col-xs-9,
  .col-xs-10,
  .col-xs-11,
  .col-xs-12{background-color:blue;}
}
/*screen-sm*/
@media (min-width: 768px) and (max-width: 992px) { 
  .col-sm-1,
  .col-sm-2,
  .col-sm-3,
  .col-sm-4,
  .col-sm-5,
  .col-sm-6,
  .col-sm-7,
  .col-sm-8,
  .col-sm-9,
  .col-sm-10,
  .col-sm-11,
  .col-sm-12{background-color:green;}
}
/*screen-md*/
@media (min-width: 992px) and (max-width: 1200px) { 
  .col-md-1,
  .col-md-2,
  .col-md-3,
  .col-md-4,
  .col-md-5,
  .col-md-6,
  .col-md-7,
  .col-md-8,
  .col-md-9,
  .col-md-10,
  .col-md-11,
  .col-md-12{background-color:yellow;}
}
/*screen-lg corresponds with col-lg*/
@media (min-width: 1200px) {  
  .col-lg-1,
  .col-lg-2,
  .col-lg-3,
  .col-lg-4,
  .col-lg-5,
  .col-lg-6,
  .col-lg-7,
  .col-lg-8,
  .col-lg-9,
  .col-lg-10,
  .col-lg-11,
  .col-lg-12{background-color:red;}
}

http://plnkr.co/edit/ZQ6QjRMLm07hkb7cBUPW?p=preview

编辑:

这样做的问题是您正在覆盖引导类,这意味着您正在覆盖将要显示的样式。从现在开始,如果您尝试使用引导列,它们将具有这些样式,我建议您改为向元素添加一个类,并为该类添加一个样式规则来代替覆盖它。

HTML

<div class="container">
  <div class="row">
    <div class="col-lg-9 col-md-4 col-sm-2 col-xs-12 border myColoredCol">one</div>
    <div class="col-lg-2 col-md-4 col-sm-8 col-xs-12 border myColoredCol">two</div>
    <div class="col-lg-1 col-md-4 col-sm-2 col-xs-12 border myColoredCol">three</div>
  </div>
</div>

CSS

/* Styles go here */
.border
{
  border:2px solid;       
}
/*screen-xs*/
@media (max-width: 768px) { 
  .myColoredCol{background-color:blue;}
}
/*screen-sm*/
@media (min-width: 768px) and (max-width: 992px) { 
  .myColoredCol{background-color:green;}
}
/*screen-md*/
@media (min-width: 992px) and (max-width: 1200px) { 
  .myColoredCol{background-color:yellow;}
}
/*screen-lg corresponds with col-lg*/
@media (min-width: 1200px) {  
  .myColoredCol{background-color:red;}
}

【讨论】:

  • 真的很有帮助!节省大量时间
【解决方案2】:

试试这个:

HTML

  <!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Bootstrap Template</title>


  <link href="css/bootstrap.css" rel="stylesheet" type="text/css" media="screen"/>
  <link href="css/custom.css" rel="stylesheet" type="text/css" media="screen"/>
  <!--<link href="css/bootstrap-theme.css" rel="stylesheet" type="text/css"  media="screen"/>-->
  </head>

  <body>
  <div class="container">
    <div class="row">
       <div class="col-lg-9 col-md-4 col-sm-2 col-xs-12 border colbg">one</div>
       <div class="col-lg-2 col-md-4 col-sm-8 col-xs-12 border colbg">two</div>
       <div class="col-lg-1 col-md-4 col-sm-2 col-xs-12 border colbg">three</div>
    </div>
   </div>



  <script src="js/jquery.js"></script>
  <script src="js/bootstrap.js"></script>
  </body>
  </html>

CSS

 @media (max-width: 767px) {
     .colbg {background-color:blue; }
 }

 @media (min-width: 768px) and (max-width: 991px) {
     .colbg {background-color:green; }
 }

 @media (min-width: 992px) and (max-width: 1199px) {
      .colbg {background-color:yellow; }
 }

 @media (min-width: 1200px) {
      .colbg {background-color:red; }
 }

希望这会有所帮助。

【讨论】:

  • 如何覆盖引导类?你怎么知道 OP 在什么屏幕尺寸下需要不同的颜色..?
  • @TJ 这些是引导程序用来识别设备大小的媒体查询。他希望背景颜色可以更改为各种尺寸。因此,我们可以使用媒体查询来实现相同的目的,而不是使用列类名称。
  • .colbg 被引导程序使用..?
  • @TJ 不,这是我分配的课程
猜你喜欢
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多