javascript - 显示 : table-cell absolute positioning query

标签 javascript php html css wordpress

我正在为 wordpress 构建一个下拉菜单,我遇到了一个有趣的困境。最初,当您将鼠标悬停在显示所有类别的“商店”时,我有一个下拉列表,并且从它们的突出显示类别中会在下面的 div 中弹出 5 个随机产品,该 div 将跨越菜单栏的整个宽度。 这很好用

但是,当时的客户认为他需要的类别,我不得不将它们分解为子类别。

当前的菜单是这样的:

悬停商店 -> 显示主要类别 悬停类别 -> 显示子类别。

这部分工作得很好;然而,显示子类别的列表是使用 css 表设置进行布局的,以便使子类别列表在菜单的大小上均匀分布。你可以看到我的意思的一个例子here .

以前,我没有使用 css 表格设置,因为菜单很合适。包含类别产品的下拉 div 工作得很好。现在它们在 css 表格标记中,尽管它们没有被定义为如此,但似乎“假装”为表格单元格。产品的每个下拉列表都作为空白放置在每个子类别的右侧。但是因为它们被设置为均匀分布,所以看起来很奇怪。

所以我有两个问题:第一;尽管绝对显示,但下拉产品部分-不-去我需要它去的地方。有没有办法将这些从表格布局中分离出来?

其次,如果没有,无论我有多少个子类别,我还有什么其他选择可以使这些类别在父 div 中均匀显示?我考虑的一个选项是使用 javascript 计算出所需的宽度百分比,然后将其直接应用于 li,但我不确定这是否可行。

$args = array(

     'taxonomy'     => $taxonomy,
     'orderby'      => $orderby,
     'show_count'   => $show_count,
     'pad_counts'   => $pad_counts,
     'hierarchical' => $hierarchical,
     'title_li'     => $title,
     'hide_empty'   => $empty
);
$all_categories = get_categories( $args );
$categorycounter == 0;
foreach ($all_categories as $cat) {
if($cat->category_parent == 0) {
    $categorycounter = $categorycounter + 1;
    $categorypadding = "";
    $category_id = $cat->term_id;       
    echo $categorypadding . '<li class="category-' . $categorycounter.  '"><a class="main-nav-link" href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a><div class="drop-down-'. $cat->name .'"><section class="drop-down-section"><section class="sub-list">';
// set up subcategories to display below main categories

              $IDbyNAME = get_term_by('name', $cat->name, 'product_cat');

              $product_cat_ID = $IDbyNAME->term_id;
                    $args4 = array(
                   'hierarchical' => 1,
                   'show_option_none' => '',
                   'hide_empty' => 0,
                   'parent' => $product_cat_ID,
                   'taxonomy' => 'product_cat',     
                    'posts_per_page' => -1
              );            

            $subcategoryloop = get_categories( $args4 );        
            $subcount = 0;
            foreach ($subcategoryloop as $sc){
            if($subcategoryloop){
                $subcount = $subcount + 1;
            $link = get_term_link( $sc->slug, $sc->taxonomy);
            echo '<a class="subme" href="' . $link . '">'. $sc->name .'</a><section class="drop-down-products">';


                                //set up subcategories to display products   

                                        $args2 = array(
                                        'posts_per_page' => -1,
                                        'product_cat' => $sc->slug,
                                        'post_type'=>'product',
                                         'orderby' => 'rand'
                                  );    

                                $productcount = 0;
                                $loop = new WP_Query( $args2 );

                                while ( $loop->have_posts() ) : $loop->the_post();

                                            $productcount = $productcount + 1;
                                            if($productcount < 6){
                                            echo "<section class='thumbcontainer'><p><a href='";
                                            the_permalink();
                                            echo "'>" ;
                                            the_title();
                                            $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
                                                echo "</a></p><img src='" . $feat_image . "'/><br/><p class='dropdown-price'>";
                                                $price = get_post_meta( get_the_ID(), '_regular_price', true);
                                                echo "&pound;" .$price;
                                                echo "</p></section>";



                                            }
                                endwhile;

            echo "<section><a class='view-more' href='". get_term_link($cat->slug, 'product_cat') ."'>View More Products</a></section></section>";


            }
            }
echo "</section></section></div></li>";

 }
 }

作为旁注,我知道我的代码很乱。对不起!

最佳答案

为了证明列表的合理性,添加:

.sub-list {
  display: table;
  table-layout: fixed;
}

.subme {
  width: 100%;
}

关于javascript - 显示 : table-cell absolute positioning query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523164/

相关文章:

php - 定义方法 CI_DB_mysqli_result::where()

javascript - 使用动态变量作为对象文字,jQuery 动画函数

javascript - javascript 中的圆括号 () 放置 - 不寻常的语法?

javascript - 恢复 TypeORM 中的特定迁移

php - 如何在 PHP 中检查 PHP 文件代码语法?

javascript - php不向表中插入数据

javascript - Jquery 获取和设置值

html - 当分辨率低时,CSS 背景图像会折叠

javascript - JS-textarea行到javascript数组

css - 为什么我的 Div 向右偏移而不是居中?