【问题标题】:ACF Change Background Image on HoverACF 在悬停时更改背景图像
【发布时间】:2019-01-21 23:20:26
【问题描述】:

一段时间以来一直在尝试解决此问题,但无法提出任何可行的方法。

我的目标是,当您将鼠标悬停在此特定 div 上时,背景图像将变为该背景图像的暗色版本。我尝试使用 filter 属性,但它会影响所有包含内容的内部 div。 (通过 JavaScript)

这是通过 ACF 在转发器字段内完成的。所以背景图像是由中继器中的子字段选择的。

我尝试了一些 Javascript,但没有找到解决方案。

还研究了替换 div,因此您会看到一个悬停 div。但是没有运气。

您将在下面找到我的代码以供参考。

任何帮助将不胜感激!

<div class="member-wrap grid-x grid-margin-x grid-margin-y">
            <?php if ( have_rows( 'branch_team_members' ) ) : ?>
                <?php while ( have_rows( 'branch_team_members' ) ) : the_row(); ?>
                    <div class="branch-member-main small-12 medium-6 large-3 cell">
                        <?php $team_member_hover_image = get_sub_field( 'team_member_hover_image' ); ?>
                        <div class="main-member-hover" style="background-image: url('<?php echo $team_member_hover_image['url']; ?>');">    
                        </div>
                        <?php $team_member_image = get_sub_field( 'team_member_image' ); ?>
                        <div class="main-member-area" style="background-image: url('<?php echo $team_member_image['url']; ?>');">
                            <h4 class="member-name-hover"><?php the_sub_field( 'team_member_name' ); ?></h4>
                            <span class="member-position-hover"><?php the_sub_field( 'team_member_position' ); ?></span>        
                            <?php the_sub_field( 'team_member_bio' ); ?>
                        </div>
                        <div class="main-member-contact">
                            <span class="member-name"><?php the_sub_field( 'team_member_name' ); ?></span>
                            <span class="member-contact"><?php the_sub_field( 'team_member_contact' ); ?></span>
                        </div>                      
                    </div>
                <?php endwhile; ?>
            <?php else : ?>
                <?php // no rows found ?>
            <?php endif; ?>
        </div>

【问题讨论】:

  • 您是否从该spinet 获得所有预期的HTML 作为输出?如果是这样,您能否将该 HTML 添加到此问题中,以便我查看可以在浏览器上执行的操作?
  • 很难在线设置像 :hover 这样的伪元素 - 我在这里的建议是根据你的行给出一个特定的 id,并在其中欺骗一个 &lt;style&gt; 块行也是如此
  • “我尝试使用 filter 属性,但它会影响所有包含内容的内部 div。” - 那么改变结构......?将背景图片放在自己的 div 元素上,然后将其绝对定位在实际内容的后面……然后您可以应用您喜欢的任何过滤器,而不会影响实际内容。
  • @ibex 所有 HTML 都包含在 sn-p 中。由于字段与我的 ACF 设置相关,因此您将无法在浏览器中看到它的外观。
  • @JLawless 我明白当我在本地没有相同的设置时,我将无法看到自己的输出。这就是我要求这个 sn-p 的输出(纯 HTML)的原因。 Stender 的回答似乎是一个更好的解决方案 - 为每个团队成员提供内联样式标签

标签: javascript wordpress background-image dom-events advanced-custom-fields


【解决方案1】:

尚未全部调试 - 但这可能会给您一个关于如何进行调试的想法。

此方法将为每个带有计数器的框创建一个块

<div class="member-wrap grid-x grid-margin-x grid-margin-y">
        <?php if ( have_rows( 'branch_team_members' ) ) : ?>
            <?php $counter; ?>
            <?php while ( have_rows( 'branch_team_members' ) ) : the_row(); ?>
                <?php $team_member_hover_image = get_sub_field( 'team_member_hover_image' ); ?>
                <?php $counter++; ?>

                <style type="text/css">
                    .blockNumber-<?php echo $counter; ?>{
                        background-image: url('<?php echo $team_member_image['url']; ?>');
                    }
                    .blockNumber-<?php echo $counter; ?>:hover{
                        background-image: url('<?php echo $team_member_hover_image['url']; ?>');
                    }

                </style>

                <div class="branch-member-main small-12 medium-6 large-3 cell">


                    <?php $team_member_image = get_sub_field( 'team_member_image' ); ?>
                    <div class="main-member-area blockNumber-<?php echo $counter; ?>">
                        <h4 class="member-name-hover"><?php the_sub_field( 'team_member_name' ); ?></h4>
                        <span class="member-position-hover"><?php the_sub_field( 'team_member_position' ); ?></span>        
                        <?php the_sub_field( 'team_member_bio' ); ?>
                    </div>
                    <div class="main-member-contact">
                        <span class="member-name"><?php the_sub_field( 'team_member_name' ); ?></span>
                        <span class="member-contact"><?php the_sub_field( 'team_member_contact' ); ?></span>
                    </div>                      
                </div>
            <?php endwhile; ?>
        <?php else : ?>
            <?php // no rows found ?>
        <?php endif; ?>
    </div>

【讨论】:

  • 谢谢你,我很快就会深入研究这个,让你知道它是怎么回事。
  • 更新:没有抓取第一个背景是因为它没有在样式块之前声明。只是这个小小的调整就做到了。谢谢!
  • 没问题 - 就像我说的那样 - 它给了你这个想法,我没有调试或检查过它:) 很高兴它有效
猜你喜欢
  • 2018-10-31
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多