Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CSS]Wysokość <textarea> dostosowująca się do ilości tekstu
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Witajcie,
Sprawa z pozoru prosta. Wynik z SELECT * wrzucam do <textarea> oddzielnie każdy rekord. To pole textarea ma ustaloną szerokość ale w zależności od ilości tekstu ma się rozszerzać w pionie. Jak? Height:100% nie daje efektu.

  1. .message_box{
  2. height:100%;
  3. width:500px;
  4. }
  5.  
  6. .message_body textarea{
  7. width:100%;
  8. height:100%;
  9. }

  1. while($row=mysql_fetch_row($result)){
  2.  
  3. echo '<div class="message_box">';
  4.  
  5. echo '<div class="message_body"><textarea>'.$row[2].'</textarea></div>';
  6.  
  7. echo '</div>';
  8. }


Dzięki z góry.


No chyba, że nospor zaraz zamknie odsyłając mnie do samouczka.

Ten post edytował sadistic_son 13.10.2016, 15:53:02


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
No chyba, że nospor zaraz zamknie odsyłając mnie do samouczka.
Czemu? A co to ja babajaga?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SmokAnalog
post
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Na pewno nie bez JavaScriptu. Mam taki pomysł, że mógłbyś utworzyć niewidzialny element, który miałby identyczną czcionkę, width, line-height itd. jak Twój textarea i w miarę wpisywania do textarea (zdarzenie input), ta kopia dostawałaby tę samą treść. Następnie sprawdzasz jaką ma wysokość ten element i ustawiasz taką samą wysokość na textarea.

Innym pomysłem jest ukrycie textarea, a pokazywanie tylko normalnego elementu, który w locie dostaje treść z textarea. Trochę gorsze rozwiązanie moim zdaniem, bo tracimy niektóre właściwości textarea.

Dodam, że takie coś jest na Facebooku, kiedy np. piszemy komentarz. Zajrzałem w drzewo DOM i oni używają specjalnego diva. Nie ma nawet żadnego textarea w tle, nic. Po prostu wpisuje się do diva.

Ten post edytował SmokAnalog 15.10.2016, 12:28:41
Go to the top of the page
+Quote Post
sadistic_son
post
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ale mi nie chodzi o rozszerzanie textarea live, tzn w momencie pisania. Chodzi o to, że output z bazy poprzez while() jest wrzucany do textarea. Raz jest w nim jeden wyraz a raz 200 zdań.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/454202/...ith-auto-resize


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #6





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Panowie, dzięki za odpowiedzi ale nie o to mi chodzi, źle mnie zrozumieliście. Nie chodzi o resize textarea na żywo w trakcie pisania. Chodzi o rozciągnięcie się textarea jednorazowo, dopasowanie do ilości tekstu w nim. Te textarea są tylko po to aby łatwiej było kopiować text, nic nie będzie w nie wpisywane przez usera, tylko będzie wsadzany tekst z bazy.
Podam przykład:
  1. <div class="pojemnik">
  2. <div class="jeden">trochę tekstu</div>
  3. <div class="dwa"> tutaj jest dużo tekstu.tutaj jest dużo tekstu.tutaj jest dużo tekstu.tutaj jest dużo tekstu.tutaj jest dużo tekstu.</div>
  4. </div>
  1. .pojemnik{
  2. width:50px;
  3. height:100%;
  4. }
  5.  
  6. .jeden{
  7. width:100%;
  8. height:100%;
  9. }
  10.  
  11. .dwa{
  12. width:100%;
  13. height:100%;
  14. }

Div jeden powinien mieć szerokość 50px i wysokość... no powiedzmy tyle ile wysokości mają litery:) Div dwa będzie miał szerokość 50px ale jako, że tekstu jest na kilka linijek to jego wysokość będzie dużo większa od diva jeden, mimo, że w CSS mają dokładnie te same atrybuty (width i height na 100%).
I o to samo mi chodzi z textarea. Wg mnie powinno to działać tak samo dla textarea ale nie działa. Cholerstwa trzymają wszystkie ten sam rozmiar, bez względu ile tekstu w nich jest. I czemu tak?

Ten post edytował sadistic_son 18.10.2016, 16:06:06


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A jaki problem odpalic ten kod tylko raz po zaladowaniu strony? Nawet nie przeczytales odpowiedzi porzadnie... Jeden z przykladow co podal viking robi dokladnie to co chcesz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post
Post #8





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No dobra, teraz przejrzałem dokładniej odpowiedzi, kilka z nich użyłem. To nawet robi mniej więcej to o co mi chodzi:
  1. <textarea id="autosize" style="width:200px;">a
  2. b
  3. <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  4. <script src="http://cdnjs.cloudflare.com/ajax/libs/autosize.js/1.18.4/jquery.autosize.min.js"></script>
  5. <script>$('#autosize').autosize()</script>



Ale raz, że tutaj uzyte są zewnętrzne skrypty. A dwa, że w ogóle wolę uniknąć Javascripta, jako że strona będzie śmigać od PCtów przez MACe, Androidy, na IOSach kończąc. Tak, wiem, można to wszystko zoptymalizować pod każdą przeglądarkę, ale dla mnie to bez sensu korzystać z takiego rozwiązania skoro da się to zrobić CSSem (tak myślę).



EDIT: Panowiedzięki, będą plusiki, jeśli nie da się znaleźć rozwiązania CSS'em. Na razie nie daję "pomógł" bo inni przestaną zaglądać do tematu;)

Ten post edytował sadistic_son 18.10.2016, 16:25:12


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Te skomplikowane zadanie sprowadza sie do ustawienia height dla textarea wartosci z scrollHeight. Wszystko to mozesz zrobic bez tej calej masy zewnetrznych skryptow. To sa dwie linijki czystego js ktore beda dzialac raczej wszedzie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maviozo
post
Post #10





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

Ostrzeżenie: (0%)
-----


Jeżeli w php znasz ilość wieszy, to możesz to pomnożyć przez wysokość pojedynczego wiersza i taką ustawić wysokość.

Ten post edytował maviozo 21.10.2016, 15:12:44
Go to the top of the page
+Quote Post
sadistic_son
post
Post #11





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


@maviozo to gdzie tu automatyzacja skoro mam wartość wpisywać z palca?

Chyba poprzestanę jednak na rozwiązaniach javascript.

Dzięki Panowie.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Niree
post
Post #12





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

Ostrzeżenie: (0%)
-----


Cytat(sadistic_son @ 23.10.2016, 10:40:24 ) *
@maviozo to gdzie tu automatyzacja skoro mam wartość wpisywać z palca?

Chyba poprzestanę jednak na rozwiązaniach javascript.

Dzięki Panowie.


  1. echo <<< html
  2. <textarea rows="{$ilosc_zdan}" />
  3. html;


Skryptem PHP wyczytujesz ilość zdań (np. po kropce na końcu zdania) i zapisujesz jako $ilosc_zdan.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 18:05