як приховати вертикальну смугу прокрутки, коли це не потрібно


95

У мене є область тексту, яка міститься в div, оскільки я маю підказку jquery і хотів використовувати непрозорість, не змінюючи межу. Існує видима вертикальна смуга прокрутки, як я хочу, щоб це відображалося лише тоді, коли я ввожу текст у текстове поле, і воно виходить за рамки контейнера. Я спробував переповнення: auto; але не працює.

Текстове поле:

<label>
    <div id="name">
        <textarea name="message" type="text" id="message"
            title="Enter Message Here"
            rows=9 cols=60 maxlength="2000"></textarea>
    </div>
</label>

Стилі:

#name { 
    border: 1px solid #c810ca;
    width: 270px;
    height:159px;
    overflow: hidden; 
    position: relative;
    }

#message {
    height: 400px;
    width: 235px;
    overflow: hidden;
    position: absolute;
}

Відповіді:


199

overflow: auto(або overflow-y: auto) - правильний шлях.

Проблема полягає в тому, що область тексту вище, ніж область div. Дів закінчується обрізанням текстового поля, тому, хоча здається, що він повинен розпочати прокрутку, коли текст вищий, ніж 159pxвін не почне прокручуватися, поки текст не буде більшим за 400pxвисоту текстового поля.

Спробуйте це: http://jsfiddle.net/G9rfq/1/

Я встановив переповнення: автоматичне для текстового поля і зробив текстове поле таким же розміром, що і div.

Крім того, я не вважаю, що дійсно мати divвсередині a label, браузер відтворить його, але це може спричинити щось забавне. Також ваш divне закрито.


Як змусити це рішення працювати, коли ми налаштували смугу прокрутки за допомогою елемента -webkit-scrollbar psuedo. ? тому що якщо переповнення автоматично не працює, елементи psuedo не працюють .... Я хочу налаштувати свою смугу прокрутки, а також приховати тоді, коли це не потрібно?
Kpatel1989,

4

overflow: auto;або overflow: hidden;повинен це зробити, я думаю.


Як я вже сказав у своєму питанні overflow: auto; не працює :(
Лукус, 05.03.12

прихований приховує смугу прокрутки, але як тільки тексти передають div, вона не відображає смугу прокрутки, тому неможливо прокрутити вниз, щоб побачити решту тексту
Лукус,

Я щойно перевірив це, і воно працює нормально. Який браузер ви використовуєте?
Борис Бачовський 05.03.12

я використовую firefox, але в IE прихований показує смугу прокрутки незалежно від того, передає текст div, а автоматично, коли вона проходить контейнер DIV, смужка прокрутки не відображається
Лукус

Спробуйте додати position: relative;на#name div
Борис Bachovski

2

Додайте цей клас у клас .css

.scrol  { 
font: bold 14px Arial; 
border:1px solid black; 
width:100% ; 
color:#616D7E; 
height:20px; 
overflow:scroll; 
overflow-y:scroll;
overflow-x:hidden;
}

і використовуйте клас у div. як тут.

<div> <p class = "scrol" id = "title">-</p></div>

Я вклав зображення, ви бачите вихід вищезазначеного коду введіть тут опис зображення

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