将类添加到项目组合项以设置每第三项的样式

时间:2016-03-04 08:54:19

标签: php jquery css wordpress loops

我有一个投资组合列表页面,通过这样的帖子循环:

<div class="row"> 
    <!-- Loop though projects -->
    <?php 
        $args = array('post_type' => 'project');
        $the_query = new WP_Query( $args );
    ?>
    <?php 
        if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>  
            <a href="<?php the_permalink(); ?>">
                <div class="col-sm-6 project-entry">
                    <!--Add thumbnails to potfolio items and resize for responsive-->
                    <?php
                        $thumbnail_id = get_post_thumbnail_id();
                        $thumbnail_url = wp_get_attachment_image_src( $thumbnail_id, 'thumbnail-size', true);
                    ?>
                    <!--Link images and titles to individual portfolio page -->  
                    <p>
                        <img src="<?php echo $thumbnail_url[0]; ?>" alt="<?php the_title();?> project image">
                    </p>
                    <div class="project-text">   
                        <h4>
                            <?php the_title(); ?> | <?php the_field('project_type_name_'); ?>
                        </h4>
                        <p><?php the_field('brief_description_'); ?></p>
                    </div>
                </div>
            </a>

我需要设置每个第一,第二和第三篇文章的样式。我认为最好的方法是为每个项目组合项添加一个类。

因此需要添加:

class-one到第一,第四等等。

class-two到第二个,第五个等等。

class-three到第三,第六等等。

这是最好的方法,我该怎么做?

谢谢。

编辑:让我再解释一下。我有一个投资组合列表页面,链接到单个帖子页面。

每个列表都是一个图像(项目条目),当您滚动图像时,文本在背景图像上显示(项目文本)(在原始图像的顶部)。我想悬停图像对于每个第1个,第4个,第7个项目是相同的,对于每个第2个,第5个和第8个项目都是相同的,而对于每个第3个,第6个和第9个项目等等都是另一个不同的。

这是正在使用的CSS,(所以我试图改变这一部分:

 background: url('img/project-dark-grey.png');

    .project-entry img {
    width: 100%;
    margin: 30px 0;
    position: relative; 
    }

.project-text {
    position: absolute;
    z-index: 1;
    top: 7%;
    color: #fff;
    margin-right: 13px;
    padding: 24% 0;
    background: url('img/project-dark-grey.png');
    height: 381px;
    visibility: hidden;
    }


.project-entry:hover .project-text {
    visibility: visible;
    }

5 个答案:

答案 0 :(得分:4)

  

我需要在第一,第二和第三篇文章中设置样式。

您可以使用nth-child

&#13;
&#13;
ul li:nth-child(3n+1) {
  color: green;
}
ul li:nth-child(3n+2) {
  color: blue;
}
ul li:nth-child(3n+0) {
  color: red;
}
&#13;
<ul>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
  <li>Item
  </li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需使用nth-child选择器。

id= dnn_ctr173273_ProgramWizardBase_ctl00_AddNewLink

答案 2 :(得分:0)

您也可以使用nth-of-type

li:nth-of-type(3n+0){
  /* CSS Here */
}
li:nth-of-type(3n+1){
  /* CSS Here */
}
li:nth-of-type(3n+2){
  /* CSS Here */
}

答案 3 :(得分:0)

尝试将类名设置为索引0 1 2的类作为

$classes_arr = array('class-one','class-two','class-three');

增加循环中的计数器$ counter和$ arr_key

$counter = 0;
$arr_key = 0;

所以代码应该是

    $classes_arr = array('class-one','class-two','class-three');
    $counter = 0;
    $arr_key = 0;

    if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); 
        $counter++;


        echo '<div class="col-sm-6 project-entry '.$classes_arr[$arr_key].' ">';
$arr_key++;    
if($counter%3 == 0){
            $arr_key = 0
        }


    endwhile;
    endif;

答案 4 :(得分:0)

所以这是一个小孩子,但我需要使用.row。感谢所有回复的人,我真的很感激。

这里最终有效:

.project-text {
  /* common styles for all */
  background: url('path/to/bg1.png');
}

/* selects .project-text within links 2, 5, 8,... */
/* Switch to background-image here in case you need to add more background properties to the earlier rule */
/* If you use the shorthand again here to only change the background image then you will lose any other previously set properties */
.row a:nth-child(3n + 2) .project-text {
  background-image: url('path/to/bg2.png');
}

/* selects .project-text within links 3, 6, 9,... */
.row a:nth-child(3n + 3) .project-text { /* same as 3n */
  background-image: url('path/to/bg3.png');
}