jQuery or CSS Problem?
I'm using this code to make #sidebar
's height match #post_content
's height:
<script type='text/javascript'>
$().ready(function(){
$('#sidebar').height($('#post_content').outerHeight(true));
});
</script>
This works on the homepage: http://themeforward.com/demo2/ and even on a posts page without comments... but once comments are added they no longer match heights: http://themeforward.com/demo2/2011/01/02/centered-and-captioned-image-longer-title/
To illustrate the problem I have made the post_content div background color black and the sidebar background color gray.
Here is my CSS:
#container {
width:1126px;
margin:35px auto;
padding:0;
background:#000;
clear:both;
overflow:hidden
}
#sidebar {
display:inline-block;
float:right!important;
width:410px;
padding:0 0 0 25px;
overflow:hidden;
background:#AAA;
border-left:1px solid #EEE
}
Here is my comments.php:
<?php
// Do not delete these lines
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');
if ( post_password_required() ) { ?>
<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
<?php
return;
}
?>
<!-- You can start editing here. -->
<?php if ( have_comments() ) : ?>
<div class="responses"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”<?php if ( comments_open() && ( 4 <= get_comments_number()) ) : ?>
<a href="#respond">»</a>
<?php endif; ?>
</div>
<div id="commentlist">
<ul>
<?php wp_list_comments('avatar_size=60'); ?>
</ul>
</div>
<div id="more_posts_comments">
<div class="oe"><?php previous_comments_link() ?></div>
<div class="re"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ('open' == $post->comment_status) : ?>
<!-- If comments are open, but there are no comments. -->
<?php else : // comments are closed ?>
<!-- If comments are closed. -->
<p class="nocomments">Comments are closed.</p>
<?php endif; ?>
<?php endif; ?>
<?php if ('open' == $post->comment_status) : ?>
<!-- Respond to this -->
<div id="respond">
<div class="responses"><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></div>
<div class="cancel_comment">
<?php cancel_comment_reply_link('cancel comment'); ?>
</div>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
<?php else : ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<!-- If the user is logged in... -->
<?php if ( $user_ID ) : ?>
<div class="logged-in"><p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a> - <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out</a></p></div>
<?php else : ?>
<!-- If the user isn't logged in, they need to fill out these forms... -->
<div id="small_forms">
<input type="text" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='Na开发者_如何转开发me (required)';" value="Name (required)" name="author" id="author" size="22" tabindex="1" />
<input type="text" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='E-Mail (required, hidden)';" value="E-Mail (required, hidden)" name="email" id="email" size="22" tabindex="2" />
<input type="text" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='Website';" value="Website" name="url" id="url" size="22" tabindex="3" />
</div>
<?php endif; ?>
<div id="submit_spacer"><h6><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></h6></div>
<!-- Submit button -->
<h6><input name="submit" type="submit" value="Submit Comment" class="submit" /></h6>
<h6><?php comment_id_fields(); ?></h6>
<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; // If registration required and not logged in ?>
</div>
<?php endif; // if you delete this the sky will fall on your head ?>
enter code here
You can easily achieve the same effect with pure css by positioning your sidebar absolutely to the container div. Try this:
add:
#container {
position:relative;
}
#sidebar {
position:absolute;
top:0;
right:0;
bottom:0;
}
Make un function that set the height.
For example:
function setHeight(){
$('#sidebar').height($('#post_content').outerHeight(true)+'px');
}
Call this function on page ready
and call it back again when you added content in #post_content.
Have you tried using a clearfix element to do this for you instead? That way you don't have to dynamically track when the height changes. You need to use it in combination with a false background though.
On another note, shouldn't it be $(function() { }) or $(document).ready(function() { }) $().ready(function() { }) is not recommended.
精彩评论