【问题标题】:Add Random CSS on Each Instance of a Class With jQuery使用 jQuery 在类的每个实例上添加随机 CSS
【发布时间】:2012-09-01 19:24:47
【问题描述】:

我需要做的是向我的 HTML 中 .project_content 的每个实例添加三种 CSS 样式中的一种,并且需要为每个实例随机选择样式。

三种样式如下:
float:left
float:right OR
margin:auto + width:x(其中.project_content的宽度是计算出来的,x是计算出来的宽度)

现在我有这个:

<script type="text/javascript">
$(document).ready(function(){
    var floats         = ["right","left"];                
  var rand = Math.floor(Math.random()*floats.length);           
  $('.project_content').css("float", floats[rand]);
});​​​​​​​​​​​​​
</script>

这个脚本为我做的就是将float:leftfloat:right 应用于.project_content 的所有实例,而不是为每个实例选择右或左。

如何让我的脚本为project_content 的每个实例选择一个随机变量,以及如何将margin:auto + 计算出的width 添加到组合中?非常感谢。

【问题讨论】:

    标签: javascript jquery css random positioning


    【解决方案1】:

    您需要为集合中的 每个 元素获取随机样式,而不是为 整个 集合获取单个随机值。这可以使用.css( propertyName, function(index, value) ) 来完成,因为函数会为 每个 匹配的元素调用:

    $('.project_content').css("float", function () {
      var rand = Math.floor(Math.random() * floats.length);
      return floats[rand];  
    })​;
    

    DEMO

    要将marginwidth 添加到组合中,您不能再使用css()(因为您需要修改多个属性之一),但您可以使用.each()

    var styles = [ "left", "right", "margin" ];
    $('.project_content').each(function () {
      var randomStyle = styles[Math.floor(Math.random() * floats.length)];
      if (randomStyle == "left" || randomStyle == "right") {
        $(this).css('float', randomStyle);
      } else { // margin
        $(this).css('margin', 'auto')
               .css('width', your_calculated_width);
      }
    })​;
    

    【讨论】:

    • 对此解决方案的一点旁注。您可以像这样获取相关 DOM 元素的属性:$('element').css({left:function(){return $(this).attr('original-x');});
    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 2015-10-26
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多