අනුචලන තීරුව සඟවන්න, නමුත් තවමත් අනුචලනය කිරීමට හැකියාව තිබියදී


1171

මට අවශ්‍ය මුළු පිටුවම අනුචලනය කිරීමට, නමුත් අනුචලන තීරුව පෙන්වීමකින් තොරව.

ගූගල් ක්‍රෝම් හි එය:

::-webkit-scrollbar {
    display: none;
}

නමුත් මොසිල්ලා ෆයර්ෆොක්ස් සහ ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් එවැනි ක්‍රියා කරන බවක් නොපෙනේ.

මම මෙය CSS හි ද උත්සාහ කළෙමි:

overflow: hidden;

එය අනුචලන තීරුව සඟවයි, නමුත් මට තවත් අනුචලනය කළ නොහැක.

මුළු පිටුවම අනුචලනය කිරීමට හැකි වන අතරම මට අනුචලන තීරුව ඉවත් කළ හැකි ක්‍රමයක් තිබේද?

කරුණාකර CSS හෝ HTML සමඟ.

Answers:


815

හොඳින් ක්‍රියාත්මක වන පරීක්ෂණයක් පමණි.

#parent{
    width: 100%;
    height: 100%;
    overflow: hidden;
}

#child{
    width: 100%;
    height: 100%;
    overflow-y: scroll;
    padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */
    box-sizing: content-box; /* So the width will be 100% + 17px */
}

වැඩ කරන ෆිදෙල්

JavaScript:

අනුචලන තීරුවේ පළල විවිධ බ්‍රව්සර් වලින් වෙනස් වන බැවින් එය ජාවාස්ක්‍රිප්ට් සමඟ හැසිරවීම වඩා හොඳය. ඔබ එසේ කරන්නේ නම් Element.offsetWidth - Element.clientWidth, හරියටම අනුචලන පළල පෙන්වනු ඇත.

ජාවාස්ක්‍රිප්ට් ක්‍රියාකාරී ෆෙඩල්

හෝ

භාවිතා කිරීම Position: absolute,

#parent{
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}

#child{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: -17px; /* Increase/Decrease this value for cross-browser compatibility */
    overflow-y: scroll;
}

වැඩ කරන ෆිදෙල්

ජාවාස්ක්‍රිප්ට් ක්‍රියාකාරී ෆෙඩල්

විස්තර:

මෙම පිළිතුර මත පදනම්ව, මම සරල අනුචලන ප්ලගිනයක් නිර්මාණය කළෙමි .


16
ඔබගේ අන්තිම "වැඩ කරන ෆෙඩල්" හි මම බොහෝ දේ දැක ඇති !importantබැවින් මම ඒවා සියල්ලම ඉවත් කර ඇත්තෙමි: jsfiddle.net/5GCsJ/954
රොකෝ සී.

2
අන්තර්ගතයේ පළල ස්වයංක්‍රීයව සකසා ඇති විට මෙම විසඳුම ක්‍රියා නොකරයි. දකුණට අනුචලනය කරන විට, අන්තර්ගතයේ කොටසක් තවමත් නොපෙනේ. ඇයි ඒ? විසඳුම් තිබේද? මෙහි ඇති ගැටළුව පරීක්ෂා කරන්න: jsfiddle.net/50fam5g9/7 සටහන: මගේ නඩුවේ අන්තර්ගතයේ පළල කලින් දැනගත නොහැක, ඒ නිසා එය ස්වයංක්‍රීයව සැකසිය යුතුය.
පැළ කෝඩර්

35
මෙම ප්‍රවේශය සියලුම බ්‍රව්සර් ආවරණය නොකරන අතර සංවර්ධනයේදී ඔබ සමඟ වැඩ කරන බ්‍රව්සරයේ අනුවාදයට විශේෂිත වනු ඇත.
ඉට්සික් අවිඩාන්

2
තිරස් අනුචලන බාර් ගැන කුමක් කිව හැකිද? ඔබට ඒවා සැඟවිය හැක්කේ කෙසේද?
www139

11
අනුචලන තීරුවේ පළල සංකීර්ණ කර ගණනය කරන්නේ ඇයි? පෑඩ් කිරීම box-sizing: border-box; width: calc(100% + 50px);සඳහා එකම අගය සකසා ගන්න. කිසිදු බ්‍රව්සරයකට 50px අනුචලන පළල / උස නැත, එබැවින් එය සියල්ලම ආවරණය කළ යුතුය ...
රොබට් කොරිට්නික්

376

විකල්ප මෝස්තර සහිත වෙබ්කිට් හි එය පහසු ය:

html {
    overflow: scroll;
    overflow-x: hidden;
}
::-webkit-scrollbar {
    width: 0px;  /* Remove scrollbar space */
    background: transparent;  /* Optional: just make scrollbar invisible */
}
/* Optional: show position indicator in red */
::-webkit-scrollbar-thumb {
    background: #FF0000;
}

1
cordovaයෙදුමෙන් මෙය උත්සාහ කර , හොඳින් ක්‍රියාත්මක විය. overflow:scrollමූලද්රව්යයට අයදුම් කිරීමට සිදු විය.
කිෂෝර් පවර්

44
ෆයර්ෆොක්ස් හි ක්‍රියා නොකරයි, මෙය තනිකරම වෙබ්කිට් පවසන පරිදි පැහැදිලිය. ස්තූතියි :)
සොහයර්

3
ඉලෙක්ට්‍රෝන යෙදුම් ක්‍රෝමියම් බැවින් අපේක්ෂිත පරිදි විශිෂ්ට ලෙස ක්‍රියා කරයි. +1 ස්තූතියි: D
rococo

-webkit-overflow-scrolling: touch
IOS8

4
එය ක්‍රෝම් සමඟ ක්‍රියා කරයි. නමුත් මොසිල්ලා ෆයර්ෆොක්ස් සමඟ ක්‍රියා නොකරයි.
romal tandel

321

සරල CSS ගුණාංග සහිත මෙය මට වැඩ කරයි:

.container {
    -ms-overflow-style: none;  /* Internet Explorer 10+ */
    scrollbar-width: none;  /* Firefox */
}
.container::-webkit-scrollbar { 
    display: none;  /* Safari and Chrome */
}

ෆයර්ෆොක්ස් හි පැරණි අනුවාද සඳහා, භාවිතා කරන්න: overflow: -moz-scrollbars-none;


14
මට නම්, overflow: -moz-scrollbars-noneෆයර්බොක්ස් හි අනුචලන තීරු සඟවයි, නමුත් අනුචලනය අක්‍රීය කරයි. මෙය ඔබ වෙනුවෙන් වැඩ කරන ස්ථානයක් නිරූපණය කළ හැකිද?
චිපිට් 24

1
අවාසනාවකට මෙන් -moz-scrollbars-none: නවතම Firefox අනුවාද සඳහා දේපල මකා developer.mozilla.org/en-US/docs/Web/CSS/overflow
හ්රිස්ටෝ Eftimov

2
-webkit-overflow-scrolling: touch
IOS8

3
යල්පැනගිය ෆයර්ෆොක්ස් සඳහා -moz-scrollbars-noneඔබට භාවිතා කළ හැකිය @-moz-document url-prefix() { .container { overflow: hidden; } }. Stackoverflow.com/questions/952861/… බලන්න .
මාටින් ආඩිලා

1
ෆයර්ෆොක්ස් සඳහා නවතම සහාය ඇතිව මම මගේ පිළිතුර යාවත්කාලීන කර ඇත :)
Hristo Eftimov

316

යාවත්කාලීන කිරීම:

ෆයර්ෆොක්ස් දැන් සීඑස්එස් සමඟ අනුචලන තීරු සැඟවීමට සහය දක්වයි, එබැවින් සියලුම ප්‍රධාන බ්‍රව්සර් දැන් ආවරණය කර ඇත (ක්‍රෝම්, ෆයර්ෆොක්ස්, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර්, සෆාරි, ආදිය).

ඔබට අනුචලන තීරු ඉවත් කිරීමට අවශ්‍ය මූලද්‍රව්‍යයට පහත CSS යොදන්න:

.container {
    overflow-y: scroll;
    scrollbar-width: none; /* Firefox */
    -ms-overflow-style: none;  /* Internet Explorer 10+ */
}
.container::-webkit-scrollbar { /* WebKit */
    width: 0;
    height: 0;
}

මම දැනට දන්නා අවම අනවසර හරස් බ්‍රව්සර් විසඳුම මෙයයි. නිරූපණය බලන්න.


මුල් පිළිතුර:

මෙන්න තවම සඳහන් නොකළ තවත් ක්‍රමයක්. එය සැබවින්ම සරල වන අතර එයට සම්බන්ධ වන්නේ බෙදීම් දෙකක් සහ CSS පමණි. ජාවාස්ක්‍රිප්ට් හෝ හිමිකාර CSS අවශ්‍ය නොවන අතර එය සියලුම බ්‍රව්සර් වල ක්‍රියාත්මක වේ. කන්ටේනරයේ පළල පැහැදිලිවම සැකසීමට අවශ්‍ය නොවන අතර එමඟින් එය තරල බවට පත් වේ.

මෙම ක්‍රමය මඟින් අනුචලන තීරුව මවුපියන්ගෙන් ඉවතට ගෙනයාමට negative ණ ආන්තිකයක් භාවිතා කරයි. තාක්‍ෂණය සිරස්, තිරස් සහ ද්වි-මාර්ග අනුචලනය සඳහා ක්‍රියා කරයි.

නිරූපණ:

සිරස් අනුවාදය සඳහා උදාහරණ කේතය:

HTML:

<div class="parent">
  <div class="child">
    Your content.
  </div>
</div>

CSS:

.parent {
  width: 400px;
  height: 200px;
  border: 1px solid #AAA;
  overflow: hidden;
}

.child {
  height: 100%;
  margin-right: -50px; /* Maximum width of scrollbar */
  padding-right: 50px; /* Maximum width of scrollbar */
  overflow-y: scroll;
}

39
මෙය පැරණි ප්‍රශ්නයකට නව පිළිතුරක් බව මම දනිමි, නමුත් මෙය දැන් පිළිගත් පිළිතුර විය යුතුය. හොඳ දේවල් මිනිහෝ.
දෛශික

3
මෙය නියත වශයෙන්ම හොඳම පිළිතුරයි. දැන්, තිරස් අනුචලන සැඟවීම සඳහා යමෙක් එය වෙනස් කරන්නේ කෙසේද?
CeeMoney

1
EeCeeMoney මම තිරස් නිරූපණයක් එක් කළෙමි. පින්තූර වැනි ස්ථාවර පළල අන්තර්ගත අංග සඳහා එය ක්‍රියා කළ යුතු නමුත් පෙළ සඳහා ඔබ එතීම අක්‍රිය කළ යුතුය.
රිචඩ්

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

4
ස්තූතියි ich රිච්ඩ්! ඔබගේ පිළිතුරට අනුචලනය කිරීම ගැන මම සතුටු වෙමි. SO ට යම් “බලයක් පිළිගත් පිළිතුරක්” තිබේ නම්, මම දැන් එය නිශ්චිතවම භාවිතා කරමි.
මාටින් ඩී

81

භාවිත:

<div style='overflow:hidden; width:500px;'>
   <div style='overflow:scroll; width:508px'>
      My scroll-able area
   </div>
</div>

කිසිදු අනුචලන තීරුවක් නොමැති අතිච්ඡාදනය වන div එකකින් අනුචලන තීරුව තරමක් අතිච්ඡාදනය කිරීම සඳහා මෙය උපක්‍රමයකි:

::-webkit-scrollbar {
    display: none;
}

මෙය වෙබ්කිට් බ්‍රව්සර් සඳහා පමණි ... නැතහොත් ඔබට බ්‍රව්සර් විශේෂිත CSS අන්තර්ගතය භාවිතා කළ හැකිය (අනාගතයේදී යමක් තිබේ නම්). සෑම බ්‍රව්සරයකටම ඔවුන්ගේ බාර් සඳහා වෙනස් හා විශේෂිත දේපලක් තිබිය හැකිය.

මයික්රොසොෆ්ට් එජ් භාවිතය සඳහා: -ms-overflow-style: -ms-autohiding-scrollbar;හෝ -ms-overflow-style: none;ලෙස MSDN හි එක් .

ෆයර්ෆොක්ස් සඳහා සමානකමක් නොමැත. මෙය සාක්ෂාත් කර ගැනීම සඳහා jQuery ප්ලගිනයක් තිබුණද, http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html


ictacademie.info/oussamaelbachiri මෙම වෙබ් අඩවිය uss ඕසාමා ඩොබි මාධ්‍ය = 'තිරය' සහ පසුව ':: - වෙබ්කිට්-ස්ක්‍රෝල්බාර්' දේපල css සඳහා භාවිතා කරයි
ආර්පිට් සිං

නිශ්චිත CSS ගුණාංග මොනවාද?
ඔසාමා එල් බචිරි

එක්කෝ අනවසර පිරිසැලසුමක් හෝ jquery විකල්පයකි
ආර්පිට් සිං

ඔබේ පළමු විසඳුම මට මෙම ගැටලුව ලබා දෙයි s24.postimg.org/idul8zx9w/Naamloos.jpg සහ අනවසර පිරිසැලසුම යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද r ආර්පිට්සිං
ඔසාමා එල් බචිරි

4
IOS7 සහ iOS8 හි jQuery මොබයිල් 1.4 සමඟ කෝර්ඩෝවාහි ස්වදේශීය අනුචලනය සක්‍රීය කිරීමට පහත සඳහන් දෑ මට ඉඩ දී ඇත // CSS ::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; } // jQuery Mobile onMobileInit () $.mobile.touchOverflowEnabled = true;
රයන් විලියම්ස්

33

මෙම පිළිතුරට කේතය ඇතුළත් නොවේ, එබැවින් පිටුවෙන් විසඳුම මෙන්න :

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

හොඳ දෙය නම්, අනුචලන තීරුව සැඟවීමට ඔබට පෑඩින් හෝ පළල වෙනස්කම් භාවිතා කිරීමට බල නොකිරීමයි.

මෙයද විශාලනය ආරක්ෂිතයි. පැඩින් කිරීම / පළල විසඳුම් අවම වශයෙන් විශාලනය කළ විට අනුචලන තීරුව පෙන්වයි.

ෆයර්ෆොක්ස් නිවැරදි කිරීම: http://jsbin.com/mugiqoveko/1/edit?output

.element,
.outer-container {
  width: 200px;
  height: 200px;
}
.outer-container {
  border: 5px solid purple;
  position: relative;
  overflow: hidden;
}
.inner-container {
  position: absolute;
  left: 0;
  overflow-x: hidden;
  overflow-y: scroll;
  padding-right: 150px;
}
.inner-container::-webkit-scrollbar {
  display: none;
}
<div class="outer-container">
  <div class="inner-container">
    <div class="element">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vehicula quam nibh, eu tristique tellus dignissim quis. Integer condimentum ultrices elit ut mattis. Praesent rhoncus tortor metus, nec pellentesque enim mattis nec. Nulla vitae turpis ut
      dui consectetur pellentesque quis vel est. Curabitur rutrum, mauris ut mollis lobortis, sem est congue lectus, ut sodales nunc leo a libero. Cras quis sapien in mi fringilla tempus condimentum quis velit. Aliquam id aliquam arcu. Morbi tristique
      aliquam rutrum. Duis tincidunt, orci suscipit cursus molestie, purus nisi pharetra dui, tempor dignissim felis turpis in mi. Vivamus ullamcorper arcu sit amet mauris egestas egestas. Vestibulum turpis neque, condimentum a tincidunt quis, molestie
      vel justo. Sed molestie nunc dapibus arcu feugiat, ut sollicitudin metus sagittis. Aliquam a volutpat sem. Quisque id magna ultrices, lobortis dui eget, pretium libero. Curabitur aliquam in ante eu ultricies.
    </div>
  </div>
</div>


මෙය සියලුම බ්‍රව්සර් සඳහා ක්‍රියා නොකරයි ... වෙබ්කිට් බ්‍රව්සර් පමණි. ඔබ භාවිතා කරන්නේ වෙබ්කිට් විශේෂිත තේරීමක්::-webkit-scrollbar {}
උපසර්ගය

මම ප්‍රශ්නයට පිළිතුරු දීමට පෙර සියලු නව බ්‍රව්සර්වල එය පරීක්ෂා කළෙමි. එසේම එෆ්.එෆ්. එය එෆ්එෆ් හි යම් යම් වෙනස්කම් සිදුවී තිබේද?
Timo Kähkennen

මම පිළිතුර යාවත්කාලීන කළෙමි. එකතු කිරීම padding-right: 150px;එය නිවැරදි කරන බව පෙනේ . FF, Chrome, Safari සහ Edge හි පරීක්ෂා කර ඇත. විශාල දකුණු පෑඩ් කිරීම නිසා අඩු විශාලන මට්ටම් වලද ක්‍රියා කරයි.
Timo Kähkennen

2
එජ්, අයිඊ 11, අයිඊ 10 (සමහර විට පහළ ද) සහාය html { -ms-overflow-style: none;}. මෙම බ්‍රව්සර් වල පෑඩිං-හැක් භාවිතා කිරීමේ අවශ්‍යතාවයක් නොමැත.
ටිමෝ කොහ්කොනන්

@ ටිමෝගේ පිළිතුර භාවිතා කිරීමට සහ overflow-y: scrollඅනුචලන හැසිරීම ලබා ගැනීමට නමුත් එඩ්ජ් 23 හි වැඩ කිරීමට සැඟවුණු (ක්‍රෝම් මෙන්).
jojo

25

මෙය මට හරස් බ්‍රව්සරයක් සඳහා ක්‍රියා කරයි. කෙසේ වෙතත්, මෙය ජංගම බ්‍රව්සර්වල ස්වදේශික අනුචලන සඟවන්නේ නැත.

දී SCSS

.hide-native-scrollbar {
  scrollbar-width: none; /* Firefox 64 */
  -ms-overflow-style: none; /* Internet Explorer 11 */
  &::-webkit-scrollbar { /** WebKit */
    display: none;
  }
}

දී CSS

.hide-native-scrollbar {
  scrollbar-width: none; /* Firefox 64 */
  -ms-overflow-style: none; /* Internet Explorer 11 */
}
.hide-native-scrollbar::-webkit-scrollbar { /** WebKit */
  display: none;
}

කැදැලි කුට්ටි ( {}) යන්නෙන් අදහස් කරන්නේ කුමක්ද? එය අර්ථ නිරූපණය කරන්නේ කෙසේද? සහ &? සමහරවිට ඔබේ පිළිතුර විස්තාරනය කරන්න?
පීටර් මෝර්ටෙන්සන්

එය සාස් දෙයක් (පෙනෙන විදිහට, අඩුයි
vipatron

@PeterMortensen මම දැන් ඔබේ අදහස් දැක, &::-webkit-scrollbarබවට පත් වෙයි .hide-native-scrollbar::-webkit-scrollbar { }CSS දී
Murhaf Sousli

{ width: 0; height: 0;}:: සඳහා කරන්න - display: noneiOS වෙනුවට වෙබ්කිට්-අනුචලන තීරුව .
adriendenat

FF71 හි මෙය සියලුම අනුචලනය අවහිර කරයි.
ජාන b.

23

පහත දැක්වෙන පේළි තුනක් භාවිතා කරන්න, එවිට ඔබේ ගැටළුව විසඳෙනු ඇත:

#liaddshapes::-webkit-scrollbar {
    width: 0 !important;
}

Liaddshapes යනු අනුචලනය පැමිණෙන div හි නමයි.


ඔබේ ගැටලුව මට පෙන්වන්න
ඉනොඩෙල්

1
පහසු සහ ප්‍රයෝජනවත්, ස්තූතියි! මම {පළල: 0;} වෙනුවට {display: none used භාවිතා කළෙමි
සාන්ති නූනෙස්

12

පහත දැක්වෙන්නේ මා වෙනුවෙන් මයික්‍රොසොෆ්ට්, ක්‍රෝම් සහ මොසිල්ලා හි විශේෂිත වූ අංගයක් සඳහා වැඩ කිරීමයි:

div.rightsidebar {
    overflow-y: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
div.rightsidebar::-webkit-scrollbar { 
    width: 0 !important;
}

scrollbar-width(FF පමණි) "පර්යේෂණාත්මක" ලෙස සලකුණු කර ඇති බව සලකන්න
cimak

ඔව් im සිමාක්, නමුත් එෆ්එෆ් හි ඔබට ඕනෑම ගැටළුවක් සැඟවිය හැක, එබැවින් එය යථාර්ථවාදී වන්නේ ක්‍රෝම් සඳහා පමණි.
මෙලෝමන්

9

HTML:

<div class="parent">
    <div class="child">
    </div>
</div>

CSS:

.parent{
    position: relative;
    width: 300px;
    height: 150px;
    border: 1px solid black;
    overflow: hidden;
}

.child {
    height: 150px;   
    width: 318px;
    overflow-y: scroll;
}

CSS ඒ අනුව යොදන්න.

එය මෙහි පරීක්ෂා කරන්න (ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සහ ෆයර්ෆොක්ස් වලින් පරීක්ෂා කර ඇත).


8

2018 දෙසැම්බර් 11 වන විට (ෆයර්ෆොක්ස් 64 සහ ඊට වැඩි) ෆයර්ෆොක්ස් 64+ දැන් සීඑස්එස් අනුචලන ශෛලමය පිරිවිතර ක්‍රියාත්මක කරන බැවින් මෙම ප්‍රශ්නයට පිළිතුර ඉතා සරල ය .

පහත දැක්වෙන CSS භාවිතා කරන්න:

scrollbar-width: none;

ෆයර්ෆොක්ස් 64 නිකුතු සටහන් සබැඳිය මෙහි ඇත.


3
මෙය දැන ගැනීමට ලැබීම සතුටක්! බ්‍රව්සර් සැබවින්ම ප්‍රගතියක් ලබා ඇති බව පෙනේ, හාහා!
ඔසාමා එල් බචිරි

7

භාවිත:

CSS

#subparent {
    overflow: hidden;
    width: 500px;
    border: 1px rgba(0, 0, 0, 1.00) solid;
}

#parent {
    width: 515px;
    height: 300px;
    overflow-y: auto;
    overflow-x: hidden;
    opacity: 10%;
}

#child {
    width: 511px;
    background-color: rgba(123, 8, 10, 0.42);
}

HTML

<body>
    <div id="subparent">
        <div id="parent">
            <div id="child">
                <!- Code here for scroll ->
            </div>
        </div>
     </div>
</body>

මෙය අවතක්සේරු කළේ ඇයිදැයි නිශ්චිතවම කිව නොහැක, නමුත් එය නිවැරදි දිශාවට ගමන් කරන ආකාරයටම මම එය ඉහළට ඔසවා තැබුවෙමි, අනෙක් විසඳුම් මගේ නඩුවේදී හොඳින් ක්‍රියාත්මක නොවීය. overflow-x: සැඟවුණු; + පිටාර ගැලීම- y: අනුචලනය; > 100% පළල (මගේ නඩුවේ 110% හොඳින් වැඩ කර ඇත) සමඟ උපක්‍රමය කළේ කුමක්ද?
dAngelov

1
එය වඩාත්ම උඩුකුරු ද්‍රාවණයට සමාන දෙයකි: අනුචලන තීරුව සැඟවීමට උත්සාහ කිරීම. මෙය පරිපූර්ණ නොවේ, මන්ද එය බ්‍රව්සරය සමඟ වෙනස් වේ
mwm

6

භාවිත

function reloadScrollBars() {
    document.documentElement.style.overflow = 'auto';  // Firefox, Chrome
    document.body.scroll = "yes"; // Internet Explorer only
}

function unloadScrollBars() {
    document.documentElement.style.overflow = 'hidden';  // firefox, chrome
    document.body.scroll = "no"; // Internet Explorer only
}

ඔබට අනුචලන තීරු පැටවීමට හෝ බෑමට හෝ නැවත පූරණය කිරීමට අවශ්‍ය ඕනෑම ස්ථානයක් සඳහා මෙම කාර්යයන් අමතන්න. මම එය ක්‍රෝම් හි පරීක්‍ෂා කළ පරිදි එය තවමත් ක්‍රෝම් හි අනුචලනය කළ හැකි නමුත් අනෙක් බ්‍රව්සර් ගැන මට විශ්වාස නැත.


6

මෙය මට වැඩ කරයි:

scroll-content {
    overflow-x: hidden;
    overflow-y: scroll;
}

scroll-content::-webkit-scrollbar {
    width: 0;
}

6

අනුචලන තීරුව සැඟවීමට මෙය භාවිතා කරන්න, නමුත් ක්‍රියාකාරීත්වය තබා ගන්න:

.example::-webkit-scrollbar {
  display: none;
}

IE, Edge සහ Firefox සඳහා අනුචලන තීරුව සඟවන්න

.example {
  -ms-overflow-style: none;  /* IE and Edge */
  scrollbar-width: none;  /* Firefox */
}

5

නවීන බ්‍රව්සර් මත ඔබට භාවිතා කළ හැකිය wheel event:

// Content is the element you want to apply the wheel scroll effect to
content.addEventListener('wheel', function(e) {
    const step = 100; // How many pixels to scroll

    if (e.deltaY > 0) // Scroll down
        content.scrollTop += step;
    else // Scroll up
        content.scrollTop -= step;
});

මම සොයන පිළිතුර මෙයයි. ස්තූතියි. (කෝණික 5 හි, ඇත්ත වශයෙන්ම) අනුචලනය කළ හැකි වන පරිදි මම overflow: hiddenසහ මෙම කේතය භාවිතා mat-card-contentකළ අතර මේවා මගේ ගැටලුව විසඳීය. සටහන: මම e.deltaYමගේ ලෙස භාවිතා කළ stepඅතර එය සාමාන්‍ය අනුචලනය මෙන් ක්‍රියා කළෙමි, එබැවින් සාමාන්‍යයෙන් අනුචලනය සඳහා මම සිතමි, නමුත් අනුචලන තීරුව සඟවා තිබියදී මෙය හොඳම ගැලපීමයි.
imans77

1
මෙහි සම්බන්ධ කර ඇති පිටුව මෙම ප්‍රවේශය සුදුසු නොවන බවට අනතුරු අඟවයි?
jnnnnn

5

මගේ ගැටලුව: මගේ HTML අන්තර්ගතයේ කිසිදු ශෛලියක් මට අවශ්‍ය නැත. මගේ සිරුර කිසිදු අනුචලන තීරුවකින් තොරව කෙලින්ම අනුචලනය කළ හැකි අතර සිරස් අනුචලනය පමණක් CSS ජාල සමඟ වැඩ කිරීමට මට අවශ්‍යය අවශ්‍ය වන අතර ඕනෑම තිර ප්‍රමාණයකට .

මෙම කොටුව-sizing අගය බලපෑම පුරවන හෝ ආන්තිකය විසඳුම්, ඔවුන් සමඟ වැඩ කොටුව-sizing: අන්තර්ගතයට-කොටුව .

මට තවමත් "-moz-scrollbars-none" විධානය අවශ්‍ය වන අතර gdoron සහ Mr_Green මෙන් මට අනුචලන තීරුව සැඟවීමට සිදුවිය. මම උත්සාහ කළා -moz-transformහා-moz-padding-start එකම ෆයර්ෆොක්ස් සඳහා බලපෑමක් කිරීමට, නමුත් ඕනෑවට වඩා වැඩ අවශ්ය බව ප්රතිචාර දක්වන අතුරු ආබාධ ඇති විය.

මෙම විසඳුම HTML ශරීර අන්තර්ගතය සඳහා "display: grid" ශෛලිය සමඟ ක්‍රියා කරන අතර එය ප්‍රතිචාරාත්මක වේ.

/* Hide HTML and body scroll bar in CSS grid context */
html, body {
  position: static; /* Or relative or fixed ... */
  box-sizing: content-box; /* Important for hidding scrollbar */
  display: grid; /* For CSS grid */

  /* Full screen */
  width: 100vw;
  min-width: 100vw;
  max-width: 100vw;
  height: 100vh;
  min-height: 100vh;
  max-height: 100vh;
  margin: 0;
  padding: 0;
}

html {
  -ms-overflow-style: none;  /* Internet Explorer 10+ */
  overflow: -moz-scrollbars-none; /* Should hide the scroll bar */
}

/* No scroll bar for Safari and Chrome */
html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none; /* Might be enough */
  background: transparent;
  visibility: hidden;
  width: 0px;
}

/* Firefox only workaround */
@-moz-document url-prefix() {
  /* Make HTML with overflow hidden */
  html {
    overflow: hidden;
  }

  /* Make body max height auto */
  /* Set right scroll bar out the screen  */
  body {
    /* Enable scrolling content */
    max-height: auto;

    /* 100vw +15px: trick to set the scroll bar out the screen */
    width: calc(100vw + 15px);
    min-width: calc(100vw + 15px);
    max-width: calc(100vw + 15px);

    /* Set back the content inside the screen */
    padding-right: 15px;
  }
}

body {
  /* Allow vertical scroll */
  overflow-y: scroll;
}

4

divදැනට පිළිගත් පිළිතුරේ මෙන් අභ්‍යන්තරයට පෑඩින් එකතු කිරීම , කිසියම් හේතුවක් නිසා ඔබට භාවිතා කිරීමට අවශ්‍ය නම් එය ක්‍රියා නොකරනු ඇත box-model: border-box.

මෙම අවස්ථා දෙකෙහිම වැඩ කරන්නේ අභ්‍යන්තරයේ පළල div100% දක්වා වැඩි කිරීම සහ අනුචලන තීරුවේ පළල ( overflow: hiddenපිටත කොටස මත උපකල්පනය කිරීම) ය.

උදාහරණයක් ලෙස, CSS හි:

.container2 {
    width: calc(100% + 19px);
}

ජාවාස්ක්‍රිප්ට් හි, හරස් බ්‍රව්සරය:

var child = document.getElementById('container2');
var addWidth = child.offsetWidth - child.clientWidth + "px";
child.style.width = 'calc(100% + ' + addWidth + ')';

4

තිරස් අනුචලනය සඳහා මම එය කරන්නේ මෙයයි; CSS පමණක් වන අතර Bootstrap / col- * වැනි රාමු සමඟ හොඳින් ක්‍රියා කරයි. එයට අවශ්‍ය වන්නේ අමතර divs දෙකක් පමණක් වන අතර මවුපියන්ට a widthහෝ max-widthකට්ටලයක් ඇත:

ඔබට ස්පර්ශ තිරයක් ඇත්නම් එය අනුචලනය කිරීමට හෝ ඇඟිලි වලින් අනුචලනය කිරීමට පෙළ තෝරා ගත හැකිය.

.overflow-x-scroll-no-scrollbar {
    overflow: hidden;
}
.overflow-x-scroll-no-scrollbar div {
    overflow-x: hidden;
    margin-bottom: -17px;
    overflow-y: hidden;
    width: 100%;
}
.overflow-x-scroll-no-scrollbar div * {
    overflow-x: auto;
    width: 100%;
    padding-bottom: 17px;
    white-space: nowrap;
    cursor: pointer
}

/* The following classes are only here to make the example looks nicer */
.row {
    width: 100%
}
.col-xs-4 {
    width: 33%;
    float: left
}
.col-xs-3 {
    width:25%;
    float:left
}
.bg-gray {
    background-color: #DDDDDD
}
.bg-orange {
    background-color:#FF9966
}
.bg-blue {
    background-color: #6699FF
}
.bg-orange-light{
    background-color: #FFAA88
}
.bg-blue-light{
    background-color: #88AAFF
}
<html><body>
  <div class="row">
    <div class="col-xs-4 bg-orange">Column 1</div>
    <div class="col-xs-3 bg-gray">Column 2</div>
    <div class="col-xs-4 bg-blue">Column 3</div>
  </div>
  <div class="row">
    <div class="col-xs-4 bg-orange-light">Content 1</div>
    <div class="col-xs-3 overflow-x-scroll-no-scrollbar">
      <div>
        <div>This content too long for the container, so it needs to be hidden but scrollable without scrollbars</div>
      </div>
    </div>
    <div class="col-xs-4 bg-blue-light">Content 3</div>
  </div>
</body></html>

කම්මැලි අය සඳහා කෙටි අනුවාදය:

.overflow-x-scroll-no-scrollbar {
    overflow: hidden;
}
.overflow-x-scroll-no-scrollbar div {
  overflow-x: hidden;
  margin-bottom: -17px;
  overflow-y: hidden;
  width: 100%;
}
.overflow-x-scroll-no-scrollbar div * {
  overflow-x: auto;
  width: 100%;
  padding-bottom: 17px;
  white-space: nowrap;
  cursor:pointer
}

/* The following classes are only here to make the example looks nicer */
.parent-style {
    width: 100px;
    background-color: #FF9966
}
<div class="parent-style overflow-x-scroll-no-scrollbar">
  <div>
    <div>This content too long for the container, so it needs to be hidden but scrollable without scrollbars</div>
  </div>
</div>


ස්තූතියි, මම උත්සාහ කළා, එය විශිෂ්ටයි. එක් දෙයක් නම් වෙනස් margin-bottomවීම වඩා හොඳ padding-bottomනමුත් එකම වටිනාකමකින් යුක්ත වීමයි. මෙය පතුලේ ඇති මූලද්‍රව්‍යය සඳහා අවකාශයට පහළින් ආහාරයට නොගනී. එය අතිච්ඡාදනය වීම වළක්වයි.
හැක්ස්පෝර්

xhaxpor margin-bottomඑය negative ණාත්මක වන අතර, එය a ණ padding-bottomඅගයන් හැසිරවිය නොහැකි a ලෙස වෙනස් කළ නොහැකි යැයි මම සිතමි
ජීන්

4

පහත දැක්වෙන SASS මෝස්තරය මඟින් ඔබගේ අනුචලන තීරුව බොහෝ බ්‍රව්සර්වල විනිවිද පෙනෙන බවට පත් කළ යුතුය (ෆයර්ෆොක්ස් සහාය නොදක්වයි):

.hide-scrollbar {
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;

  &::-webkit-scrollbar {
    width: 1px;
  }

  &::-webkit-scrollbar-track {
    background: transparent;
  }

  &::-webkit-scrollbar-thumb {
    background-color: transparent;
  }
}

4

පිරී ඉතිරී යන අන්තර්ගත භාවිතය සහිත මූලද්‍රව්‍ය සඳහා අනුචලන තීරු සැඟවීමට.

.div{

  scrollbar-width: none; /* The most elegant way for Firefox */

}    

ඔබ සඳහන් කළ පරිදි, එෆ්එෆ් හැරුණු විට සහයෝගය ප්‍රායෝගිකව නොපවතී. පරීක්ෂා කරන්න caniuse.com/#feat=mdn-css_properties_scrollbar-width
Adrien

D ඇඩ්‍රියන් හොඳයි, මුල් ප්‍රශ්නයේ සඳහන් වූයේ ඔවුන්ට වෙනත් බ්‍රව්සර් සඳහා විසඳුමක් ඇති බවයි. (නමුත් මොසිල්ලා ෆයර්ෆොක්ස් සහ ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් එලෙස ක්‍රියා කරන බවක් නොපෙනේ) ඔහු පවසන්නේ මම ෆයර්ෆොක්ස් විසඳුම ලබා දීමට හේතුව එය බවයි.
ඇල්වින් මොයෝ

සමාන සමඟ සංයෝජනය වන විට මෙය හොඳින් ක්‍රියාත්මක වන බව මට පෙනී ගියේය: div :: - webkit-scrollbar {display: none; K වෙබ්කිට් / ක්‍රෝම් සඳහා.
ෂෝන් හෝල්ස්

3

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

<div id="container">
  <div id="content">
     My content that could overflow horizontally
  </div>
  <div id="scroll-cover">
     &nbsp; 
  </div>
</div>

අනුරූප CSS පහත පරිදි වේ:

#container{
   width: 100%;
   height: 100%;
   overflow: hidden;
   position: relative;
}

#content{
  width: 100%;
  height: 100%;
  overflow-x: scroll;
}
#scroll-cover{
  width: 100%;
  height: 20px;
  position: absolute;
  bottom: 0;
  background-color: #fff; /*change this to match color of page*/
}

3

මෙය ශරීරයේ වේ:

<div id="maincontainer" >
<div id="child">this is the 1st step</div>
<div id="child">this is the 2nd step</div>
<div id="child">this is the 3rd step</div>

මෙය CSS ය:

#maincontainer
{
    background: grey;
    width: 101%;
    height: 101%;
    overflow: auto;
    position: fixed;
}

#child
{
    background: white;
    height:500px;
}

3

මෙය සියලුම බ්‍රව්සර් සඳහා ක්‍රියා කළ යුතු ඩිවයිටිස්-එස්ක් විසඳුමකි ...

සලකුණු කිරීම පහත පරිදි වන අතර සාපේක්ෂ ස්ථානගත කිරීමක් සහිත යමක් ඇතුළත තිබිය යුතුය (සහ එහි පළල සැකසිය යුතුය, උදාහරණයක් ලෙස පික්සල් 400):

<div class="hide-scrollbar">
    <div class="scrollbar">
        <div class="scrollbar-inner">

        </div>
    </div>
</div>

CSS:

.hide-scrollbar {
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}

.scrollbar {
    overflow-y: scroll;
    position: absolute;
    top: 0;
    left: 0;
    right: -50px;
    bottom: 0;
}

.scrollbar-inner {
    width: 400px;
}

3

මෙම perfect-scrollbarප්ලගිනය අපට ඉදිරියට යා හැකි බව පෙනේ, බලන්න: https://github.com/noraesae/perfect-scrollbar

එය අනුචලන තීරු නිකුතුව සඳහා මනාව ලේඛනගත කර ඇති සහ සම්පූර්ණ ජාවාස්ක්‍රිප්ට් පදනම් කරගත් විසඳුමකි.

ආදර්ශන පිටුව: http://noraesae.github.io/perfect-scrollbar/


2
මෙය ප්‍රශ්නයට සම්බන්ධ වන්නේ කෙසේදැයි මට නොපෙනේද?
ක්‍රිස් නෙවිල්

3
අනුචලන තීරුව සැඟවීමට එය භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ ක්ෂණික හෙළිදරව්වකින් තොරව මිනිත්තු 2 ක් පරිපූර්ණ-අනුචලන තීරුව දෙස බලා සිටින්න . ඔබ එම මාතෘකාව පිළිබඳ ඔබේ පිළිතුර පුළුල් කරන්නේ නම්, ඔබට වැඩි දියුණුවක් ලැබෙනු ඇතැයි මට විශ්වාසයි.
ක්‍රිස්ටියාන් වෙස්ටර්බීක්

3

අනුචලන තීරුව සැඟවීමට ඔබට පහත කේතය භාවිතා කළ හැකිය, නමුත් තවමත් අනුචලනය කිරීමට හැකියාව තිබියදී:

.element::-webkit-scrollbar { 
    width: 0 !important 
}

2

තවත් ආකාරයක අනවසර ප්‍රවේශයක් නම්, overflow-y: hiddenමෙවැනි දෙයක් සමඟ මූලද්‍රව්‍යය අතින් අනුචලනය කිරීමයි:

function detectMouseWheelDirection(e) {
  var delta = null, direction = false;
  if (!e) { // If the event is not provided, we get it from the window object
    e = window.event;
  }
  if (e.wheelDelta) { // Will work in most cases
    delta = e.wheelDelta / 60;
  } else if (e.detail) { // Fallback for Firefox
    delta = -e.detail / 2;
  }
  if (delta !== null) {
    direction = delta > 0 ? -200 : 200;
  }
  return direction;
}

if (element.addEventListener) {
  element.addEventListener('DOMMouseScroll', function(e) {
    element.scrollBy({
      top: detectMouseWheelDirection(e),
      left: 0,
      behavior: 'smooth'
    });
  });
}

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


2

සංවර්ධනය කිරීමේදී මා භාවිතා කරන අනුචලන තීරුව සැඟවීම සඳහා ඒකාබද්ධ ස්නිපටයක් බෙදා ගැනීමට මට අවශ්‍ය විය. එය මට වැඩ කරන අන්තර්ජාලයේ සොයාගත් ස්නිපෙට් කිහිපයක එකතුවකි:

.container {
    overflow-x: scroll; /* For horiz. scroll, otherwise overflow-y: scroll; */

    -ms-overflow-style: none;
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
}


.container::-webkit-scrollbar {
    display: none;  /* Safari and Chrome */
}

1

වැඩ කරන තවත් සරල ප්‍රහේලිකාවක් :

#maincontainer {
    background: orange;
    width: 200px;
    height: 200px;
    overflow: hidden;
}

#childcontainer {
    background: yellow;
    position: relative;
    width: 200px;
    height: 200px;
    top: 20px;
    left: 20px;
    overflow: auto;
}

මව් බහාලුම මත සැඟවී ඇති පිටාර ගැලීම සහ ළමා බහාලුම මත ස්වයංක්‍රීයව පිටාර ගැලීම. සරල.


මෙය අනුචලන තීරුව සඟවන්නේ නැත, එය "වම්" අගය සමඟ එය නොපෙනී යයි.
robertmiles3

@ robertmiles3 එකම දේ නොවේද? සැඟවී සිටින අතර බැලීමට නොහැකිද?
බ්‍රයන් විලිස්

1
@ robertmiles3 ඉහත තෝරාගත් පිළිතුර දකුණේ සිට එකම දේ කරයි. සීඑස්එස් වෙත නැවත අනුචලන තීරු සැඟවීමට ෆයිරෙෆොක්ස් තීරණය කරන තෙක් සියලු විසඳුම් අනවසරයෙන් පෙනේ. blogs.msdn.com/b/kurlak/archive/2013/11/03/…
geyws

මට එකඟ විය යුතුයි. මෙය පිළිගත් පිළිතුරෙන් යෝජනා කරන සමාන විසඳුමකි. එය ක්‍රියාත්මක වන්නේ නම් එය ක්‍රියාත්මක වේ. upvoted
JSON

1

මෙම උපක්‍රමශීලී විසඳුම පැරණි IE වෙබ් බ්‍රව්සරයේ පවා ක්‍රියාත්මක වේ

එය [ සිරස් අනුචලන තීරුව ] සඳහා වූ විසඳුමකි

<html>

<head>
  <style>
    html,
    body {
      overflow: -moz-scrollbars-vertical;
      overflow-x: hidden;
      overflow-y: hidden;
      height: 100%;
      margin: 0;
    }
  </style>
</head>

<body id="body" style="overflow:auto;height:100%" onload="document.getElementById('body').style.width=document.body.offsetWidth+20+'px'">
  <!--your stuff here-->
</body>

</html>

එය උත්සාහ කරන්න: jsfiddle

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.