【问题标题】:exclude div from parent style从父样式中排除 div
【发布时间】:2017-07-22 10:36:35
【问题描述】:

我正在尝试覆盖引导程序中的 .container 类。我正在使用 Drupal 7,并且我的主题有一个 css 文件,在我想覆盖 .container

之前它运行良好

我的 HTML

 <div class="main-container <?php print $container_class; ?>">
<div class="top-div" style=" width:100%;background-color: #676767; font-weight:bold; color:white;">
<div class="row" style="text-align:center;">
<div class="col-md-4"> text </div>
<div class="col-md-4"> text </div>
<div class="col-md-4"> text</div>
</div> 
</div>

PHP 代码将插入类 .container

我需要给 div 类 .top-diva 100% 的大小,没有 .container 的任何填充我已经尝试过 child > 选择器和后代选择器,并且 :not(.top-div) 方法没有任何作用.当我使用 :not(.top-div) 时,它会在网站上的每个页面和元素以及包含 .top-div 的 div 上应用更改,这真的很奇怪。有什么建议吗?

【问题讨论】:

  • 我们可以看看你目前的 CSS 吗?
  • 没什么特别的 .container &gt; .top-div {padding-right: 0px !important; padding-left: 0px;} 就像我说的我已经尝试过 > 和后代和 :not()

标签: html css drupal-7


【解决方案1】:

在引导程序中,填充应用于容器,而不是内部 div。要在一个元素上覆盖它,您需要给它负水平边距。

类似:

.container .top-div {
    margin-left:-10px;
    margin-right:-10px;
}

10px 应替换为 .main-container 上的填充。

如果这不能立即起作用,您可能需要更大的specificity

Bootstrap 的内置.row 类uses this method

【讨论】:

  • 我这样做了,而且效果很好,但我认为这不是最佳做法?
  • 在这种情况下,当仅应用于单个元素时,它是最不可能导致可维护性问题的解决方案。
  • 好吧,我所做的是给 div 超过 100% 的宽度,然后执行 margin-left:-15px,因为出于某种原因,margin-left 有效果,而 margin-right 没有任何效果跨度>
  • 嗯。尝试设置margin-right:-10px !important。如果可行,您知道您只需要一个更具体的选择器。
  • 啊,.row 确实有负边距。我尝试使用 !important 并没有帮助,但是我已经交换了我的标记顺序并将 div 放在 .row 内,而不是 .row 在里面并且它有效:) 谢谢。
【解决方案2】:

你为什么不试试:

.main-container {
  position:relative;
}

.top-div {
  position:absolute;
  left:0;
  top:0;
}
    
  <div class="main-container <?php print $container_class; ?>">
    <div class="top-div" style=" width:100%;background-color: #676767; font-weight:bold; color:white;">
    <div class="row" style="text-align:center;">
    <div class="col-md-4"> text </div>
    <div class="col-md-4"> text </div>
    <div class="col-md-4"> text</div>
    </div> 
    </div>



    

【讨论】:

  • 因为我需要页面其余部分的填充效果,但没有这个特定的 div。
  • @MarwanAK 好的,我编辑了答案,因为我没有意识到这就是你所追求的。
  • 当然可以。为什么我没有想到那个大声笑......我想我正在寻找更简单的东西。谢谢。如果没有更令人信服的答案出现,稍后会选择最佳答案:)
【解决方案3】:

如果您使用的是引导 css,则不需要提供任何自定义 css

您尝试在 top-div 类中添加 row 类

它是内置的 bootstrap.css,所以不需要任何额外的自定义 css。

.row {
  margin-left: -10px;
  margin-right: -10px;
}

示例

<div class="main-container <?php print $container_class; ?>">
<div class="top-div row" style=" width:100%;background-color: #676767; font-weight:bold; color:white;">
<div class="row" style="text-align:center;">
<div class="col-md-4"> text </div>
<div class="col-md-4"> text </div>
<div class="col-md-4"> text</div>
</div> 
</div>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  
  
<div class="main-container <?php print $container_class; ?>">
<div class="top-div row" style=" width:100%;background-color: #676767; font-weight:bold; color:white;">
<div class="row" style="text-align:center;">
<div class="col-md-4"> text </div>
<div class="col-md-4"> text </div>
<div class="col-md-4"> text</div>
</div> 
</div>

希望这会对您有所帮助。

【讨论】:

  • 是的,这就是@Alexander Gottlieb 和我刚刚得出的结论,它无需在样式表中添加任何内容即可工作,因为.row 是一个基本上否定.container 填充的类,他还提供了一个非常有用的链接.谢谢你的回答是他之后最接近的
猜你喜欢
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多