টুইটার বুটস্ট্র্যাপ মাল্টিলেভেল ড্রপডাউন মেনু


89

টুইটার বুটস্ট্র্যাপ 2 এর উপাদানগুলি ব্যবহার করে একটি বহু স্তরের ড্রপডাউন মেনু পাওয়া সম্ভব? মূল সংস্করণে এই বৈশিষ্ট্যটি নেই।


বাস্তবে বাস্তবায়নের সন্ধান করেছিল কিন্তু আমি এর সাথে ভাগ্য পাইনি।
হেলনার

হয়তো আপনার একটি সফল মেনু দরকার? htmldog.com/articles/suckerfish/DPdowns
এলেন মার্লে

4
এটিও একবার দেখুন: github.com/twitter/bootstrap/issues/424
পাওলো

উত্তর:


113

আপডেট উত্তর

V2.1.1 সমর্থন করে * আপডেট উত্তর ** বুটস্ট্র্যাপ সংস্করণ স্টাইলশিট।

** তবে সাবধান হন কারণ এই সমাধানটি v3 থেকে সরানো হয়েছে

কেবল উল্লেখ করতে চেয়েছিলেন যে এই সমাধানটির আর দরকার নেই কারণ সর্বশেষতম বুটস্ট্র্যাপ এখন ডিফল্টরূপে বহু-স্তরের ড্রপডাউনগুলিকে সমর্থন করে। আপনি যদি পুরানো সংস্করণে থাকেন তবে আপনি এটি ব্যবহার করতে পারেন তবে যারা সর্বশেষে আপডেট করেছেন (লেখার সময় v2.1.1) এটি আর প্রয়োজন হয় না। ডকুমেন্টেশন থেকে সরাসরি আপডেট হওয়া ডিফল্ট মাল্টি-লেভেল ড্রপডাউন সহ এক ঝাঁকনি এখানে দেওয়া হয়েছে:

http://jsfiddle.net/2Smgv/2858/


আসল উত্তর

ওইখানে সাবমেনু সাপোর্টে উত্থাপিত কিছু বিষয় GitHub এ ছিলাম এবং তারা সাধারণত যেমন বুটস্ট্র্যাপ ডেভেলপারদের দ্বারা বন্ধ করা হয় এই এক , তাই আমি মনে করি এটা কাজ কিছু বাইরে বুটস্ট্র্যাপ ব্যবহার বিকাশকারীদের কাছে ছেড়ে দেওয়া হয়। এখানে একটি ডেমো আমি একসাথে রেখেছি যাতে আপনি কীভাবে একটি কাজ করা সাব মেনু হ্যাক করতে পারেন তা দেখিয়ে দেওয়া হচ্ছে।

প্রাসঙ্গিক কোড

সিএসএস

.dropdown-menu .sub-menu {
    left: 100%;
    position: absolute;
    top: 0;
    visibility: hidden;
    margin-top: -1px;
}

.dropdown-menu li:hover .sub-menu {
    visibility: visible;
    display: block;
}

.navbar .sub-menu:before {
    border-bottom: 7px solid transparent;
    border-left: none;
    border-right: 7px solid rgba(0, 0, 0, 0.2);
    border-top: 7px solid transparent;
    left: -7px;
    top: 10px;
}
.navbar .sub-menu:after {
    border-top: 6px solid transparent;
    border-left: none;
    border-right: 6px solid #fff;
    border-bottom: 6px solid transparent;
    left: 10px;
    top: 11px;
    left: -6px;
}

.sub-menu2-স্তরের ড্রপ ডাউন মেনুগুলিতে প্রয়োগ করার জন্য আমার নিজস্ব শ্রেণি তৈরি করা হয়েছে , এইভাবে আমরা তাদের আমাদের মেনু আইটেমের পাশে রাখতে পারি। সাবমেনু গ্রুপের বাম দিকে প্রদর্শন করতে তীরটিও সংশোধন করে।

ডেমো


4
বুটস্ট্র্যাপ ২.০.৪ অনুসারে, আপনার অবশ্যই "ডিসপ্লে: ব্লক;" ঘোষণা থাকতে হবে নির্বাচকটিতে ".ড্রপডাউন-মেনু লি: হোভার .সুব-মেনু"।
ওমর

আমি এটি বাস্তবায়নের চেষ্টা করেছি, প্রথম সাবমেনু ঠিকঠাক কাজ করে। তবে যদি আমি একই মেনুতে অন্য একটি সাবমেনু যুক্ত করি তবে জিনিসগুলি ভুল হয়ে যায়। কিছু কারণে এটি দ্বিতীয়টির পরিবর্তে প্রথম সাবমেনুটি খোলে। কোন ধারণা বা ক্লু স্বাগত জানানো হবে। ইতিমধ্যে থ্যাঙ্কস :)
আরজান

হার্মিস - সাবমেনুর স্টিকিং কীভাবে ঠিক করতে হয় তার জন্য আমার উত্তর দেখুন।
শান লিঞ্চ

4
@ কনিকা এই ফিক্সটি একত্রিত করার জন্য কিছু অতিরিক্ত মার্কআপ এবং সম্ভবত কিছু জাভাস্ক্রিপ্টের প্রয়োজন হবে। আমি জিনিসগুলি পরিষ্কার রাখতে মোবাইল ডিভাইসে লুকিয়ে রাখার পরিবর্তে দ্বিতীয় স্তরের ড্রপডাউন সামগ্রীটি প্রদর্শন করার পরামর্শ দিচ্ছি। আমি দিনের পরে কোনও সমাধানে কাজ করার চেষ্টা করব। যদিও আমি ডিফল্ট বুটস্ট্র্যাপ সমাধানটি পরীক্ষা করে দেখিনি, তাই যদি আপনি সর্বদা এটির সাথে যেতে পারেন তবে।
Andres Ilich

4
আপডেট হওয়া সংস্করণটি কেবল বুটস্ট্র্যাপ
২.৩.২ এর

34

[টুইটার বুটস্ট্র্যাপ ভি 3]

টুইটার বুটস্ট্র্যাপ v3 এ একটি এন-লেভেল ড্রপডাউন মেনু (টাচ ডিভাইস বান্ধব) তৈরি করতে,

  • এন-লেভেল ড্রপডাউন মেনু v3.0.0 এর জেএসফিডেল-ডেমো | v3.1.1 | v3.3.0

সিএসএস:

.dropdown-menu>li /* To prevent selection of text */
{   position:relative;
    -webkit-user-select: none; /* Chrome/Safari */        
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* IE10+ */
    /* Rules below not implemented in browsers yet */
    -o-user-select: none;
    user-select: none;
    cursor:pointer;
}
.dropdown-menu .sub-menu 
{
    left: 100%;
    position: absolute;
    top: 0;
    display:none;
    margin-top: -1px;
    border-top-left-radius:0;
    border-bottom-left-radius:0;
    border-left-color:#fff;
    box-shadow:none;
}
.right-caret:after,.left-caret:after
 {  content:"";
    border-bottom: 5px solid transparent;
    border-top: 5px solid transparent;
    display: inline-block;
    height: 0;
    vertical-align: middle;
    width: 0;
    margin-left:5px;
}
.right-caret:after
{   border-left: 5px solid #ffaf46;
}
.left-caret:after
{   border-right: 5px solid #ffaf46;
}

জিকুয়েরি:

$(function(){
    $(".dropdown-menu > li > a.trigger").on("click",function(e){
        var current=$(this).next();
        var grandparent=$(this).parent().parent();
        if($(this).hasClass('left-caret')||$(this).hasClass('right-caret'))
            $(this).toggleClass('right-caret left-caret');
        grandparent.find('.left-caret').not(this).toggleClass('right-caret left-caret');
        grandparent.find(".sub-menu:visible").not(current).hide();
        current.toggle();
        e.stopPropagation();
    });
    $(".dropdown-menu > li > a:not(.trigger)").on("click",function(){
        var root=$(this).closest('.dropdown');
        root.find('.left-caret').toggleClass('right-caret left-caret');
        root.find('.sub-menu:visible').hide();
    });
});

এইচটিএমএল:

<div class="dropdown" style="position:relative">
    <a href="#" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">Click Here <span class="caret"></span></a>
    <ul class="dropdown-menu">
        <li>
            <a class="trigger right-caret">Level 1</a>
            <ul class="dropdown-menu sub-menu">
                <li><a href="#">Level 2</a></li>
                <li>
                    <a class="trigger right-caret">Level 2</a>
                    <ul class="dropdown-menu sub-menu">
                        <li><a href="#">Level 3</a></li>
                        <li><a href="#">Level 3</a></li>
                        <li>
                            <a class="trigger right-caret">Level 3</a>
                            <ul class="dropdown-menu sub-menu">
                                <li><a href="#">Level 4</a></li>
                                <li><a href="#">Level 4</a></li>
                                <li><a href="#">Level 4</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li><a href="#">Level 2</a></li>
            </ul>
        </li>
        <li><a href="#">Level 1</a></li>
        <li><a href="#">Level 1</a></li>
    </ul>
</div>

দুর্ভাগ্যক্রমে এটি মেনুটি প্রদর্শন করে না যখন মেনুটির 'ধসে পড়া' বোতামটি প্রদর্শিত হচ্ছে। ক্রোমে এবং এফএফ-এ।
বেন পাওয়ার

@ বেনপাওয়ার, আপনি কি দয়া করে এর একটি জিসফিল্ড ডেমো সরবরাহ করতে পারেন, যাতে আমি এটি সন্ধান করতে পারি কারণ আমার দেওয়া জেএসফিডাল ডেমো ঠিকঠাক কাজ করছে। এছাড়াও বুটস্ট্র্যাপ, জ্যাকুয়ারি এবং ওয়েব ব্রাউজারগুলির কোন সংস্করণ আপনি ব্যবহার করছেন?
চিরায়ু চিরিপাল

এটি বুটস্ট্র্যাপ v3.0 এর জন্য কাজ করছে। বাডি ... আপনি দয়া করে এটি বুটস্ট্র্যাপ v2.3.2 এর জন্য সহায়ক করতে পারেন?
নিক্স জৈন

4
trigger.off('click');জাভাস্ক্রিপ্টের সূচনাটি একাধিকবার ট্রিগার হওয়ার ক্ষেত্রে কোনও ইভেন্টে "ডাবল শ্রুতি" রোধ করতে শ্রোতাদের সেট করার আগে আমি যুক্ত করেছি ।
ফ্রান্সব্রান

4
ক্যারেটটি উল্টিয়ে দেওয়া কোডের বিভিন্ন লাইন যুক্ত করেছে এবং এটি অপ্রয়োজনীয়।
রুবেন 21

23

এই উদাহরণটি http://bootsnipp.com/snippets/featured/m Multi-level-DPdown-menu-bs3 থেকে এসেছে

বুটস্ট্র্যাপ v3.1.1 এ আমার জন্য কাজ করে।

এইচটিএমএল

<div class="container">
<div class="row">
    <h2>Multi level dropdown menu in Bootstrap 3</h2>
    <hr>
    <div class="dropdown">
        <a id="dLabel" role="button" data-toggle="dropdown" class="btn btn-primary" data-target="#" href="/page.html">
            Dropdown <span class="caret"></span>
        </a>
        <ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
          <li><a href="#">Some action</a></li>
          <li><a href="#">Some other action</a></li>
          <li class="divider"></li>
          <li class="dropdown-submenu">
            <a tabindex="-1" href="#">Hover me for more options</a>
            <ul class="dropdown-menu">
              <li><a tabindex="-1" href="#">Second level</a></li>
              <li class="dropdown-submenu">
                <a href="#">Even More..</a>
                <ul class="dropdown-menu">
                    <li><a href="#">3rd level</a></li>
                    <li><a href="#">3rd level</a></li>
                </ul>
              </li>
              <li><a href="#">Second level</a></li>
              <li><a href="#">Second level</a></li>
            </ul>
          </li>
        </ul>
    </div>
</div>

সিএসএস

.dropdown-submenu {
position: relative;
}

.dropdown-submenu>.dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
-webkit-border-radius: 0 6px 6px 6px;
-moz-border-radius: 0 6px 6px;
border-radius: 0 6px 6px 6px;
}

.dropdown-submenu:hover>.dropdown-menu {
display: block;
}

.dropdown-submenu>a:after {
display: block;
content: " ";
float: right;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 0 5px 5px;
border-left-color: #ccc;
margin-top: 5px;
margin-right: -10px;
}

.dropdown-submenu:hover>a:after {
border-left-color: #fff;
}

.dropdown-submenu.pull-left {
float: none;
}

.dropdown-submenu.pull-left>.dropdown-menu {
left: -100%;
margin-left: 10px;
-webkit-border-radius: 6px 0 6px 6px;
-moz-border-radius: 6px 0 6px 6px;
border-radius: 6px 0 6px 6px;
}

তোমাকে ধন্যবাদ ! 3.0 সংস্করণ
বৈধকৃত

13

আমি নীচের সংযোজন সহ অ্যান্ড্রেসের উত্তর থেকে সাব মেনুটির সর্বদা পিনেন্ট মেনুটির শীর্ষে ফিন করতে সক্ষম হয়েছি:

.dropdown-menu li {
    position: relative;
}

আমি আইটেমগুলিতে আইকন "শেভরন-ডান" যুক্ত করি যার আইটেমটিতে মেনু সাব-মেনু রয়েছে এবং আইকনটি কালো থেকে সাদা থেকে হোভারে পরিবর্তন করুন (পাঠ্যকে সাদা রূপান্তরিত করতে এবং নির্বাচিত নীল পটভূমির সাথে আরও ভাল দেখায়)।

এখানে সম্পূর্ণ কম / সিএসএস পরিবর্তন (উপরেরটি এটির সাথে প্রতিস্থাপন করুন):

.dropdown-menu li {
    position: relative;

    [class^="icon-"] {
        float: right;
    }

    &:hover {
        // Switch to white icons on hover
        [class^="icon-"] {
            background-image: url("../img/glyphicons-halflings-white.png");
        }
    }
}

4

আমি শুধু যোগ class="span2"করতে <li>ড্রপডাউন আইটেম জন্য এবং কাজ যে।


3

যেহেতু বুটস্ট্র্যাপ 3 সাবমেনু অংশটি সরিয়ে নিয়েছে এবং আমাদের নিজের স্টাইলটি খাপ খাইয়ে নেওয়া দরকার তাই আমি মনে করি স্মার্টমেনু বুটস্ট্র্যাপের সাথে যাওয়া ভাল: https://vadikom.github.io/smartmenus/src/demo/bootstrap-navbar.html#

এটি মোবাইলের প্রতিক্রিয়াশীল এবং স্টাইলে আমাদের সময় সাশ্রয় করবে।

এই প্লাগইনটিও খুব আশাব্যঞ্জক।


Github.com/istvan-ujjmeszaros/bootstrap-DPdown-hover সম্পর্কে আপনার মতামত কী ? আমি সিধান্ত নিতে পারছি না.
সিএসবা তোথ

4
@ সিএসবা টোথ, এটি আমার বিবেচনায়ও ছিল, আপনি যদি কেবল বুটস্ট্র্যাপ জাভাস্ক্রিপ্ট এপিআই পেতে চান তবে আপনি এটির সাথে পর্যাপ্ত হালকা যোগ করতে পারেন এবং আপনার যদি কোনও কাস্টমাইজ প্রয়োজন হয় তবে সাধারণ বুটস্ট্র্যাপ দক্ষতার সাথে পরিচিত হতে পারেন।

অবশেষে আমি তাদের মধ্যে একটির একটি প্রকল্পে এবং অন্যটি একটি সহকারী সাইটে ব্যবহার করব। প্রতিটি সমাধান তার মধ্যে একটির সাথে আরও ভাল ফিট করে
সাসাবা টথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.