Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

90
Views
Cómo hacer una barra de desplazamiento en un solo div

Quiero agregar dos Div en la página, un Div para la parte superior, que es de solo lectura, el otro Div para la parte inferior, que es editable. Lo que quiero lograr es:

  1. Haga que el Div inferior sea editable y desplazable si el contenido es demasiado largo.
  2. Mientras se desplaza por el Div inferior, el Div superior debe permanecer en la misma posición

Aquí está el código que tengo:

 <html> <body> <div> <div>Top Part</div> <div contenteditable="true">Click here to type</div> </div> </body> </html>

En el código anterior, si hago clic en el Div inferior, podemos escribir, luego, si seguimos presionando Intro, mostrará la barra de desplazamiento vertical, pero si me desplazo, el Div superior también se desplazará hacia arriba, lo cual quiero para evitar.

Entonces, ¿cómo puedo hacer que la barra de desplazamiento solo se aplique a la división inferior?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

La barra de desplazamiento actualmente se aplica a toda la ventana, por lo que todos los elementos de la página se desplazan hacia arriba y hacia abajo juntos. Una alternativa es hacer desplazable el área editable. Restrinja la altura de esa área y establezca su desbordamiento en "automático" o "desplazamiento".

 .edit { max-height: 5em; overflow-y: auto; }
 <div> <div>Top Part</div> <div contenteditable="true" class="edit">Click here to type</div> </div>


Puede evitar establecer una altura específica para el área desplazable utilizando la altura de la ventana como limitador. Un método es usar flexbox para que el área desplazable llene la altura restante de la ventana. Aquí hay un ejemplo . En su caso, el <body> puede ser el contenedor flexbox "externo".

En la demostración a continuación, <body> se divide en dos áreas: el área superior y un área inferior de "contenedor desplazable" que llena la altura restante de la ventana. El área inferior limita la altura máxima del área editable/desplazable.

También agregué una técnica de "marcador de posición" discutida aquí: Marcador de posición para div contenteditable .

 html, body { margin: 0; } body { height: 100vh; display: flex; flex-direction: column; } .header { background-color: #EEF; } .scroll-container { flex: 1; min-height: 1em; } .scrollable { max-height: 100%; overflow-y: auto; } .header, .scrollable { padding: 0.5em; box-sizing: border-box; } [contenteditable=true]:empty:before { content: attr(data-placeholder); color: grey; font-style: italic; cursor: text; }
 <div class="header">Top Part</div> <div class="scroll-container"> <div contenteditable="true" class="scrollable" data-placeholder="Click here to type"></div> </div>

about 4 years ago · Juan Pablo Isaza Report

0

Si quiere decir que desea que la parte superior siempre se pueda ver en la parte superior, puede usar position: sticky .

 .sticky { font-size: 2em; position: sticky; top: 0; } [contenteditable=true] { border: 0.1em solid black; }
 <html> <body> <div> <div class="sticky">Top Part</div> <div contenteditable="true">Click here to type</div> </div> </body> </html>

about 4 years ago · Juan Pablo Isaza Report

0

Podrías hacer algo como esto:

 .scrollable{ overflow-y: scroll; max-height: 150px; }
 <html> <body> <div> <div>Top Part</div> <div class="scrollable" contenteditable="true">Click here to type</div> </div> </body> </html>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!