在 Wordpress 循环中展开的复选框
Checkbox that expands inside Wordpress Loop
我为我的 Wordpress 循环创建了自己的样式,它在 Bootstrap 脚手架中显示 10 个最近 post 的图像。
每张图片都有一个标签,您可以单击它来展开信息。但是,无论您单击哪个复选框,它只会打开和关闭循环中的第一个 post。
我已经尝试将 li 和子 li 值分配给 css 并将复选框标签进一步移动到循环中。到目前为止没有任何帮助。我确信这与以下事实有关,因为它在循环中,所以我无法将每个复选框分配给特定的 post。只有一个[for="check"]
这个复选框的想法可行吗?
HTML:
<li class="<?php echo $span; ?>">
<?php
echo '<div class="postexpander"><label for="check"><div class="postarrow"> <p>Expand Info <span class="glyphicon glyphicon-plus"></span></p></div></label>';
echo '<input id="check" type="checkbox">';
echo '<div class="posttext" onclick="posttext:hover">';
echo '<p class="posthead">';
echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
the_title();
echo '</a>';
echo '</p><p class="postdate">';
the_date('F jS, Y');
echo '</p><p class="postcontent">';
$content = get_the_content();
$trimmed_content = wp_trim_words( $content, 15,"...".'<p class="readmore"> <a href="'. get_permalink() .'">Read More</a>' );
echo $trimmed_content;
echo '</p>';
echo '</div></div>';
if(has_post_thumbnail()) {
$image_src = the_post_thumbnail( 'custom-size', array( 'class' => "postimage" ) );
echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
echo '</a>';}?>
</li>
<?php
//End the post loop
endwhile; else:
?>
CSS:
.postroll .col-md-6 img {
max-height:400px;
min-width: 200px;
margin: -5px 0px -5px 0px;
}
.postroll .col-md-3 img {
max-height:200px;
min-width: 100px;
}
.col-md-6 {
padding: 0px !important;
}
.row {
clear: both;}
.postimage {
text-decoration: none;
opacity:.5;
width: 100%;
height: auto;
padding: 5px 0 5px 0;
filter: grayscale(50%);
}
.postexpander {
opacity:1;
position: absolute;
width: 100%;
height: 100%;
text-align: right;
z-index: 5;
}
.postexpander:hover ~ .postimage {
opacity: 1;
filter: grayscale(0%);
webkit-box-shadow: 0px 0px 76px -16px rgba(34,35,36,1);
-moz-box-shadow: 0px 0px 76px -16px rgba(34,35,36,1);
box-shadow: 0px 0px 76px -16px rgba(34,35,36,1);
}
.posttext {
opacity:0;
width: 0px;
height: 100%;
margin-left: 100%;
top:0;
overflow:hidden;
position: absolute;
background:rgba(255,255,255,0.95); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000,endColorstr=#66000000);
zoom: 1;
z-index: 1;
}
.postroll input {
display: none;
}
.postarrow {
font-size: 12px;
text-align: center;
padding: 5px;
width: 40px;
height: 100%;
text-align: right;
margin-left: 90%;
background-color: rgba(51, 68, 122, 1);
border-left: 3px solid #13EBC7;
float: right;
display:block;
}
.postarrow p{
color:white;
font-size: 100%;
width: 120px;
height:20px;
-ms-transform: rotate(-90deg); /* IE 9 */
-webkit-transform: rotate(-90deg); /* Chrome, Safari, Opera */
-moz-transform: rotate(-90deg);
transform: rotate(-90deg);
-ms-transform-origin: 50% 270%; /* IE 9 */
-webkit-transform-origin: 50% 270%; /* Chrome, Safari, Opera */
transform-origin: 50% 270%;
}
.postroll label:hover .postarrow {
background: #3498db;
}
input:checked + .posttext {
opacity:1;
width:100%;
margin-left:0%;
}
.posthead {
color: #0587F2;
font-size: 200%;
font-weight: bolder;
float:left;
text-align:right;
margin-top: -2px;
padding: 5px;
width: 60%;
height: 100%;
vertical-align: top;
display: block;
overflow: hidden;
border-right: 3px solid #13EBC7;
z-index:2;
}
.postdate{
color:#5C5C5C;
float: right;
font-style: italic;
text-align: left;
width: 40%;
height: 30%;
vertical-align: top;
padding: 10px 25px 10px 5px;
}
.postcontent{
margin-top: -20px;
padding: 10px 25px 10px 5px;
float: right;
color:#8A8A8A;
text-align: left;
width: 40%;
height: 70%;
}
.readmore {
visibility: hidden;
float: right;
text-align: right;
vertical-align: text-bottom;
vertical-align: bottom;
}
.postarrow, .posttext, .posthead, .postimage, .readmore,
.postroll input, input:checked + .posttext, input .posttext, .postarrow, label:hover .postarrow
{
-webkit-transition: all .5s;
-moz-transition: all .5s;
-o-transition: all .5s;
transition: all .5s;
}
在图片中您可以看到,即使我点击了信息选项卡(悬停时为浅蓝色),它也会扩展其上方 post 上的文本:
http://bit.ly/1CYkYjd
好的,我明白了!就这么简单。
而不是:
<label for="check">
<input id="check" type="checkbox">
我必须使用:
<label for="'.get_the_ID().'">
<input id="'.get_the_ID().'" type="checkbox">
这样,就像我之前想的那样,每个 post 的复选框都被赋予了一个单独的值,并且它们都可以同时操作。
我为我的 Wordpress 循环创建了自己的样式,它在 Bootstrap 脚手架中显示 10 个最近 post 的图像。
每张图片都有一个标签,您可以单击它来展开信息。但是,无论您单击哪个复选框,它只会打开和关闭循环中的第一个 post。
我已经尝试将 li 和子 li 值分配给 css 并将复选框标签进一步移动到循环中。到目前为止没有任何帮助。我确信这与以下事实有关,因为它在循环中,所以我无法将每个复选框分配给特定的 post。只有一个[for="check"]
这个复选框的想法可行吗?
HTML:
<li class="<?php echo $span; ?>">
<?php
echo '<div class="postexpander"><label for="check"><div class="postarrow"> <p>Expand Info <span class="glyphicon glyphicon-plus"></span></p></div></label>';
echo '<input id="check" type="checkbox">';
echo '<div class="posttext" onclick="posttext:hover">';
echo '<p class="posthead">';
echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
the_title();
echo '</a>';
echo '</p><p class="postdate">';
the_date('F jS, Y');
echo '</p><p class="postcontent">';
$content = get_the_content();
$trimmed_content = wp_trim_words( $content, 15,"...".'<p class="readmore"> <a href="'. get_permalink() .'">Read More</a>' );
echo $trimmed_content;
echo '</p>';
echo '</div></div>';
if(has_post_thumbnail()) {
$image_src = the_post_thumbnail( 'custom-size', array( 'class' => "postimage" ) );
echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
echo '</a>';}?>
</li>
<?php
//End the post loop
endwhile; else:
?>
CSS:
.postroll .col-md-6 img {
max-height:400px;
min-width: 200px;
margin: -5px 0px -5px 0px;
}
.postroll .col-md-3 img {
max-height:200px;
min-width: 100px;
}
.col-md-6 {
padding: 0px !important;
}
.row {
clear: both;}
.postimage {
text-decoration: none;
opacity:.5;
width: 100%;
height: auto;
padding: 5px 0 5px 0;
filter: grayscale(50%);
}
.postexpander {
opacity:1;
position: absolute;
width: 100%;
height: 100%;
text-align: right;
z-index: 5;
}
.postexpander:hover ~ .postimage {
opacity: 1;
filter: grayscale(0%);
webkit-box-shadow: 0px 0px 76px -16px rgba(34,35,36,1);
-moz-box-shadow: 0px 0px 76px -16px rgba(34,35,36,1);
box-shadow: 0px 0px 76px -16px rgba(34,35,36,1);
}
.posttext {
opacity:0;
width: 0px;
height: 100%;
margin-left: 100%;
top:0;
overflow:hidden;
position: absolute;
background:rgba(255,255,255,0.95); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000,endColorstr=#66000000);
zoom: 1;
z-index: 1;
}
.postroll input {
display: none;
}
.postarrow {
font-size: 12px;
text-align: center;
padding: 5px;
width: 40px;
height: 100%;
text-align: right;
margin-left: 90%;
background-color: rgba(51, 68, 122, 1);
border-left: 3px solid #13EBC7;
float: right;
display:block;
}
.postarrow p{
color:white;
font-size: 100%;
width: 120px;
height:20px;
-ms-transform: rotate(-90deg); /* IE 9 */
-webkit-transform: rotate(-90deg); /* Chrome, Safari, Opera */
-moz-transform: rotate(-90deg);
transform: rotate(-90deg);
-ms-transform-origin: 50% 270%; /* IE 9 */
-webkit-transform-origin: 50% 270%; /* Chrome, Safari, Opera */
transform-origin: 50% 270%;
}
.postroll label:hover .postarrow {
background: #3498db;
}
input:checked + .posttext {
opacity:1;
width:100%;
margin-left:0%;
}
.posthead {
color: #0587F2;
font-size: 200%;
font-weight: bolder;
float:left;
text-align:right;
margin-top: -2px;
padding: 5px;
width: 60%;
height: 100%;
vertical-align: top;
display: block;
overflow: hidden;
border-right: 3px solid #13EBC7;
z-index:2;
}
.postdate{
color:#5C5C5C;
float: right;
font-style: italic;
text-align: left;
width: 40%;
height: 30%;
vertical-align: top;
padding: 10px 25px 10px 5px;
}
.postcontent{
margin-top: -20px;
padding: 10px 25px 10px 5px;
float: right;
color:#8A8A8A;
text-align: left;
width: 40%;
height: 70%;
}
.readmore {
visibility: hidden;
float: right;
text-align: right;
vertical-align: text-bottom;
vertical-align: bottom;
}
.postarrow, .posttext, .posthead, .postimage, .readmore,
.postroll input, input:checked + .posttext, input .posttext, .postarrow, label:hover .postarrow
{
-webkit-transition: all .5s;
-moz-transition: all .5s;
-o-transition: all .5s;
transition: all .5s;
}
在图片中您可以看到,即使我点击了信息选项卡(悬停时为浅蓝色),它也会扩展其上方 post 上的文本: http://bit.ly/1CYkYjd
好的,我明白了!就这么简单。
而不是:
<label for="check">
<input id="check" type="checkbox">
我必须使用:
<label for="'.get_the_ID().'">
<input id="'.get_the_ID().'" type="checkbox">
这样,就像我之前想的那样,每个 post 的复选框都被赋予了一个单独的值,并且它们都可以同时操作。