ВИМКНЕННЯ горизонтального прокрутки [закрито]


180

Гаразд, моя веб-сторінка прокручується зліва направо і показує багато некрасивого місця.

Я шукав результати, але вони просто зробили смугу прокрутки приховано

Ось що я хочу, я хочу фізично відключити функцію горизонтальної прокрутки. Я не хочу, щоб користувач міг прокручувати ліворуч направо на своїй сторінці просто вгору та вниз!

Я спробував: overflow-x:hiddenу css на своєму htmlтезі, але це лише зробило смугу прокрутки та не відключило прокрутку.

Будь ласка, допоможи мені!

Ось посилання на сторінку: http://www.green-panda.com/usd309bands/ (Зламане посилання)

Це може дати вам краще уявлення про те, про що я говорю:

Це коли завантажуються перші сторінки:

введіть тут опис зображення

І це після того, як я прокручую праворуч:

введіть тут опис зображення


1
Як можна прокручувати горизонтально, якщо немає горизонтальної смуги прокрутки?
Родді з замороженого гороху

9
Два пальці на миші, що йде зліва направо на ноутбуці.
user2371301

1
Що з цікавості, що на вашій сторінці створює смугу прокрутки за замовчуванням?
Троян

4
Як прокручувати без смуги прокрутки? Перетягнення середнього колеса в Windows.
Наюкі

повинен бути блок, який матиме додаткові накладки, тобто розширення на 100% ширину видалення, що було б хорошою практикою
необдумані

Відповіді:


494

Спробуйте додати це до CSS

html, body {
    max-width: 100%;
    overflow-x: hidden;
}

5
Це працювало чудово. Я радий, що знайшов когось, хто зрозумів, що я говорю! Я прийму, як тільки зможу.
user2371301

44
У Chrome 34 це дійсно не заважає прокручувати. Він приховує смугу прокрутки, але при прокручуванні середньої кнопки я все одно бачу приховані елементи зліва.
gphilip

2
Це не працює, коли ви мінімізуєте вікно браузера до його найменшої ємності
dspacejs

4
: - / Викликано прокручування дотику / імпульсу, щоб перестати працювати на iPhone
MarkWPiper

2
я люблю тебе чувак !!
rochasdv

13

це гидка дитина вашого коду :)

.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {
width: 1170px;
}

замінити його на

.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {
width: 100%;
}

13

Отже, щоб правильно виправити це, я зробив те, що робили тут інші, і використав css, щоб приховати горизонтальну панель інструментів:

.name {
  max-width: 100%;
  overflow-x: hidden;
}

Потім у js я створив слухача подій, щоб шукати прокрутку, і протидіяв користувачам, які намагалися горизонтально прокручувати.

var scrollEventHandler = function()
{
  window.scroll(0, window.pageYOffset)
}

window.addEventListener("scroll", scrollEventHandler, false);

Я бачив, як хтось робить щось подібне, але, мабуть, це не спрацювало. Це, однак, для мене працює чудово.


Це працює для мене; однак при переході є тремтіння на мобільному; при цьому рух сповільнюється.
Навряд чи помітно

"правильно" Не зовсім, але все-таки хороша і творча відповідь.
Feathercrown

9

Я знаю, що вже пізно , але в JavaScript використовується підхід, який може допомогти вам виявити html-елемент відьми, що спричиняє горизонтальне переповнення -> смуга прокрутки

Ось посилання на публікацію про трюки CSS

var docWidth = document.documentElement.offsetWidth;
[].forEach.call(
  document.querySelectorAll('*'),
  function(el) {
    if (el.offsetWidth > docWidth) {
      console.log(el);
    }
  }
);

це може повернути щось подібне:

<div class="div-with-extra-width">...</div>

тоді ви просто видаліть додаткову ширину з divабо встановіть їїmax-width:100%

Сподіваюся, це допомагає!

Це вирішило проблему для мене:]


Як примітка на сайті, limitingClientRect є більш точним, ніж offsetWidth: - developer.mozilla.org/en-US/docs/Web/API/Element/… - stackoverflow.com/questions/43537559/…
The Fool

абсолютне збереження життя!
Хвости

8

Спробуйте це, щоб вимкнути прокручування ширини лише для тіла, весь документ просто є body body{overflow-x: hidden;}


5

koala_dev відповів, що це спрацює:

html, body {
   max-width: 100%;
   overflow-x: hidden;
}

І MarkWPiper коментує, що ": - / спричинено натискання / імпульс прокрутки, щоб перестати працювати на iPhone"

Рішенням підтримувати зв'язок / імпульс на iPhone - додати цю лінію всередині блоку css для html, body:

    height:auto!important;

куди його поставити? під тегом body або медіа-запитом для маленьких екранів?
Умаїр

1
@Umair спасибі - відредагований коментар, щоб уточнити, що висота: автоматична лінія йде в html, блок css body.
ffffff

Дуже дякую за висоту: автоматичне рішення!
Торбен

2

Відповідь Koala_dev спрацює, але якщо вам цікаво, це причина, чому вона працює:

.
q.html, body {              <--applying this css block to everything in the
                             html code.

q.max-width: 100%;          <--all items created must not exceed 100% of the 
                             users screen size. (no items can be off the page 
                             requiring scroll)

q.overflow-x: hidden;       <--anything that occurs off the X axis of the 
                             page is hidden, so that you wont see it going 
                             off the page.     

.


Thx, я любив освіту.
Сутенер Трізкіт

2

Якщо ви хочете відключити горизонтальну прокрутку по всій ширині екрана, використовуйте цей код.

element {
  max-width: 100vw;
  overflow-x: hidden;
}

Це працює краще, ніж "100%", оскільки він ігнорує батьківську ширину і замість цього використовує область перегляду.


2

Ви можете спробувати цей метод на нашій html-сторінці.

1-й спосіб

body { overflow-x:hidden; }

Другий спосіб Ви можете використовувати наступне у своєму тезі CSS:

overflow-y: scroll; overflow-x: hidden;

Це видалить вашу смугу прокрутки.

3-й спосіб

body { min-width: 1167px; }

5-й спосіб

html, body { max-width: 100%; overflow-x: hidden; }

6-й шлях

element { max-width: 100vw; overflow-x: hidden; }

4-й спосіб ..

var docWidth = document.documentElement.offsetWidth; [].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );

Зараз я шукаю про більше .. !!!!


1

Мені просто довелося з цим самому впоратися. Зрештою, я знайшов цей метод найпростішим і корисним. Просто додайте

overflow-x: hidden;

До вашого зовнішнього батька. У моєму випадку це виглядає приблизно так:

<body style="overflow-x: hidden;">

Ви повинні використовувати, overflow-xтому що якщо ви просто використовуєте, overflowви також відключаєте вертикальну прокрутку, а самеoverflow-y

Якщо вертикальна прокрутка все ще вимкнена, ви можете ввімкнути її прямо:

overflow-y: scroll;

Я знаю, що це дещо не належний спосіб, бо якби все було налаштовано добре, не потрібно було б використовувати цей швидкий і брудний метод.


1
.name 
  { 
      max-width: 100%; 
       overflow-x: hidden; 
   }

Для вирішення цієї проблеми ви застосовуєте наведений вище стиль або можете створити функцію в javaScript


0

Ви можете змінити подію прокрутки тіла за допомогою JavaScript і скинути горизонтальну прокрутку до 0.

function bindEvent(e, eventName, callback) {
    if(e.addEventListener) // new browsers
        e.addEventListener(eventName, callback, false);
    else if(e.attachEvent) // IE
        e.attachEvent('on'+ eventName, callback);
};

bindEvent(document.body, 'scroll', function(e) {
    document.body.scrollLeft = 0;
});

Я не раджу це робити, оскільки це обмежує функціональність для користувачів з малими екранами.


2
Я спробую це спробувати, виправлення CSS не працює на моєму проекті, так, навіть це не працює :(
Леон Габан

це не працює для мене
Souhail Ben Slimene
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.