试图追加"!important"使用JS创建的内联样式

时间:2016-02-05 18:36:57

标签: javascript html css

我正在处理一个我需要添加的元素,重要的是'我使用JS动态创建的内联样式,以覆盖由另一个人开发的样式表中存在的几种CSS样式。不幸的是,这些样式表在全球范围内使用,并且这个特定区域有一大堆重要的内容,我无法修改而不会有改变整个站点中存在的先前标题的风险。我的JS技能相当粗糙,因此我有一个粗略的想法。

以下是我目前的代码段:

fixTextPosition: function()
{
  var width = $( window ).width();
    if (width > 1451){
      width = 1451;
    }
  var height = $( window ).height();
    if (height > 816){
      height = 816;
    }
  $("#banner-resize").css("minheight", height);
    if (height < 816){
      $("#banner-resize").css("minHeight", height - 1);
    }
}

我试图追加&#34;!important&#34;到了&#34; minHeight&#34;经过(高度 - 1)之后的值,似乎无法弄清楚如何将值添加为字符串。

提前感谢任何帮助者!

在答案后修改

感谢所有提出一些想法的人 - 我会在这里发布我的问题,以确保我的下一个问题得到更好的表达和更多的背景。 :)

上面的问题是指一个全局标题元素,它有几个&#34; min-height = x!important&#34;存在于以前的开发者创建的全球样式表中 - 这意味着我不能像我希望的那样自由地玩。我能够通过创建一个包含所有以前的定位样式和新的&#34; min-height = x&#34;的新类来解决它。 sans&#39;!important&#39;这让我可以根据需要使用上面的JS。

我仍然很想知道是否有一个更简单的JS解决方法来附加一个“重要的”&#39;因为我不想在每次遇到这种特殊情况时都想创建新课程。

2 个答案:

答案 0 :(得分:0)

如果您通过jQuery设置任何CSS样式,则此样式将添加到DOM元素样式属性。

例如,如果您有元素:

<p class="test" id="testId">

你将通过jQuery添加样式:

$(".test").css("min-height", 30);

在您的DOM中,您现在将拥有:

<p class="test" id="testId" style="min-height: 30px">

样式属性中的样式会覆盖CSS文件中的样式,除非您在CSS文件中使用!impotrant。

只是不要在CSS中使用!important。当你通过jQuery设置新的样式值时,它会自动覆盖样式值。

如何在没有jQuery的情况下设置min-height样式属性:

by'id'属性:

document.getElementById("testId").style.minHeight = "30px";

by'class'属性:

document.querySelector(".test").style.minHeight = "30px";

querySelector - 获取第一个带有'test'类的元素

var elementsList = document.querySelectorAll(".test");
for (var i = 0, len = elementsList.length; i < len; i++) {
  elementsList[i].style.minHeight = "30px";
}

查询选择器在所有现代浏览器中都可用,来自IE8。 但是在IE8中你不能使用CSS3选择器

答案 1 :(得分:0)

我认为这就是你要做的事情:

fixTextPosition: function(){
 var width = $( window ).width();
 if (width > 1451){
  width = 1451;
 }
 var height = $( window ).height();
 if (height > 816){
  height = 816;
 }

 if (height < 816){
  $("#banner-resize").css("min-height", height - 1);
 }
 else{
  $("#banner-resize").css("min-height", height);
 }
}

如果以上操作不起作用,请尝试以下操作:

 fixTextPosition: function(){
 var width = $( window ).width();
 if (width > 1451){
  width = 1451;
 }
 var height = $( window ).height();
 if (height > 816){
  height = 816;
 }

 if (height < 816){
  var ht = height - 1;
  $("#banner-resize").css("min-height", ht+" !important");
 }
 else{
  $("#banner-resize").css("min-height", height+" !important");
 }
}

虽然我不赞成上述解决方案。

我的意见是你使用CSS,

 $bannerResize = $('$banner-resize')
 if (height < 816){
  $bannerResize.addClass('height815');
  $bannerResize.removeClass('height816')
 }
 else{
  $bannerResize.addClass('height816');
  $bannerResize.removeClass('height815')
 }
}

和上面的CSS应该是,

#banner-resize.height816{
  min-height:816px !important;
}
#banner-resize.height815{
  min-height:815px !important;
}

希望有所帮助。