स्क्रॉल बार छुपाएं, लेकिन स्क्रॉल करते समय सक्षम होने के बावजूद


1127

मैं पूरे पृष्ठ को स्क्रॉल करने में सक्षम होना चाहता हूं, लेकिन स्क्रॉलबार को दिखाए बिना।

Google Chrome में यह है:

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

लेकिन मोज़िला फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर इस तरह काम नहीं करते हैं।

मैंने यह CSS में भी आजमाया:

overflow: hidden;

यह स्क्रॉलबार को छिपाता है, लेकिन मैं इसे और स्क्रॉल नहीं कर सकता।

क्या ऐसा कोई तरीका है जो मैं अभी भी स्क्रॉलबार को हटा सकता हूं जबकि अभी भी पूरे पृष्ठ को स्क्रॉल करने में सक्षम है?

बस CSS या HTML के साथ, कृपया।

जवाबों:


787

बस एक परीक्षण जो ठीक काम कर रहा है।

#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 */
}

वर्किंग फिडल

जावास्क्रिप्ट:

चूंकि स्क्रॉलबार की चौड़ाई अलग-अलग ब्राउज़रों में भिन्न होती है, इसलिए इसे जावास्क्रिप्ट के साथ संभालना बेहतर होता है। यदि आप करते हैं 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 स्क्रॉलबार चौड़ाई / ऊँचाई नहीं है, इसलिए इसे बस उन सभी को कवर करना चाहिए ...
रॉबर्ट कोरिटनिक

360

यह वैकल्पिक स्टाइल के साथ WebKit में आसान है:

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तत्व पर लागू होना था ।
किशोर पवार

41
फ़ायरफ़ॉक्स पर काम नहीं करता है, काफी स्पष्ट है क्योंकि यह पूरी तरह से वेबकिट बताता है। धन्यवाद :)
ज़ोहैर

3
वे क्रोमियम होने के बाद अपेक्षित रूप से इलेक्ट्रॉन ऐप्स में उत्कृष्ट काम करते हैं। +1 धन्यवाद: D
रोकोको

IOS8 के बाद से, यह जब साथ प्रयोग किया काम नहीं करता है-webkit-overflow-scrolling: touch
aleclarson

4
यह क्रोम के साथ काम करता है। लेकिन मोज़िला फ़ायरफ़ॉक्स के साथ काम नहीं करता है।
रोमल टंडेल

298

यह मेरे लिए सरल सीएसएस गुणों के साथ काम करता है:

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

फ़ायरफ़ॉक्स के पुराने संस्करणों के लिए, उपयोग करें: overflow: -moz-scrollbars-none;


13
मेरे लिए, overflow: -moz-scrollbars-noneFirebox में स्क्रॉलबार छिपाता है , लेकिन स्क्रॉल करना भी अक्षम करता है। क्या आप एक डेमो प्रदान कर सकते हैं जहां यह आपके लिए काम कर रहा है?
चिपिट

1
दुर्भाग्य से -moz-scrollbars-noneसंपत्ति को नवीनतम फ़ायरफ़ॉक्स संस्करणों के लिए हटा दिया गया है: developer.mozilla.org/en-US/docs/Web/CSS/overflow
Hristo Eftimov

2
IOS8 के बाद से, यह जब साथ प्रयोग किया काम नहीं करता है-webkit-overflow-scrolling: touch
aleclarson

3
अप्रचलित फ़ायरफ़ॉक्स के लिए -moz-scrollbars-noneआप उपयोग कर सकते हैं @-moz-document url-prefix() { .container { overflow: hidden; } }। देखें stackoverflow.com/questions/952861/…
मार्टिन अदिला

1
मैंने फ़ायरफ़ॉक्स :) के लिए नवीनतम समर्थन के साथ अपना जवाब अपडेट किया है :)
Hristo Eftimov

291

अपडेट करें:

फ़ायरफ़ॉक्स अब CSS के साथ स्क्रॉलबार छुपाने का समर्थन करता है, इसलिए सभी प्रमुख ब्राउज़र अब कवर किए गए हैं (क्रोम, फ़ायरफ़ॉक्स, इंटरनेट एक्सप्लोरर, सफारी, आदि)।

सीधे उस सीएसएस को उस तत्व पर लागू करें जिसे आप स्क्रॉलबार से हटाना चाहते हैं:

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

यह कम से कम हैक करने वाला क्रॉस ब्राउज़र समाधान है जिसके बारे में मुझे वर्तमान में जानकारी है। डेमो देखें।


मूल ANSWER:

यहाँ एक और तरीका है जिसका अभी तक उल्लेख नहीं किया गया है। यह वास्तव में सरल है और इसमें केवल दो div और CSS शामिल हैं। कोई जावास्क्रिप्ट या मालिकाना सीएसएस की जरूरत नहीं है, और यह सभी ब्राउज़रों में काम करता है। इसे कंटेनर की चौड़ाई को स्पष्ट रूप से सेट करने की आवश्यकता नहीं है, इस प्रकार यह द्रव बना देता है।

यह विधि स्क्रॉलबार को माता-पिता से बाहर ले जाने के लिए एक नकारात्मक मार्जिन का उपयोग करती है और फिर सामग्री को अपनी मूल स्थिति पर वापस लाने के लिए पैडिंग की समान मात्रा होती है। तकनीक ऊर्ध्वाधर, क्षैतिज और दो तरह से स्क्रॉल करने के लिए काम करती है।

डेमो:

वर्टिकल वर्जन के लिए उदाहरण कोड:

HTML:

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

सीएसएस:

.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
@CeeMoney मैंने एक क्षैतिज डेमो जोड़ा। छवियों की तरह निश्चित चौड़ाई सामग्री तत्वों के लिए यह सिर्फ काम करना चाहिए, लेकिन पाठ के लिए आपको रैपिंग को अक्षम करना होगा।
रिच

1
@Richrd - डेमो के लिए एक टन धन्यवाद - पूरी तरह से काम करता है। न जाने क्यों हम सब इसे इतना कठिन बना देते हैं, लेकिन यह इतना सरल है कि मैं इसे पहले नहीं करने के लिए मूर्खतापूर्ण महसूस करता हूं।
CeeMoney

4
शुक्रिया @Richrd! मुझे खुशी है कि मैंने आपके उत्तर को स्क्रॉल किया। यदि SO के पास कुछ "बलपूर्वक स्वीकृत उत्तर" होता, तो मैं इसे अब उपयोग में नहीं लाता।
मार्टिन डी

78

उपयोग:

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

यह एक ओवरलैपिंग डिव के साथ स्क्रॉलबार को कुछ हद तक ओवरलैप करने की एक चाल है जिसमें कोई स्क्रॉल बार नहीं है:

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

यह केवल WebKit ब्राउज़रों के लिए है ... या आप ब्राउज़र-विशिष्ट 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 इस साइट @Oussama डॉबी मीडिया = 'स्क्रीन' का उपयोग करता है और फिर '::' - वेब साइट- स्क्रॉलबार 'सीएसएस के लिए संपत्ति
अर्पित सिंह

और क्या विशिष्ट सीएसएस गुण हैं?
ओउस्मा एल बाकिरी

या तो हैकी लेआउट या jquery एक विकल्प है
अर्पित सिंह

आपका पहला समाधान मुझे यह समस्या देता है s24.postimg.org/idul8zx9w/Naamloos.jpg और आपको हैकी लेआउट से क्या मतलब है @ArpitSingh
Oussama el Bachit

4
निम्नलिखित ने मुझे कॉर्डोवा में iOS ::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; } $.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 {}
उपसर्ग

प्रश्न का उत्तर देने से पहले मैंने सभी नए ब्राउज़रों में इसका परीक्षण किया। इसके अलावा एफएफ। इसने एफएफ में कुछ बदलावों को खुश किया है?
तिमो क्वाकोनेन

मैंने जवाब अपडेट किया। ऐसा लगता है कि जोड़ना padding-right: 150px;इसे ठीक करता है। एफएफ, क्रोम, सफारी और एज में परीक्षण किया गया। बड़े राइट-पेडिंग के कारण कम ज़ूम स्तरों में भी काम करता है।
तिमो क्वाकोनेन

2
एज, IE 11, IE10 (शायद कम भी) समर्थन html { -ms-overflow-style: none;}। इन ब्राउज़रों में पैडिंग-हैक का उपयोग करने की आवश्यकता नहीं है।
टिमो किक्कोन

@ टिमो के उत्तर का उपयोग करना था और overflow-y: scrollइसे स्क्रॉल 23 पर काम करने के लिए स्क्रॉल व्यवहार (लेकिन क्रोम की तरह) छिपाना था।
जोजो

21

बस तीन लाइनों का उपयोग करें और आपकी समस्या हल हो जाएगी:

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

जहां लैडडशाप्स उस div का नाम है जहां स्क्रॉल आ रहा है।


मुझे फिडल में समस्या दिखाओ
इन्नोडेल

1
आसान और उपयोगी, धन्यवाद! मैंने {चौड़ाई: 0;} के बजाय {डिस्प्ले: नो} का इस्तेमाल किया और साथ ही काम भी किया
संति नुनज

2
MS Edge या Firefox पर काम नहीं करता है।
६.१४ दिन बाद

18

यह मेरे लिए क्रॉस-ब्राउज़र का काम करता है। हालाँकि, यह मोबाइल ब्राउज़र पर देशी स्क्रॉलबारों को नहीं छिपाता है।

में एससीएसएस

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

में सीएसएस

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

नेस्टेड ब्लॉक ( {}) का क्या अर्थ है? इसकी व्याख्या कैसे की जाए? और &? शायद आपके जवाब में विस्तृत है?
पीटर मॉर्टेंसन

: यह एक एस.ए.एस.एस. बात (जाहिरा तौर पर, कम भी) है css-tricks.com/the-sass-ampersand
vipatron

@PeterMortensen मैंने अभी आपकी टिप्पणी देखी है, CSS में &::-webkit-scrollbarहो जाती .hide-native-scrollbar::-webkit-scrollbar { }है
मुराफ सूसली

बस iOS के { width: 0; height: 0;}लिए :: - वेबकिट-स्क्रॉलबार के display: noneलिए करें।
एड्रियेंडेनैट

FF71 में यह सभी स्क्रॉलिंग को ब्लॉक करता है।
जीन b।

11

निम्नलिखित Microsoft, क्रोम और मोज़िला पर मेरे लिए एक विशिष्ट div तत्व के लिए काम कर रहा था:

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

ध्यान दें कि scrollbar-width(केवल FF) को "प्रायोगिक" फ़्लैग किया गया है
cimak

हां @cimak, लेकिन FF पर आप इसे w / o किसी भी समस्या को छिपा सकते हैं, इसलिए यह केवल क्रोम के लिए उपयोग किया जाता है।
मेलोमन

9

HTML:

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

सीएसएस:

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

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

तदनुसार सीएसएस लागू करें।

इसे यहां देखें (इंटरनेट एक्सप्लोरर और फ़ायरफ़ॉक्स में परीक्षण किया गया)।


8

11 दिसंबर 2018 (फ़ायरफ़ॉक्स 64 और ऊपर) के रूप में, इस सवाल का जवाब फ़ायरफ़ॉक्स 64 के रूप में वास्तव में बहुत सरल है अब सीएसएस स्क्रॉलबार स्टाइलिंग टूल को लागू करता है ।

बस निम्नलिखित सीएसएस का उपयोग करें:

scrollbar-width: none;

फ़ायरफ़ॉक्स 64 रिलीज नोट लिंक यहाँ


3
यह जानकर बहुत अच्छा लगा! ऐसा लगता है कि ब्राउज़र वास्तव में प्रगति कर रहे हैं, हाहा!
ओसामा एल बच्ची

7

उपयोग:

सीएसएस

#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);
}

एचटीएमएल

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

निश्चित नहीं है कि यह क्यों अस्वीकृत किया गया था, लेकिन मैंने इसे सही दिशा में जाने के रूप में उखाड़ फेंका, अन्य समाधान मेरे मामले में वास्तव में अच्छी तरह से काम नहीं करते थे। अतिप्रवाह-एक्स: छिपा हुआ; + अतिप्रवाह-य: स्क्रॉल; 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;
}

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 सामग्री में कोई शैली नहीं चाहिए। मैं बिना किसी स्क्रॉलबार के सीधे अपने शरीर को स्क्रॉल करना चाहता हूं, और केवल एक ऊर्ध्वाधर स्क्रॉल, किसी भी स्क्रीन आकार के लिए सीएसएस ग्रिड के साथ काम करना ।

बॉक्स आकार मूल्य प्रभाव गद्दी या मार्जिन समाधान, वे साथ काम करता है सामग्री बॉक्स: बॉक्स आकार

मुझे अभी भी "-मोज़-स्क्रोलबार्स-कोई नहीं" निर्देश की आवश्यकता है, और गॉर्डन और मि_ग्रीन की तरह, मुझे स्क्रॉलबार को छिपाना पड़ा। मैंने कोशिश की -moz-transformऔर -moz-padding-startकेवल फ़ायरफ़ॉक्स को प्रभावित करने के लिए, लेकिन उत्तरदायी साइड इफेक्ट्स थे जो बहुत अधिक काम करने की आवश्यकता थी।

यह समाधान HTML बॉडी कंटेंट के लिए "डिस्प्ले: ग्रिड" स्टाइल के साथ काम करता है, और यह उत्तरदायी है।

/* 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बाहरी div पर निर्भर)।

उदाहरण के लिए, 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 और बूटस्ट्रैप / col- * जैसे चौखटे के साथ अच्छी तरह से काम करता है। इसे केवल दो अतिरिक्त divs और अभिभावक 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लेकिन उसी मूल्य के साथ। यह नीचे के तत्व के लिए जगह से नीचे नहीं खाएगा। यह ओवरलैपिंग को रोकता है।
हक्सपोर

@haxpor margin-bottomनकारात्मक है, मुझे लगता है कि इसे एक में नहीं बदला जा सकता है padding-bottom, जो नकारात्मक मूल्यों को संभाल नहीं सकता है
जीन

3

मैं अपनी परियोजना में उपरोक्त समाधानों की कोशिश करने के लिए होता हूं और किसी कारण से मैं विभाजन की स्थिति के कारण स्क्रॉल बार को छिपाने में सक्षम नहीं था। इसलिए, मैंने एक div पेश करके स्क्रॉल बार को छिपाने का फैसला किया जो इसे सतही रूप से कवर करता है। नीचे एक क्षैतिज स्क्रॉल पट्टी के लिए उदाहरण दिया गया है:

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

सीएसएस के अनुरूप इस प्रकार है:

#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>

और यह सीएसएस है:

#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>

सीएसएस:

.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

निम्नलिखित 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;
  }
}

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 */
}

2

स्क्रॉल पट्टी को छिपाने के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं, लेकिन स्क्रॉल करते समय सक्षम होने के बावजूद:

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

2

सामग्री के उपयोग की अधिकता वाले तत्वों के लिए स्क्रॉल बार छिपाने के लिए।

.div{

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

}    

समर्थन व्यावहारिक रूप से गैर-मौजूद है एफएफ को छोड़कर जैसा कि आपने उल्लेख किया है कि ओपी ने जो मांगा था उसके लिए बहुत कम है। चेक caniuse.com/#feat=mdn-css_properties_scrollbar-width
एड्रियन

@ एड्रियन वेल, मूल प्रश्न में कहा गया है कि उनके पास अन्य ब्राउज़रों के लिए एक समाधान है। (लेकिन मोज़िला फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर उस तरह काम नहीं करते हैं) वे कहते हैं, यही कारण है कि मैंने फ़ायरफ़ॉक्स समाधान दिया।
एल्विन मोयो

मैंने पाया कि यह अच्छी तरह से काम किया जब समकक्ष के साथ संयुक्त: div :: - webkit- स्क्रॉलबार {प्रदर्शन: कोई नहीं; } वेबकिट / क्रोम के लिए।
सीन हॉल

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

ओवरफ्लो माता-पिता कंटेनर पर छिपा हुआ है, और बाल कंटेनर पर ओवरफ्लो ऑटो। सरल।


यह स्क्रॉलबार को छिपाता नहीं है, यह इसे केवल "बाएं" मान से धकेलता है।
रोबर्टमाइल्स 3

@ robertmiles3 एक ही बात नहीं है? छिपाना और देखना संभव नहीं है?
ब्रायन विलिस

1
@ robertmiles3 उपरोक्त चयनित उत्तर दाईं ओर से समान कार्य करता है। सभी समाधानों की तरह लगता है कि जब तक FIrefox CSSb को फिर से स्क्रॉलबार छिपाने की अनुमति देने का फैसला नहीं करता है, तब तक हैक कर लिया जाता है। blogs.msdn.com/b/kurlak/archive/2013/11/03/…
geoyws

मुझे सहमत होना होगा। यह स्वीकृत उत्तर द्वारा प्रस्तावित एक समान समाधान है। अगर यह काम करता है तो यह काम करता है। अपवोटेड
JSON

1

यह मुश्किल समाधान पुराने IE वेब ब्राउज़र पर भी काम करता है

यह [ ऊर्ध्वाधर स्क्रॉलबार ] के लिए एक समाधान है

<html>
<head>
<style>
html,body{
         overflow:-moz-scrollbars-vertical;
         overflow-x:hidden;
         overflow-y:hidden;
         height:100%;
         margin:0 0 0 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


0

बस बच्चे की चौड़ाई की चौड़ाई को 100%, पैडिंग के लिए 15 पिक्सेल, overflow-xस्क्रॉल करने के overflow:hiddenलिए और माता-पिता और जो भी आप चाहते हैं, उसकी चौड़ाई निर्धारित करें।

यह इंटरनेट एक्सप्लोरर 8 और लोअर के अपवाद के साथ इंटरनेट एक्सप्लोरर और एज सहित सभी प्रमुख ब्राउज़रों पर पूरी तरह से काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.