将 CSS 样式动态应用于特定元素



我有一个div,里面有段落:

<div>
  <p>...</p>
  <p>...</p>
</div>

我想动态地将某种样式应用于此div 中的段落。是否可以在不处理每个段落元素的情况下做到这一点,而只是以某种方式将样式附加到div 元素,所有内部段落都会受到影响?

也许用jquery。

对我来说,这听起来像样式表的动态变化,有可能吗?


回答评论中的正确建议。

谢谢。

不使用类:

/* using CSS */
div p {
    color: #ff0000;
}
// using jQuery
$("div p").css({
    color : "#ff0000"
});

使用<p>元素的类:

<!-- HTML -->
<div>
    <p class="mypar">...</p>
    <p class="mypar">...</p>
</div>
/* using CSS */
div p.mypar {
    color: #ff0000;
}
// using jQuery
$("div p.mypar").css({
    color : "#ff0000"
});

使用<div>元素的类:

<!-- HTML -->
<div class="mydiv">
    <p>...</p>
    <p>...</p>
</div>
/* using CSS */
div.mydiv p {
    color: #ff0000;
}
// using jQuery
$("div.mydiv p").css({
    color : "#ff0000"
});

使用 CSS,您可以定义子选择器。

在此基础上,您可以动态地向div添加/删除样式类,该样式将应用于您在该选择器中指定的子项。

假设您想将其应用于特定div,而不是任何/每个。因此,请为目标div提供一个标识符:

<div id='foo'>
  <p>...</p>
  <p>...</p>
</div>

使用简单的 javascript 添加动态样式:

document.getElementById('foo').style.className='dynamic_style'

CSS(在子选择器上使用组合的 id 和类):

div#foo.dynamic_style > p { /* your style definition*/ }

使用 CSS:

div p {your style goes here}

jquery:

$('div p').css('property', 'value');

您可以通过以下方式动态地将 CSS 应用于此示例:

function applyCSS()
{
    $("div > p").css({
        "background": "#fff",
        "color": "#000"
    });
}

或者,当您要在页面加载时应用此功能时:

$(document).ready(function(){
    applyCSS();
});
例如,

动态更改 css 就像更改顶级类名一样简单

<div id="toggleme" class="class1">
  <p>...</p>
  <p>...</p>
</div>
<a id="test">Test</a>

.class1 {
 background-color:#F00;
}
.class1 p {
    color:#00F;
}
.class2 {
    background-color:#00F;
}
.class2 p {
 color:#F00;
}​

那么jquery将是

$(document).ready(function() {
    $('#test').click(function() {
        $('#toggleme').toggleClass('class1');
        $('#toggleme').toggleClass('class2');
    });
});​

类下面的所有内容都将更改为其新样式:)

小提琴

最新更新