드롭메뉴제작중에 문제

드롭메뉴제작중에 문제

QA

드롭메뉴제작중에 문제

답변 1

본문

서브페이지에 대분류 중분류 드롭 메뉴 제작중입니다.

PC에서 hover말고 클릭해서 제작하고싶은데 

도저히 감이 안잡힙니다.

2034417499_1683013676.3212.png

 

select option 태그말고 div로 제작해서 모바일까지 연결되게 하고싶은데 어떻게 처리해야할까요

구글링 해봤는데 어렵네요 ㅠ

 

예시로 보여주실분 감사하겠습니다!

이 질문에 댓글 쓰기 :

답변 1


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$nav_menu = array();
$sql = "select * from {$g5['custom_menu_table']} where (1)";
$res = sql_query($sql);
for($i=0;$row=sql_fetch_array($res);$i++) {
    $nav_menu[$row['me_depth']][] = $row;
}
?>
<style>
.page-navi-wrap { position: absolute; left: 0; right: 0; bottom: 100%; }
.nav-wrap { display: flex; background-color: rgba(<?php echo BCR;?>,<?php echo BCG; ?>,<?php echo BCB;?>,0.5); }
.nav { display: flex; }
.pos { display: flex; margin-left: auto; align-self: auto; }
.nav-depth { position: relative; border-right: 1px solid rgba(<?php echo BCR;?>,<?php echo BCG; ?>,<?php echo BCB;?>,0.7); }
.nav-depth > span { display: block; font-size: 1rem; font-weight: 600; padding: 0 26px; height: 58px; line-height: 58px; cursor: pointer; min-width: 180px; }
.nav-depth.is-none > span { cursor: default; }
.nav-depth.is-arrow > span:after { position: absolute; content: ''; width: 14px; height: 14px; background: url(<?php echo G5_URL;?>/img/ico/submenu_arrow.png) no-repeat center; right: 15px; top: calc( 50% ); transform: translate(0, -50%); }
.nav-depth.bg_black > span { color: #fff; }
.nav-depth.bg_white > span { color: #000; }
.nav-depth > ul { display: none; position: absolute; top: 100%; left: 0; right: 0; background-color: #fff; z-index: 10; border-left: 1px solid #ddd; border-right: 1px solid #ddd; }
.nav-depth > ul > li { position: relative; }
.nav-depth > ul > li > a { display: block; padding: 0 26px; height: 52px; line-height: 52px; border-bottom: 1px solid #ddd; }
.nav-depth > ul > li > a:after { position: absolute; content: ''; width: 14px; height: 14px; background: url(<?php echo G5_URL;?>/img/ico/submenu_arrow.png) no-repeat center; right: 15px; top: calc( 50% ); transform: translate(0, -50%); }
@media(max-width: 768px) {
.nav { padding-left: 5px; }
.nav-depth > span { display: block; font-size: 14px; font-weight: 400; padding: 0 16px; height: 48px; line-height: 48px; cursor: pointer; min-width: 100px; }
.nav-depth > span:after { display: none; }
.nav-depth > ul > li > a { display: block; font-size: 12px; padding: 0 16px; height: 38px; line-height: 38px; border-bottom: 1px solid #ddd; }
.nav-depth > ul > li > a:after { display: none; }
}
</style>
<div class="page-navi-wrap">
    <div class="page-navi-inner max-layout">
        <div class="nav-wrap">
            <div class="nav">
            <?php
            foreach($nav_menu as $key=>$val) {
                $cut = $key * G5_CATE_LENGTH;
                $str = substr($me_code,0,$cut);
                $me_key   = array_search(substr($me_code,0,$cut), array_column($val, 'me_code'));
                if($me_key === false) {
                    continue;
                }
                $now_menu = $val[$me_key];
                $href_cut = $cut - G5_CATE_LENGTH;
                $href_str = substr($me_code,0,$href_cut);
                $count    = count($val);
                $arrow    = $count > 1 ? 'is-arrow' : 'is-none';
                echo '<div class="nav-depth depth'.$key.' bg_'.BASIC_STYLE.' '.$arrow.'" data-depth="'.$key.'">';
                    echo '<span class="nav-now">'.$now_menu['me_name'].'</span>';
                    if($count > 1) {
                        echo '<ul>';
                        foreach($val as $sub) {
                            if($sub['me_pc_use'] != '1' && $is_mobile == false ) {
                                continue;
                            }
                            if($sub['me_mo_use'] != '1' && $is_mobile == true ) {
                                continue;
                            }
                            if($sub['me_pa_use'] == '1' && $is_mobile == true ) {
                                continue;
                            }
                            if($key > 1 && $href_str != substr($sub['me_code'],0,$href_cut)) {
                                continue;
                            }
                            $me_link = $sub['me_link'];
                            $target  = $sub['me_target'] ? 'target="_'.$sub['me_target'].'"' : '';
                            echo '<li><a href="'.$me_link.'" '.$target.'><span>'.$sub['me_name'].'</span></a></li>';
                        }
                        echo '</ul>';
                    }
                echo '</div>';
            }
            ?>
            </div>
            <div class="pos">
            </div>
        </div>
    </div>
</div>
<script>
$(function() {
    $(document).on('click','.nav-now',function() {
        var $that = $(this).closest('.nav-depth'),
            depth1= $that.data('depth');
        $.each($('.nav-depth'),function() {
            var $this = $(this),
                depth2 = $this.data('depth'),
                $target = $this.find('ul');
            if(depth1 == depth2) {
                $target.slideToggle('slow');
            } else {
                if($target.is(':visible') === true) {
                    $target.slideToggle('slow');
                }
            }
        });
    });
});
</script>

 

말씀하신 형태로 구현된 서브메뉴입니다.

커스텀 된 내용이 조금 있어서 감안해서 보시면 될 듯 합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,020
© SIRSOFT
현재 페이지 제일 처음으로