ක්ලික් කිරීම වෙනුවට හෝවර් මත ට්විටර් බූට්ස්ට්‍රැප් මෙනු ඩ්‍රොප් ඩවුන් කරන්නේ කෙසේද


1188

මෙනු මාතෘකාව ක්ලික් කිරීමට වඩා මගේ බූට්ස්ට්‍රැප් මෙනුව ස්වයංක්‍රීයව සැරිසැරීමට මම කැමතියි. මෙනු මාතෘකා අසල ඇති කුඩා ඊතල නැති කිරීමට ද මම කැමතියි.


9
ඒ සඳහා විසඳුමක් ඇත, එබැවින් මිකෝගේ පිළිතුර නිවැරදි නමුත් දැන් එම තත්වය සඳහා ප්ලගිනයකින් ආවරණය කර ඇත. bootstrap-hover-dropdown
හෙන්රි ඩබ්ලිව්

2
පහත දැක්වෙන CSS සහ js විසඳුම් වල ගැටළු වළක්වන මගේ අලුතින් ප්‍රකාශයට පත් කරන ලද නිසි ප්ලගිනය බලන්න, සහ iOS සහ ස්පර්ශ සිදුවීම් සහිත නවීන ඩෙස්ක්ටොප් බ්‍රව්සර් වල හොඳින් ක්‍රියා කරයි. ඒරියා
István Ujj-Mészáros

මම බූට්ස්ට්‍රැප් නවබාර් එකකින් පිරිසිදු CSS3 ඩ්‍රොප් ඩවුන් එකක් සාදා එය කෝඩ්පෙන් පිරිසිදු CSS3
ඩ්‍රොප්ඩවුන්

18
ඔබට එය ඇත්තටම අවශ්‍ය නම් දෙවරක් සිතන්න? අනුවර්තන අඩවි සඳහා බූට්ස්ට්‍රැප් භාවිතා කරයි. එයින් අදහස් කරන්නේ ඒවා ස්පර්ශ පාලක සහිත උපාංගවල ද භාවිතා වන බවයි. එය මේ ආකාරයෙන් නිර්මාණය කර ඇත්තේ එබැවිනි. ස්පර්ශ තිරවල "හෝවර්" නොමැත.
සර්ජ්.බයි

Answers:


594

බහුවිධ උප මෙනූ සඳහා සහය ඇති නවතම (v2.0.2) බූට්ස්ට්‍රැප් රාමුව මත පදනම්ව මම පිරිසිදු හෝවර් ඩ්‍රොප් ඩවුන් මෙනුවක් නිර්මාණය කළ අතර අනාගත පරිශීලකයින් සඳහා එය පළ කිරීමට සිතුවෙමි:

body {
  padding-top: 60px;
  padding-bottom: 40px;
}

.sidebar-nav {
  padding: 9px 0;
}

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

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

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

.nav-tabs .dropdown-menu,
.nav-pills .dropdown-menu,
.navbar .dropdown-menu {
  margin-top: 0;
}

.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;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" />

<div class="navbar navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container-fluid">
      <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </a>
      <a href="#" class="brand">Project name</a>
      <div class="nav-collapse">
        <ul class="nav">
          <li class="active"><a href="#">Home</a></li>
          <li><a href="#">Link</a></li>
          <li><a href="#">Link</a></li>
          <li><a href="#">Link</a></li>
          <li class="dropdown">
            <a data-toggle="dropdown" class="dropdown-toggle" href="#">Dropdown <b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li>
                <a href="#">2-level Dropdown <i class="icon-arrow-right"></i></a>
                <ul class="dropdown-menu sub-menu">
                  <li><a href="#">Action</a></li>
                  <li><a href="#">Another action</a></li>
                  <li><a href="#">Something else here</a></li>
                  <li class="divider"></li>
                  <li class="nav-header">Nav header</li>
                  <li><a href="#">Separated link</a></li>
                  <li><a href="#">One more separated link</a></li>
                </ul>
              </li>
              <li><a href="#">Another action</a></li>
              <li><a href="#">Something else here</a></li>
              <li class="divider"></li>
              <li class="nav-header">Nav header</li>
              <li><a href="#">Separated link</a></li>
              <li><a href="#">One more separated link</a></li>
            </ul>
          </li>
        </ul>
        <form action="" class="navbar-search pull-left">
          <input type="text" placeholder="Search" class="search-query span2">
        </form>
        <ul class="nav pull-right">
          <li><a href="#">Link</a></li>
          <li class="divider-vertical"></li>
          <li class="dropdown">
            <a class="#" href="#">Menu</a>
          </li>
        </ul>
      </div>
      <!-- /.nav-collapse -->
    </div>
  </div>
</div>

<hr>

<ul class="nav nav-pills">
  <li class="active"><a href="#">Regular link</a></li>
  <li class="dropdown">
    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Dropdown <b class="caret"></b></a>
    <ul class="dropdown-menu" id="menu1">
      <li>
        <a href="#">2-level Menu <i class="icon-arrow-right"></i></a>
        <ul class="dropdown-menu sub-menu">
          <li><a href="#">Action</a></li>
          <li><a href="#">Another action</a></li>
          <li><a href="#">Something else here</a></li>
          <li class="divider"></li>
          <li class="nav-header">Nav header</li>
          <li><a href="#">Separated link</a></li>
          <li><a href="#">One more separated link</a></li>
        </ul>
      </li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
      <li class="divider"></li>
      <li><a href="#">Separated link</a></li>
    </ul>
  </li>
  <li class="dropdown">
    <a href="#">Menu</a>
  </li>
  <li class="dropdown">
    <a href="#">Menu</a>
  </li>
</ul>

නිරූපණය



18
ඉතා හොඳයි! class="dropdown-toggle" data-toggle="dropdown"ක්ලික් කිරීම පමණක් නොව මෙනුව අවුලුවන පරිදි මම ඉවත් කළෙමි . ඔබ ප්‍රතිචාරාත්මක මෝස්තර භාවිතා කරන විට, මෙනු තවමත් ඉහළ දකුණේ ඇති කුඩා බොත්තමට අතුගා දමනු ඇති අතර එය ක්ලික් කිරීමකින් තවමත් ක්‍රියාත්මක වේ. බොහොම ස්තූතියි!
ptim

11
කුඩා ආම්පන්න (ජංගම දුරකථන වැනි) මත කඩා මෝටර් රථ පහත වළක්වා ගැනීමට හා aonly උදා: 768px ක යි-පළල ලෙස එයට ඉඩ දේ @media (min-width: 768px) {.dropdown-menu li:hover .sub-menu {visibility: visible;}}හා@media (min-width: 768px) {.dropdown:hover .dropdown-menu {display: block;}}
ක්රිස් Aelbrecht

1
ළමයින් සමඟ සම්බන්ධතාවය ක්ලික් කළ හැකි වන පරිදි, ඔබ <a> ටැගයෙහි ඇති "දත්ත-ටොගල් = 'ඩ්‍රොප් ඩවුන්' 'ඉවත් කළ යුතුය.
joan16v

1
සරල CSS කේත 7 ක් සහිත Bootstrap 4.x සඳහා විසඳුම මෙන්න: bootsnipp.com/snippets/Vm7d
සුබ

911

මෙනුව ස්වයංක්‍රීයව සැරිසැරීම සඳහා ලබා ගැනීම සඳහා මූලික CSS භාවිතයෙන් මෙය සාක්ෂාත් කරගත හැකිය. ඔබ සැඟවුණු මෙනු විකල්පයට තේරීම් කාරකය සකස් කර සුදුසු liටැගය ඔසවා ඇති විට එය වාරණයක් ලෙස පෙන්විය යුතුය . ට්විටර් බූට්ස්ට්‍රැප් පිටුවෙන් උදාහරණය ගෙන, තේරීම්කරු පහත පරිදි වේ:

ul.nav li.dropdown:hover > ul.dropdown-menu {
    display: block;    
}

කෙසේ වෙතත්, ඔබ බූට්ස්ට්‍රැප් හි ප්‍රතිචාරාත්මක විශේෂාංග භාවිතා කරන්නේ නම්, බිඳ වැටුණු නව තීරුවක (කුඩා තිරවල) මෙම ක්‍රියාකාරිත්වය ඔබට අවශ්‍ය නොවනු ඇත. මෙය වළක්වා ගැනීම සඳහා, ඉහත කේතය මාධ්‍ය විමසුමකින් ඔතා:

@media (min-width: 979px) {
  ul.nav li.dropdown:hover > ul.dropdown-menu {
    display: block;
  }
}

ඊතලය සැඟවීමට (කැරට්) ඔබ ට්විටර් බූට්ස්ට්‍රැප් අනුවාදය 2 සහ පහළ හෝ 3 අනුවාදය භාවිතා කරන්නේද යන්න මත පදනම්ව මෙය විවිධ ආකාරවලින් සිදු කරයි:

බූට්ස්ට්‍රැප් 3

වන අනුවාදය සහ 3 වන අනුවාදය දී බැධී ඉවත් කිරීමට ඔබ පමණක් HTML ඉවත් කිරීමට අවශ්ය <b class="caret"></b>සිට .dropdown-toggleනැංගුරම් අංගයක්:

<a class="dropdown-toggle" data-toggle="dropdown" href="#">
    Dropdown
    <b class="caret"></b>    <-- remove this line
</a>

බූට්ස්ට්‍රැප් 2 සහ පහළ

2 වන අනුවාදයේ ඇති කරත්තය ඉවත් කිරීම සඳහා ඔබට CSS පිළිබඳ තව ටිකක් අවබෝධයක් අවශ්‍ය වන අතර :afterව්‍යාජ මූලද්‍රව්‍යය වඩාත් විස්තරාත්මකව ක්‍රියා කරන්නේ කෙසේදැයි සොයා බැලීමට මම යෝජනා කරමි . ට්විටර් බූට්ස්ට්‍රැප් උදාහරණයේ ඇති ඊතල ඉලක්ක කර ඉවත් කිරීමට ඔබ තේරුම් ගැනීමට යන ගමන ආරම්භ කිරීම සඳහා, ඔබ පහත සඳහන් CSS තේරීම් සහ කේතය භාවිතා කරයි:

a.menu:after, .dropdown-toggle:after {
    content: none;
}

මම ඔබට ලබා දී ඇති පිළිතුරු පමණක් භාවිතා නොකර මෙම ක්‍රියා කරන ආකාරය පිළිබඳව තවදුරටත් සොයා බැලුවහොත් එය ඔබට වාසිදායක වනු ඇත.

මව් හෝවර් හි උප මෙනු පෙන්වීම වැළැක්වීම සඳහා ">" ළමා සංයෝජකය අපට නොමැති බව පෙන්වා දීම ගැන oc කොකා අකාත්ට ස්තූතියි


79
එකතු කිරීමට සිදු විය margin: 0;, එසේ නොමැතිනම් ඉහත 1px ආන්තිකය .dropdown-menuදෝෂ සහිත හැසිරීමට හේතු වේ.
සල්මාන් වොන් අබ්බාස්

12
සරල විසඳුමක්, නමුත් මව් සබැඳිය තවමත් ක්ලික් කළ නොහැක. මම මුල් තේමාව සහිත නවතම ඇරඹුම් පටි භාවිතා කරමි.
කෘනාල්

5
සටහන: ඔව් එය සිදු වේ - මෙය ට්විටර් බූට්ස්ට්‍රැප් සහාය දක්වන ඕනෑම බ්‍රව්සරයක ක්‍රියා කරයි. E ජෝර්ජ් එඩිසන් මෙය මූලික CSS වේ - IE8 සහාය නොදක්වන කොටස කුමක්ද? ඔබට ගැටළු තිබේ නම්, නොමග යවන සුළු අදහස් දැක්වීමක් නොකර ප්‍රශ්නයක් පළ කරන්න.
මගේ හිස රිදෙනවා

3
YMyHeadHurts: වැඩිදුර පර්යේෂණ වලින් පසුව - මෙය සැබවින්ම බූට්ස්ට්‍රැප් දෝෂයක් වන අතර එය නිවැරදි කර ඇත්තේ දින පහකට පෙරය.
නේතන් ඔස්මාන්

5
Run කෘනාල් සබැඳිය ක්ලික් කිරීමට නම්, ඔබ data-toggle="dropdown"ගුණාංගය ඉවත් කළ යුතුය .
ෆෙරිමාසන්

231

"මගේ හිස රිදෙනවා" (එය විශිෂ්ටයි) හි පිළිතුරට අමතරව:

ul.nav li.dropdown:hover ul.dropdown-menu{
    display: block;    
}

කල් පවතින ගැටළු 2 ක් ඇත:

  1. පතන සබැඳිය ක්ලික් කිරීමෙන් පතන මෙනුව විවෘත වේ. පරිශීලකයා වෙනත් තැනක ක්ලික් කළහොත් හෝ එය පසුපසට හරවා අමුතු UI එකක් නිර්මාණය නොකළහොත් එය විවෘතව පවතිනු ඇත.
  2. පතන සම්බන්ධකය සහ පතන මෙනුව අතර 1px ආන්තිකයක් ඇත. ඔබ ඩ්‍රොප් ඩවුන් සහ ඩ්‍රොප් ඩවුන් මෙනුව අතර සෙමින් ගමන් කරන්නේ නම් ඩ්‍රොප් ඩවුන් මෙනුව සැඟවීමට මෙය හේතු වේ.

(1) සඳහා විසඳුම වන්නේ nav පන්තියේ "පන්තිය" සහ "දත්ත-ටොගල්" අංග ඉවත් කිරීමයි

<a href="#">
     Dropdown
     <b class="caret"></b>
</a>

මෙය ඔබගේ මව් පිටුවට සබැඳියක් නිර්මාණය කිරීමේ හැකියාව ද ලබා දෙයි - එය පෙරනිමි ක්‍රියාත්මක කිරීම සමඟ කළ නොහැකි විය. ඔබට පරිශීලකයා යැවීමට අවශ්‍ය ඕනෑම පිටුවක් සමඟ "#" ආදේශ කළ හැකිය.

(2) සඳහා විසඳුම වන්නේ .dropdown-menu selector හි ආන්තිකය ඉවත් කිරීමයි

.navbar .dropdown-menu {
    margin-top: 0px;
}

15
හිතාමතාම ක්ලික් කිරීම නිවැරදි කිරීම සඳහා, මම data-toggle="dropdown"වැඩ කරන බව පෙනෙන ගුණාංගය ඉවත් කළෙමි .
ඇන්තනි බ්‍රිග්ස්

5
Nav-pill බොත්තම් සඳහා විසඳුම (2):.nav-pills .dropdown-menu { margin-top: 0px; }
ලොරන්

1
මා ඉහත සඳහන් කළ ගැටළුව විසඳීම සඳහා li.dropdown: hover> ul.dropdown-menu
Archimedes Trajano

12
nav සම්බන්ධක වලින් "පංතිය" සහ "දත්ත-ටොගල්" ගුණාංග ඉවත් කිරීම ජංගම සහ ටැබ්ලට් පරිගණකවල හොඳින් ක්‍රියා කිරීම නවත්වයි :(
මොසිජාවා

1
ඔබ දත්ත-ටොගල් = "පතන" ගුණාංගය ඉවත් කළේ නම්, යතුරුපුවරුව භාවිතයෙන් පතන මෙනුව පුළුල් කිරීමට ඔබට නොහැකි වනු ඇත. එබැවින් එය 508 අනුකූල නොවේ. ක්ලික් කිරීම අක්‍රිය කර යතුරුපුවරුවේ ක්‍රියාකාරිත්වය තබා ගන්නේ කෙසේද?
duyn9uyen

131

මම ටිකක් jQuery භාවිතා කර ඇත:

// Add hover effect to menus
jQuery('ul.nav li.dropdown').hover(function() {
  jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
}, function() {
  jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
});

13
මෙවැනි. මම කෙසේ හෝ බූට්ස්ට්‍රැප් දේවල් සමඟ JQuery භාවිතා කරන අතර ස්පර්ශක උපාංගවල සුපුරුදු 'ක්ලික්' ක්‍රියාකාරීත්වයට තවමත් ඉඩ ලබා දේ.
කස්ටඩ් හි තාරා

මෙය භාවිතා කළේය. මම කැමතියි එය තවමත් ජංගම දුරකථන සඳහා ක්ලික් කිරීමේ ක්‍රියාකාරිත්වයට ඉඩ දෙයි, නමුත් ඩෙස්ක්ටොප් සඳහා හොවර් පරිපූර්ණයි.
ස්ටුවර්ට්

1
මම මෙය භාවිතා කළ අතර එය nav හි නොමැති ඩ්‍රොප් ඩවුන් සඳහා භාවිතා කළ හැකි පරිදි දිගු කළෙමි. මම BTN-කණ්ඩායමක් div එකතු පන්ති දක-සැරිසරා හා $ ( 'ul.nav li.dropdown, .dropdown-සැරිසරන්න') Finder මෙම jQuery භාවිතා සැරිසරා (කාර්යය () {ස්තුතියි..!
බ්රැන්ඩන්

ලස්සන හා කුඩා මෙය භාවිතා කළා. $('ul.nav li.dropdown').hover(function() { $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(); }, function() { $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut().hover(function() { $(this).stop(true, true); }); });සීඑස්එස් අනුවාදය උප මෙනූ දර්ශනය වීමට ඉඩ නොදුන් අතර මීටර් 200 ක් ඉක්මන් වූ නිසා මම එය වෙනස් කළෙමි : උප මෙනුව හොවර් ස්ටොප් ෆේඩ් අවුට්
ඩේමියන්

මෙය angraljs සමඟ ඇතුළත් කර ඇති jqLite සමඟ වැඩ කරන බවක් නොපෙනේ
nuander

70

මෙහි හොඳ විසඳුම් ගොඩක් තිබේ. ඒත් මම හිතුවා මම ඉස්සරහට ගිහින් මගේ විකල්පය මෙතනට දාන්නම් කියලා. එය හුදෙක් සරල jQuery ස්නිපටයක් වන අතර එය ක්ලික් කිරීම වෙනුවට ඩ්‍රොප් ඩවුන් සඳහා සැරිසැරීමට සහය දක්වන්නේ නම් එය බූට්ස්ට්‍රැප් ක්‍රමයට සමාන වේ. මම මෙය 3 වන අනුවාදය සමඟ පමණක් අත්හදා බැලුවෙමි, එබැවින් එය 2 වන අනුවාදය සමඟ ක්‍රියා කරයිදැයි මම නොදනිමි. එය ඔබේ සංස්කාරකයේ කුඩා කොටසක් ලෙස සුරකින්න සහ එය යතුරක පහරකින් තබා ගන්න.

<script>
    $(function() {
        $(".dropdown").hover(
            function(){ $(this).addClass('open') },
            function(){ $(this).removeClass('open') }
        );
    });
</script>

මූලික වශයෙන්, එය හුදෙක් ඔබ පතන පන්තියේ සැරිසරන විට, එය විවෘත පන්තිය එයට එකතු කරනු ඇත. එවිට එය ක්‍රියාත්මක වේ. ඔබ ඩ්‍රොප් ඩවුන් පන්තිය හෝ දරුවා උල් / ලයිස් සමඟ මව් ලයි මත සැරිසැරීම නැවැත්වූ විට, එය විවෘත පන්තිය ඉවත් කරයි. නිසැකවම, මෙය බොහෝ විසඳුම් වලින් එකක් පමණක් වන අතර .dropdown හි නිශ්චිත අවස්ථාවන්හිදී පමණක් එය ක්‍රියාත්මක කිරීමට ඔබට එයට එකතු කළ හැකිය. නැතහොත් දෙමව්පියන්ට හෝ දරුවාට සංක්‍රාන්තියක් එක් කරන්න.


2
විශිෂ්ට විසඳුමක්! ඉහළ සබැඳිය ක්ලික් කළ හැකි වන පරිදි මම දත්ත-ටොගල් = "ඩ්‍රොප් ඩවුන්" ගුණාංගය සබැඳියෙන් ඉවත් කළෙමි.
සර්ජි

ඒක හොඳ ඉඟියක් සර්ජි. ඉහළ සබැඳිය කොතැනකවත් නොයන බවට මම නිතරම වග බලා ගන්නෙමි, එවිට එය ටැබ්ලට් සහ දුරකථන වලද ක්‍රියා කරයි.
ඒකාකෘති විද්‍යාව

1
Er සර්ජි මම ඒක කරන්න නිර්දේශ කරන්නේ නැහැ. ඔබ ජංගම පරිශීලකයින්ගේ ක්‍රියාකාරිත්වය බිඳ දමනු ඇත. මෙනුවක් විවෘත කිරීමට ඔවුන්ට හෝවර් ශ්‍රිතය භාවිතා කළ නොහැකි අතර එය ක්ලික් කිරීමට හැකි විය යුතුය.
පෝල්

2
ස්පර්ශක තිර සමඟ පසුගාමී වන අතර මෙය පුදුම සහගත ලෙස කෙටි හා පහසුය. තවත් බොහෝ දේ ඉහළ නැංවිය යුතුය.
මැක්ස්

මෙය ඇත්තෙන්ම හොඳයි. CSS සංක්‍රාන්ති භාවිතයෙන් ටිකක් සජීවීකරණයක් එකතු කරන්නේ කෙසේද?
ෆ්‍රෙඩ් රොචා

70

ඔබේ CSS විලාසය කේත පේළි තුනකින් අභිරුචිකරණය කරන්න

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

22

ඔබට මේ dropdownවගේ පන්තියක් සහිත මූලද්‍රව්‍යයක් තිබේ නම් (උදාහරණයක් ලෙස):

<ul class="list-unstyled list-inline">
    <li class="dropdown">
        <a data-toggle="dropdown" href="#"><i class="fa fa-bars"></i> Dropdown 1</a>
        <ul class="dropdown-menu">
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
            <li><a href="">Item 3</a></li>
            <li><a href="">Item 4</a></li>
            <li><a href="">Item 5</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a data-toggle="dropdown" href="#"><i class="fa fa-user"></i> Dropdown 2</a>
        <ul class="dropdown-menu">
            <li><a href="">Item A</a></li>
            <li><a href="">Item B</a></li>
            <li><a href="">Item C</a></li>
            <li><a href="">Item D</a></li>
            <li><a href="">Item E</a></li>
        </ul>
    </li>
</ul>

මෙම jQuery කේතයේ මෙම ස්නිපටය භාවිතා කිරීමෙන් ඔබට එහි මාතෘකාව ක්ලික් කිරීමට වඩා ඩ්‍රොප් ඩවුන් මෙනුව ස්වයංක්‍රීයව සැරිසැරීමට හැකිය.

<script>
    $('.dropdown').hover(
        function() {
            $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
        },
        function() {
            $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
        }
    );

    $('.dropdown-menu').hover(
        function() {
            $(this).stop(true, true);
        },
        function() {
            $(this).stop(true, true).delay(200).fadeOut();
        }
    );
</script>

මෙන්න නිරූපණයක්

මෙම පිළිතුර ic මයිකල් පිළිතුර මත රඳා පැවතුනි , ඩ්‍රොප් ඩවුන් මෙනුව නිසියාකාරව ක්‍රියාත්මක කිරීම සඳහා මම යම් යම් වෙනස්කම් සිදු කර ඇත.


පරිපූර්ණ. ගොඩක් ස්තුතියි.
antikbd

20

[යාවත්කාලීන කරන්න] ප්ලගිනය GitHub හි ඇත අතර මම සමහර වැඩිදියුණු කිරීම් සඳහා ක්‍රියා කරමින් සිටිමි (දත්ත-ගුණාංග සමඟ පමණක් භාවිතා කිරීම වැනි (JS අවශ්‍ය නොවේ). මම පහත කේතය අතහැර දමා ඇත, නමුත් එය GitHub හි ඇති දේට සමාන නොවේ.

මම තනිකරම CSS අනුවාදයට කැමතියි, නමුත් එය වැසීමට පෙර ප්‍රමාද වීම සතුටක්, මන්ද එය සාමාන්‍යයෙන් වඩා හොඳ පරිශීලක අත්දැකීමක් වන නිසා (එනම්, ඩ්‍රොප් ඩවුන් එකෙන් පිටත 1 px ක් යන මූසික ස්ලිප් එකකට ද ished ුවම් නොලැබේ), සහ අදහස් වල සඳහන් පරිදි , ඔබ සමඟ කටයුතු කිරීමට ඇති ආන්තිකයෙන් 1px ක් හෝ සමහර විට ඔබ මුල් බොත්තමෙන් පහළට වැටෙන විට nav අනපේක්ෂිත ලෙස වසා දමයි.

මම අඩවි කිහිපයක භාවිතා කළ ඉක්මන් කුඩා ප්ලගිනයක් නිර්මාණය කළ අතර එය හොඳින් ක්‍රියාත්මක වේ. සෑම nav අයිතමයක්ම ස්වාධීනව හසුරුවනු ලැබේ, එබැවින් ඔවුන්ට ඔවුන්ගේම ප්‍රමාද කාලරාමු යනාදිය ඇත.

ජේ

// outside the scope of the jQuery plugin to
// keep track of all dropdowns
var $allDropdowns = $();

// if instantlyCloseOthers is true, then it will instantly
// shut other nav items when a new one is hovered over
$.fn.dropdownHover = function(options) {

    // the element we really care about
    // is the dropdown-toggle's parent
    $allDropdowns = $allDropdowns.add(this.parent());

    return this.each(function() {
        var $this = $(this).parent(),
            defaults = {
                delay: 500,
                instantlyCloseOthers: true
            },
            data = {
                delay: $(this).data('delay'),
                instantlyCloseOthers: $(this).data('close-others')
            },
            options = $.extend(true, {}, defaults, options, data),
            timeout;

        $this.hover(function() {
            if(options.instantlyCloseOthers === true)
                $allDropdowns.removeClass('open');

            window.clearTimeout(timeout);
            $(this).addClass('open');
        }, function() {
            timeout = window.setTimeout(function() {
                $this.removeClass('open');
            }, options.delay);
        });
    });
};  

මෙම delayපරාමිතිය ලස්සන ස්වයං පැහැදිලි වන අතර,instantlyCloseOthers විට අලුත් එකක්, ඔබට සැරිසරන්න විවෘත සිටින සියලු අනෙකුත් dropdowns ක්ෂණිකව සමීප වනු ඇත.

පිරිසිදු CSS නොවේ, නමුත් මෙම ප්‍රමාද වේලාවේදී වෙනත් කෙනෙකුට උපකාර කරනු ඇතැයි අපේක්‍ෂා කරමු (එනම් මෙය පැරණි නූලකි).

ඔබට අවශ්‍ය නම්, #concrete5මෙම සාරාංශයේ විවිධ පියවරයන් හරහා එය ක්‍රියාත්මක කිරීම සඳහා මා විසින් සිදු කරන ලද විවිධ ක්‍රියාදාමයන් ( IRC පිළිබඳ සාකච්ඡාවකදී ) ඔබට දැක ගත හැකිය : https://gist.github.com/3876924

ප්ලගීන රටා ප්‍රවේශය තනි ටයිමර් යනාදිය සඳහා සහය දැක්වීමට වඩා පිරිසිදු ය.

වැඩි විස්තර සඳහා බ්ලොග් සටහන බලන්න .


17

මෙය මට ප්‍රයෝජනවත් විය:

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

1
කෙසේ වෙතත් ජංගම සමඟ - එය අමුතුයි.
විකිරණ

මෙනුව සහ පතන මෙනුව අතර ඇති ආන්තිකය මෙය නිෂ් .ල කරයි.
antikbd

15

මෙය Bootstrap 3 තුළට සාදා ඇත. මෙය ඔබගේ CSS වෙත එක් කරන්න:

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

10

JQuery සමඟ ඊටත් වඩා හොඳයි:

jQuery('ul.nav li.dropdown').hover(function() {
  jQuery(this).find('.dropdown-menu').stop(true, true).show();
  jQuery(this).addClass('open');
}, function() {
  jQuery(this).find('.dropdown-menu').stop(true, true).hide();
  jQuery(this).removeClass('open');
});

3
මම ඔබේ කේතය වෙනස් කළ jQuery('ul.nav li.dropdown').hover(function() { jQuery(this).closest('.dropdown-menu').stop(true, true).show(); jQuery(this).addClass('open'); }, function() { jQuery(this).closest('.dropdown-menu').stop(true, true).hide(); jQuery(this).removeClass('open'); });නිසා උප මෙනුව හෝවර් හි දර්ශනය නොවේ.
farjam

නවතම නිකුතුව සමඟ මෙම කේතය තවදුරටත් ක්‍රියා නොකරනු ඇත.
පෝල්

9

$().dropdown('toggle')පතන මෙනුව ටොගල් කිරීමට ඔබට පෙරනිමි ක්‍රමය භාවිතා කළ හැකිය :

$(".nav .dropdown").hover(function() {
  $(this).find(".dropdown-toggle").dropdown("toggle");
});

9

එක් කිරීමට අවශ්‍ය නම්, ඔබට බහුවිධ අඩුවීම් තිබේ නම් (මා කරන පරිදි) ඔබ ලිවිය යුත්තේ:

ul.nav li.dropdown:hover > ul.dropdown-menu {
    display: block;    
}

එය නිසි ලෙස ක්‍රියා කරයි.


මගේ .dropdown-menu එකෙන් margin: 2px 0 0;අදහස් කළේ මන්දගාමී මූසිකයක් ඉහළින් සිට මෙනුව අකාලයේ සඟවා ඇති බවයි. ul.dropdown-menu{ margin-top: 0; }
ඇලෙස්ටෙයාර්

8

මගේ මතය අනුව හොඳම ක්‍රමය මෙයයි:

;(function($, window, undefined) {
    // Outside the scope of the jQuery plugin to
    // keep track of all dropdowns
    var $allDropdowns = $();

    // If instantlyCloseOthers is true, then it will instantly
    // shut other nav items when a new one is hovered over
    $.fn.dropdownHover = function(options) {

        // The element we really care about
        // is the dropdown-toggle's parent
        $allDropdowns = $allDropdowns.add(this.parent());

        return this.each(function() {
            var $this = $(this),
                $parent = $this.parent(),
                defaults = {
                    delay: 500,
                    instantlyCloseOthers: true
                },
                data = {
                    delay: $(this).data('delay'),
                    instantlyCloseOthers: $(this).data('close-others')
                },
                settings = $.extend(true, {}, defaults, options, data),
                timeout;

            $parent.hover(function(event) {

                // So a neighbor can't open the dropdown
                if(!$parent.hasClass('open') && !$this.is(event.target)) {
                    return true;
                }

                if(settings.instantlyCloseOthers === true)
                    $allDropdowns.removeClass('open');

                window.clearTimeout(timeout);
                $parent.addClass('open');
            }, function() {
                timeout = window.setTimeout(function() {
                    $parent.removeClass('open');
                }, settings.delay);
            });

            // This helps with button groups!
            $this.hover(function() {
                if(settings.instantlyCloseOthers === true)
                    $allDropdowns.removeClass('open');

                window.clearTimeout(timeout);
                $parent.addClass('open');
            });

            // Handle submenus
            $parent.find('.dropdown-submenu').each(function(){
                var $this = $(this);
                var subTimeout;
                $this.hover(function() {
                    window.clearTimeout(subTimeout);
                    $this.children('.dropdown-menu').show();

                    // Always close submenu siblings instantly
                    $this.siblings().children('.dropdown-menu').hide();
                }, function() {
                    var $submenu = $this.children('.dropdown-menu');
                    subTimeout = window.setTimeout(function() {
                        $submenu.hide();
                    }, settings.delay);
                });
            });
        });
    };

    $(document).ready(function() {
        // apply dropdownHover to all elements with the data-hover="dropdown" attribute
        $('[data-hover="dropdown"]').dropdownHover();
    });
})(jQuery, this);

නියැදි සලකුණු කිරීම:

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="false">
        Account <b class="caret"></b>
    </a>
    <ul class="dropdown-menu">
        <li><a tabindex="-1" href="#">My Account</a></li>
        <li class="divider"></li>
        <li><a tabindex="-1" href="#">Change Email</a></li>
        <li><a tabindex="-1" href="#">Change Password</a></li>
        <li class="divider"></li>
        <li><a tabindex="-1" href="#">Logout</a></li>
    </ul>
</li>

5
මෙය කැමරන් ස්පියර්ගේ කෘතියකි, මම ඔහුට කෑ ගසනු ඇතැයි සිතුවෙමි
kelpie

8

එය කළ හැකි හොඳම ක්‍රමය වන්නේ බූට්ස්ට්‍රැප් ක්ලික් කිරීමේ සිදුවීම හොවර් එකකින් අවුලුවාලීමයි. මේ ආකාරයෙන්, එය තවමත් ස්පර්ශ උපාංග හිතකාමී ලෙස පැවතිය යුතුය.

$('.dropdown').hover(function(){ 
  $('.dropdown-toggle', this).trigger('click'); 
});

අනවශ්‍ය ප්‍රති result ලය: මවුසින්, ක්ලික් කිරීම සහ මූසිකය මෙනුව විවෘතව තබයි. මෙය මට අවශ්‍ය දේ නොවේ ...
Wietse

මෙය භාවිතා කරමින්, එය ඩ්‍රොප් ඩවුන් විවෘත කිරීම සඳහා බූට්ස්ට්‍රැප් ශ්‍රිතය ක්‍රියාත්මක කරයි, එම ශ්‍රිතය aria-
expand

7

මම එය පහත පරිදි කළමනාකරණය කර ඇත්තෙමි.

$('ul.nav li.dropdown').hover(function(){
       $(this).children('ul.dropdown-menu').slideDown(); 
    }, function(){
       $(this).children('ul.dropdown-menu').slideUp(); 
});

මම හිතනවා මේක කෙනෙකුට උදව් කරයි කියලා ...


5

.Dropdown-menu සඳහා බූට්ස්ට්‍රැප් CSS ආන්තිකය නැවත සැකසීමට ආන්තික-ඉහළ: 0 එකතු කර ඇති අතර එමඟින් පරිශීලකයා පතන මෙනුවේ සිට මෙනු ලැයිස්තුවට සෙමින් සැරිසරන විට මෙනු ලැයිස්තුව විසුරුවා හරිනු නොලැබේ.

ul.nav li.dropdown:hover > ul.dropdown-menu {
    display: block;    
}

.nav .dropdown-menu {
    margin-top: 0;
}

2
මෙය නිවැරදි පිළිතුරයි, ඩ්‍රොප් ඩවුන් මෙනුවේ පිටත මූසිකය නොයන්නේ නම්, ඩ්‍රොප් ඩවුන් එකෙහි සැරිසැරීමට බූට්ස්ට්‍රැප් සූදානම්. ආන්තික-ඉහළ ඉවත් කිරීම මඟින් මෙනුවේ සිට මෙනුවට විවේකයක් නොමැතිව යාමට ඉඩ සලසයි. මෙම විසඳුම ස්පර්ශ උපාංග සඳහා නිවැරදි හැසිරීම තබා ගැනීමට ඉඩ දෙයි
නිකොලස් ජැනෙල්

5

මෙය බොහෝ විට මෝඩ අදහසක් විය හැකිය, නමුත් පහත දැක්වෙන ඊතලය ඉවත් කිරීමට, ඔබට මකා දැමිය හැකිය

<b class="caret"></b>

ඉහළට යොමු කරන තැනැත්තාට මෙය කිසිවක් නොකරයි, නමුත් ...


5

බූට්ස්ට්‍රැප් 3 ඩ්‍රොප් ඩවුන් හෝවර් ක්‍රියාකාරිත්වය සඳහා මම නිසි ප්ලගිනයක් ප්‍රකාශයට පත් කර ඇති අතර, එමඟින් ක්ලික් කිරීමෙන් කුමක් සිදුවේද යන්න ඔබට අර්ථ දැක්විය හැකිය.dropdown-toggle මූලද්‍රව්‍යය (ක්ලික් කිරීම අක්‍රිය කළ හැකිය):

https://github.com/istvan-ujjmeszaros/bootstrap-dropdown-hover


දැනටමත් බොහෝ විසඳුම් ඇති විට මා එය සෑදුවේ ඇයි?

කලින් පැවති සියලු විසඳුම් සමඟ මට ගැටළු ඇති විය. සරල CSS ඒවා .openමත පන්තිය භාවිතා නොකරයි .dropdown, එබැවින් පතන පහළට පෙනෙන විට පතන ටොගල් මූලද්‍රව්‍යය පිළිබඳ ප්‍රතිපෝෂණයක් නොලැබේ.

Js අය ක්ලික් කිරීම බාධා කරයි .dropdown-toggle , එම නිසා ඩ්‍රොප් ඩවුන් එක හොවර් මත දිස් වේ, පසුව විවෘත ඩ්‍රොප් ඩවුන් එකක් මත ක්ලික් කරන විට එය සඟවයි, සහ මූසිකය පිටතට ගෙනයාම නැවත පෙන්වීමට ඩ්‍රොප් ඩවුන් අවුලුවනු ඇත. සමහර js විසඳුම් iOS අනුකූලතාව බිඳ දමයි, සමහර ප්ලගීන ස්පර්ශ සිදුවීම් සඳහා සහය දක්වන නවීන ඩෙස්ක්ටොප් බ්‍රව්සර් මත ක්‍රියා නොකරයි.

ඒ නිසාම මම බූට්ස්ට්‍රැප් ඩ්‍රොප්ඩවුන් හෝවර් ප්ලගිනය සාදන ලද අතර එය කිසිදු ගැටළුවක් නොමැතිව සම්මත බූට්ස්ට්‍රැප් ජාවාස්ක්‍රිප්ට් ඒපීඅයි පමණක් භාවිතා කිරීමෙන් මෙම සියලු ගැටලු වලක්වනු ඇත. Aria ගුණාංග පවා මෙම ප්ලගිනය සමඟ හොඳින් ක්‍රියා කරයි.


Github.com/vadikom/smartmenus ගැන ඔබේ අදහස කුමක්ද? මට තීරණය කළ නොහැක, පුස්තකාල දෙකම ඇත්තෙන්ම හොඳ බව පෙනේ.
Csaba Toth

2
ස්මාර්ට්මෙනස් ඇත්තෙන්ම හොඳයි, එය මෙනු සඳහා වඩා හොඳ විය හැකිය. මගේ ප්ලගිනය බූට්ස්ට්‍රැප් ඩ්‍රොප් ඩවුන් සඳහා කුඩා එකතු කිරීමක් පමණක් වන අතර, එය හොවර් මත ඩ්‍රොප් ඩවුන් එකක් විවෘත කිරීමට වඩා වැඩි යමක් නොකරන අතර ස්මාර්ට්මෙනූ උප මෙනූස් සඳහාද සහය දක්වයි, සහ තවත් විසිතුරු දේවල් කරයි.
ඉස්තාන් උජ්-මැස්රෝස්

1
ස්තූතියි. ස්මාර්ට්මෙනූගේ කේතය ඉතා පුළුල් බවත්, CSS විශාල ප්‍රමාණයක් ඇති බවත් මට පෙනේ. මෙතෙක් මම එහි ගියෙමි bootstrap-dropdown-hover, මන්ද එය කාර්යය කරන අතර වඩා සංයුක්ත වේ. මම වම් පැත්තේ navbar සමඟ ගොඩබෑමේ අඩවියක් ගොඩනඟමි.
සීසා ටොත්

4

මූසිකයේ උප මෙනුව විවෘත කිරීමට මෙම කේතය භාවිතා කරන්න (ඩෙස්ක්ටොප් එක පමණි):

$('ul.nav li.dropdown').hover(function () {
    if ($(window).width() > 767) {
        $(this).find('.dropdown-menu').show();
    }
}, function () {
    if ($(window).width() > 767) {
        $(this).find('.dropdown-menu').hide().css('display','');
    }
});

පළමු මට්ටමේ මෙනුව ක්ලික් කළ හැකි වීමට ඔබට අවශ්‍ය නම්, ජංගම දුරකථනයෙන් පවා මෙය එක් කරන්න:

    $('.dropdown-toggle').click(function() {
    if ($(this).next('.dropdown-menu').is(':visible')) {
        window.location = $(this).attr('href');
    }
});

උප මෙනුව (ඩ්‍රොප් ඩවුන්-මෙනුව) ඩෙස්ක්ටොප් එකේ මවුස්හෝවර් සමඟ විවෘත වන අතර ජංගම සහ ටැබ්ලටයේ ක්ලික් / ස්පර්ශය සමඟ විවෘත වේ. උප මෙනුව විවෘත වූ පසු, දෙවන ක්ලික් කිරීම මඟින් සබැඳිය විවෘත කිරීමට ඉඩ ලබා දේ. ස්තූතියි if ($(window).width() > 767), උප මෙනුව සම්පූර්ණ තිරයේ පළල ජංගම දුරකථනයෙන් ලබා ගනී.


මම ඔබේ කේතය භාවිතා කිරීමට කැමතියි, නමුත් එය නිවැරදිව ක්‍රියාත්මක කිරීමට මට අපහසුතාවයක් ඇත. පළමුව, ජංගම දුරකථන සඳහා හෝවර් () ඉවත් කර ඩෙස්ක්ටොප් සඳහා පමණක් භාවිතා කරන්නේ කෙසේද? මම ඔබේ කේතය භාවිතා කරන විට, සහ කවුළුව ජංගම දුරකථනයට ප්‍රතිප්‍රමාණනය කරන විට, මට හෝවර් () සහ ක්ලික් කරන්න () ක්‍රියාකාරීත්වය යන දෙකම ලැබේ. නමුත් ඊටත් වඩා අමුතුයි ... මම බ්‍රව්සරය නැවුම් කළ විට මෙම හැසිරීම නතර වනු ඇත, හා! මෙය නිවැරදි කරන්නේ කෙසේදැයි මට පෙන්විය හැකිද? හොවර් () හි පෙන්වීමට මට ඩෙස්ක්ටොප් උප මෙනූස් අවශ්‍ය වන අතර ජංගම දුරකථනයේ උප මෙනූස් පෙන්වීමට () ක්ලික් කරන්න. මෙය පැහැදිලි යැයි මම විශ්වාස කරමි
ක්‍රිස් 22

හරි, එය අර්ථවත් වන අතර මම ඔබ නිර්දේශ කරන ආකාරයට ඔබේ විසඳුම ක්‍රියාත්මක කිරීමට උත්සාහ කරමි. ස්තූතියි!
ක්‍රිස් 22

මෙම හොඳම ක්‍රමය භාවිතා කරන්න: alfalter
Farhad Sakhaei


3

මෙය ඉහළට සැඟවෙනු ඇත

.navbar .dropdown-menu:before {
   display:none;
}
.navbar .dropdown-menu:after {
   display:none;
}

3

මෙය ටැබ්ලටයකට වඩා කුඩා නම් පහත වැටීම් සහ ඒවායේ භාරයන් සැඟවිය යුතුය.

@media (max-width: 768px) {
    .navbar ul.dropdown-menu, .navbar li.dropdown b.caret {
        display: none;
    }
}

ඔබට එය සැඟවීමට අවශ්‍ය ඇයි? දැන් ජංගම පරිශීලකයින්ට උප මෙනුවේ ඇති සබැඳි වෙත ප්‍රවේශ වීමට ක්‍රමයක් නොමැත. ජංගම උපාංගයක හෝවර් ආචරණය අක්‍රිය කර පතන මෙනුව නොවෙනස්ව තබා ගැනීම වඩා හොඳය. එමගින් ඔවුන්ට එය මත ක්ලික් කිරීමෙන් එය විවෘත කළ හැකිය.
පෝල්

3

JQuery විසඳුම හොඳයි, නමුත් එය හෝවර් එක නිසියාකාරව ක්‍රියා නොකරන බැවින් ක්ලික් සිදුවීම් (ජංගම හෝ ටැබ්ලටය සඳහා) සමඟ කටයුතු කිරීමට අවශ්‍ය වනු ඇත ... සමහර විට කවුළු නැවත ප්‍රමාණයේ හඳුනාගැනීමක් කළ හැකිද?

ඇන්ඩ්‍රෙස් ඉලිච්ගේ පිළිතුර හොඳින් ක්‍රියාත්මක වන බව පෙනේ, නමුත් එය මාධ්‍ය විමසුමකින් ඔතා තිබිය යුතුය:

@media (min-width: 980px) {

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

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

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

    .nav-tabs .dropdown-menu, .nav-pills .dropdown-menu, .navbar .dropdown-menu {
        margin-top: 0;
    }

    .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;
    }
}

3

2 වන අනුවාදය සඳහා ඉතා සරල විසඳුම, CSS පමණි. ජංගම සහ ටැබ්ලටය සඳහා එකම මිත්‍රශීලී ක්‍රියාකාරිත්වය තබා ගනී.

@media (min-width: 980px) {
    .dropdown:hover .dropdown-menu {
       display: block;
    }
}

මෙනු අයිතමය සහ පතන අතර පරතරයක් ඇති සමහර තේමාවන් සඳහා මෙය විශාල ලෙස ක්‍රියා නොකරයි. මූසිකය මෙම පරතරය කරා ගමන් කරන විට මෙනුව අතුරුදහන් වනු ඇත.
ndbroadbent

2

මෙම ස්ක්‍රිප්ට් එක සමඟ bootstrap.js නැවත ලියන්න.

jQuery(document).ready(function ($) {
$('.navbar .dropdown').hover(function() {
    $(this).addClass('extra-nav-class').find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
}, function() {
    var na = $(this)
    na.find('.dropdown-menu').first().stop(true, true).delay(100).slideUp('fast', function(){ na.removeClass('extra-nav-class') })
});

$('.dropdown-submenu').hover(function() {
    $(this).addClass('extra-nav-class').find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
}, function() {
    var na = $(this)
    na.find('.dropdown-menu').first().stop(true, true).delay(100).slideUp('fast', function(){ na.removeClass('extra-nav-class') })
});

}); 

2

මෙන්න මගේ තාක්ෂණය ඔබ මෙනුවේ හෝ ටොගල් බොත්තම මත සැරිසැරීම නැවැත්වීමෙන් පසු මෙනුව වැසීමට පෙර සුළු ප්‍රමාදයක් එක් කරයි. මෙම <button>ඔබ සාමාන්යයෙන් ඉඳන් මෙනුව ප්රදර්ශනය කිරීමට ක්ලික් කරන්න බව #nav_dropdown.

$(function() {
  var delay_close_it, nav_menu_timeout, open_it;
  nav_menu_timeout = void 0;
  open_it = function() {
    if (nav_menu_timeout) {
      clearTimeout(nav_menu_timeout);
      nav_menu_timeout = null;
    }
    return $('.navbar .dropdown').addClass('open');
  };
  delay_close_it = function() {
    var close_it;
    close_it = function() {
      return $('.navbar .dropdown').removeClass('open');
    };
    return nav_menu_timeout = setTimeout(close_it, 500);
  };
  $('body').on('mouseover', '#nav_dropdown, #nav_dropdown *', open_it).on('mouseout', '#nav_dropdown', delay_close_it);
  return $('body').on('mouseover', '.navbar .dropdown .dropdown-menu', open_it).on('mouseout', '.navbar .dropdown .dropdown-menu', delay_close_it);
});

2

සුදර්ශන් ගේ පිළිතුර වැඩි දියුණු කිරීම සඳහා , මම මෙය මාධ්‍ය විමසුමකින් ඔතා XS දර්ශන පළලෙහි සැරිසැරීම වැළැක්වීම සඳහා ...

@media (min-width:768px)
{
    ul.nav li.dropdown:hover > ul.dropdown-menu {
        display: block;    
    }

    .nav .dropdown-menu {
        margin-top: 0;
    }
}

සලකුණු කිරීමේදී ඇති කරත්තය අවශ්‍ය නොවේ, li සඳහා පතන පන්තිය පමණි .


2

මෙය වර්ඩ්ප්‍රෙස් බූට්ස්ට්‍රැප් සඳහා ක්‍රියා කරයි:

.navbar .nav > li > .dropdown-menu:after,
.navbar .nav > li > .dropdown-menu:before {
    content: none;
}

2

එබැවින් ඔබට මෙම කේතය ඇත:

<a class="dropdown-toggle" data-toggle="dropdown">Show menu</a>

<ul class="dropdown-menu" role="menu">
    <li>Link 1</li>
    <li>Link 2</li> 
    <li>Link 3</li>                                             
</ul>

සාමාන්‍යයෙන් එය ක්ලික් කිරීමේ සිදුවීමක් මත ක්‍රියාත්මක වන අතර ඔබට එය හෝවර් සිදුවීමක වැඩ කිරීමට අවශ්‍යය. මෙය ඉතා සරලයි, මෙම JavaScript / jQuery කේතය භාවිතා කරන්න:

$(document).ready(function () {
    $('.dropdown-toggle').mouseover(function() {
        $('.dropdown-menu').show();
    })

    $('.dropdown-toggle').mouseout(function() {
        t = setTimeout(function() {
            $('.dropdown-menu').hide();
        }, 100);

        $('.dropdown-menu').on('mouseenter', function() {
            $('.dropdown-menu').show();
            clearTimeout(t);
        }).on('mouseleave', function() {
            $('.dropdown-menu').hide();
        })
    })
})

මෙය ඉතා හොඳින් ක්‍රියාත්මක වන අතර මෙහි පැහැදිලි කිරීම මෙයයි: අපට බොත්තමක් සහ මෙනුවක් ඇත. අපි බොත්තම එබූ විට අපි මෙනුව දර්ශනය වන අතර, බොත්තම මූසිකයෙන් පිටවන විට අපි 100 එම්එස් පසු මෙනුව සඟවන්නෙමු. මා එය භාවිතා කරන්නේ මන්දැයි ඔබ සිතන්නේ නම්, එයට හේතුව කර්සරය මෙනුව හරහා බොත්තමෙන් ඇදගෙන යාමට ඔබට කාලය අවශ්‍ය වීමයි. ඔබ මෙනුවේ සිටින විට, වේලාව නැවත සකසා ඇති අතර ඔබට අවශ්‍ය තරම් කාලයක් එහි රැඳී සිටිය හැකිය. ඔබ මෙනුවෙන් පිටවන විට, අපි කල් ඉකුත්වීමකින් තොරව මෙනුව ක්ෂණිකව සඟවන්නෙමු.

මම මෙම කේතය බොහෝ ව්‍යාපෘති වල භාවිතා කර ඇත්තෙමි, ඔබට එය භාවිතා කිරීමේ කිසියම් ගැටළුවක් ඇත්නම්, මගෙන් ප්‍රශ්න ඇසීමට නිදහස් වන්න.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.