我正在尝试使用Wordpress中的a:hover
在一个页面上为三个不同的文章分配三种不同的颜色。
这是网站 http://paragrams.wpshower.com/
目前所有文章都在a:hover
上变成淡黄色。我正在尝试为每篇文章创建不同的颜色(例如,第一篇文章为黄色,第二篇文章为红色,第三篇为蓝色等等)。
以下是php&目前a:hover
的CSS。我假设我需要将每个拇指id包装在不同的div中并指定CSS中的颜色?
PHP:
<ul class="mcol">
<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
<li class="article">
<?php
if ( has_post_thumbnail() ) { ?>
<?php
$imgsrcparam = array(
'alt' => trim(strip_tags( $post- >post_excerpt )),
'title' => trim(strip_tags( $post- >post_title )),
);
$thumbID = get_the_post_thumbnail( $post->ID, 'background', $imgsrcparam ); ?>
<div><a href="<?php the_permalink() ?>" class="preview"><?php echo "$thumbID"; ?></a></div>
<?php } ?>
<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
和CSS:
.li_container {
background-attachment: scroll;
background-image: url(images/main-bg.gif);
background-repeat: repeat-y;
background-position: left top;
}
.li_container .article:hover {
background-color:#57bfeb;
}
这是js:
# * Splits a <ul>/<ol>-list into equal-sized columns.
# *
# * Requirements:
# * <ul>
# * <li>"ul" or "ol" element must be styled with margin</li>
# * </ul>
# *
# * @see http://www.codeasily.com/jquery/multi-column-list-with-jquery
# */
jQuery.fn.makeacolumnlists = function(settings){
settings = jQuery.extend({
cols: 3, // set number of columns
colWidth: 0, // set width for each column or leave 0 for auto width
equalHeight: 'li', // can be false, 'ul', 'ol', 'li'
startN: 1 // first number on your ordered list
}, settings);
if(jQuery('> li', this)) {
this.each(function(y) {
var y=jQuery('.li_container').size(),
height = 0,
maxHeight = 0,
t = jQuery(this),
classN = t.attr('class'),
listsize = jQuery('> li', this).size(),
percol = Math.ceil(listsize/settings.cols),
contW = t.width(),
bl = ( isNaN(parseInt(t.css('borderLeftWidth'),10)) ? 0 : parseInt(t.css('borderLeftWidth'),10) ),
br = ( isNaN(parseInt(t.css('borderRightWidth'),10)) ? 0 : parseInt(t.css('borderRightWidth'),10) ),
pl = parseInt(t.css('paddingLeft'),10),
pr = parseInt(t.css('paddingRight'),10),
ml = parseInt(t.css('marginLeft'),10),
mr = parseInt(t.css('marginRight'),10),
col_Width = Math.floor((contW - (settings.cols-1)*(bl+br+pl+pr+ml+mr))/settings.cols);
if (settings.colWidth) {
col_Width = settings.colWidth;
}
var colnum=1,
percol2=percol;
jQuery(this).addClass('li_cont1').wrap('<div id="li_container' + (++y) + '" class="li_container"></div>');
for (var i=0; i<=listsize; i++) {
if (colnum > settings.cols) colnum = 1;
var eq = jQuery('> li:eq('+i+')',this);
eq.addClass('li_col'+colnum);
colnum++;
//if(i>=percol2) { percol2+=percol; colnum++; }
//var eq = jQuery('> li:eq('+i+')',this);
//eq.addClass('li_col'+ colnum);
//if(jQuery(this).is('ol')){eq.attr('value', ''+(i+settings.startN))+'';}
}
jQuery(this).css({cssFloat:'left', width:''+col_Width+'px'});
for (colnum=2; colnum<=settings.cols; colnum++) {
if(jQuery(this).is('ol')) {
jQuery('li.li_col'+ colnum, this).appendTo('#li_container' + y).wrapAll('<ol class="li_cont'+colnum +' ' + classN + '" style="float:left; width: '+col_Width+'px;"></ol>');
} else {
jQuery('li.li_col'+ colnum, this).appendTo('#li_container' + y).wrapAll('<ul class="li_cont'+colnum +' ' + classN + '" style="float:left; width: '+col_Width+'px;"></ul>');
}
}
if (settings.equalHeight=='li') {
for (colnum=1; colnum<=settings.cols; colnum++) {
jQuery('#li_container'+ y +' li').each(function() {
var e = jQuery(this);
var border_top = ( isNaN(parseInt(e.css('borderTopWidth'),10)) ? 0 : parseInt(e.css('borderTopWidth'),10) );
var border_bottom = ( isNaN(parseInt(e.css('borderBottomWidth'),10)) ? 0 : parseInt(e.css('borderBottomWidth'),10) );
height = e.height() + parseInt(e.css('paddingTop'), 10) + parseInt(e.css('paddingBottom'), 10) + border_top + border_bottom;
maxHeight = (height > maxHeight) ? height : maxHeight;
});
}
for (colnum=1; colnum<=settings.cols; colnum++) {
var eh = jQuery('#li_container'+ y +' li');
var border_top = ( isNaN(parseInt(eh.css('borderTopWidth'),10)) ? 0 : parseInt(eh.css('borderTopWidth'),10) );
var border_bottom = ( isNaN(parseInt(eh.css('borderBottomWidth'),10)) ? 0 : parseInt(eh.css('borderBottomWidth'),10) );
mh = maxHeight - (parseInt(eh.css('paddingTop'), 10) + parseInt(eh.css('paddingBottom'), 10) + border_top + border_bottom );
eh.height(mh);
}
} else
if (settings.equalHeight=='ul' || settings.equalHeight=='ol') {
for (colnum=1; colnum<=settings.cols; colnum++) {
jQuery('#li_container'+ y +' .li_cont'+colnum).each(function() {
var e = jQuery(this);
var border_top = ( isNaN(parseInt(e.css('borderTopWidth'),10)) ? 0 : parseInt(e.css('borderTopWidth'),10) );
var border_bottom = ( isNaN(parseInt(e.css('borderBottomWidth'),10)) ? 0 : parseInt(e.css('borderBottomWidth'),10) );
height = e.height() + parseInt(e.css('paddingTop'), 10) + parseInt(e.css('paddingBottom'), 10) + border_top + border_bottom;
maxHeight = (height > maxHeight) ? height : maxHeight;
});
}
for (colnum=1; colnum<=settings.cols; colnum++) {
var eh = jQuery('#li_container'+ y +' .li_cont'+colnum);
var border_top = ( isNaN(parseInt(eh.css('borderTopWidth'),10)) ? 0 : parseInt(eh.css('borderTopWidth'),10) );
var border_bottom = ( isNaN(parseInt(eh.css('borderBottomWidth'),10)) ? 0 : parseInt(eh.css('borderBottomWidth'),10) );
mh = maxHeight - (parseInt(eh.css('paddingTop'), 10) + parseInt(eh.css('paddingBottom'), 10) + border_top + border_bottom );
/*eh.height(mh);*/
}
}
jQuery('#li_container' + y).append('<div style="clear:both; overflow:hidden; height:0px;"></div>');
});
}
}
jQuery.fn.uncolumnlists = function(){
jQuery('.li_cont1').each(function(i) {
var onecolSize = jQuery('#li_container' + (++i) + ' .li_cont1 > li').size();
if(jQuery('#li_container' + i + ' .li_cont1').is('ul')) {
jQuery('#li_container' + i + ' > ul > li').appendTo('#li_container' + i + ' ul:first');
for (var j=1; j<=onecolSize; j++) {
jQuery('#li_container' + i + ' ul:first li').removeAttr('class').removeAttr('style');
}
jQuery('#li_container' + i + ' ul:first').removeAttr('style').removeClass('li_cont1').insertBefore('#li_container' + i);
} else {
jQuery('#li_container' + i + ' > ol > li').appendTo('#li_container' + i + ' ol:first');
for (var j=1; j<=onecolSize; j++) {
jQuery('#li_container' + i + ' ol:first li').removeAttr('class').removeAttr('style');
}
jQuery('#li_container' + i + ' ol:first').removeAttr('style').removeClass('li_cont1').insertBefore('#li_container' + i);
}
jQuery('#li_container' + i).remove();
});
}
答案 0 :(得分:2)
你不需要做任何与div有关的事情;只需为每个li
标记添加一个唯一的类,并在css中指定这些类颜色。
从您的代码中,您可以更改行
<li class="article">
到
<?php
switch($post->ID) {
case 1:
$class = 'yellow'; break;
case 2:
$class = 'blue'; break;
case 3:
$class = 'green'; break;
}
?>
<li class="article <?php echo $class; ?>">
这将有效输出第一篇文章class='article yellow'
,第二篇文章class='article blue'
等等。然后您可以通过更改css来完成所有工作,如下所示:
.li_container .article.yellow:hover { background-color:#57bfeb; }
.li_container .article.green:hover { background-color:green; }
.li_container .article.blue:hover { background-color:blue; }
如果您想获得幻想,您也可以将switch($post->ID)
更改为switch(mod($post->ID,3))
以进行大量换色。
答案 1 :(得分:0)
在页面的head元素中添加:
<script type="text/javascript"src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.mcol li.article:nth-child(1)').addClass('yellow')
$('.mcol li.article:nth-child(2)').addClass('red')
$('.mcol li.article:nth-child(3)').addClass('blue')
});
</script>
然后你会在你的css文件中添加这样的东西:
.yellow:hover { background-color: yellow; }
.red:hover { background-color: red; }
.blue:hover { background-color: blue; }
将颜色更改为您选择的十六进制代码。 玩得开心!
答案 2 :(得分:0)
我个人所做的是使用PHP添加递增类,如此...
<ul class="mcol">
<?php if(have_posts()) : $i = 0; while(have_posts()) : the_post(); $i++; ?>
<li class="article <?php echo "item-$i";?>">
然后你会得到像......
<li class="article item-1">content</li>
<li class="article item-2">content</li>
<li class="article item-3">content</li>
然后在悬停时将课程切换为..
$(document).ready(function(){
$('li.article').hover(function(){
$(this).toggleClass('active-item');
});
});
然后,它会为您提供一个涵盖所有列表项的类,一个对所显示的每个项唯一,另一个仅在悬停时附加到该元素。
li.article { /* CSS for all list items */ }
li.article.active-item { /* CSS for all any item active */ }
li.item-1 { /* CSS for the first item */ }
li.item-2 { /* CSS for the second item */ }
li.active-item.item-1 { /* CSS for the first item when hovered */ }
li.active-item.item-2 { /* CSS for the secpnd item when hovered */ }
注意:让CSS选择器更加具体并不会有什么坏处,在那些面前添加ID(比如父列表ID)将有助于确保与其他竞争风格的冲突减少
我希望这有用..;)