Zazwyczaj pola tekstowe są prostokątne lub kwadratowe, takie jak to:
Ale chcę niestandardowego obszaru tekstowego, takiego jak na przykład:
Jak to jest możliwe?
javascript
jquery
html
css
Paranoidalny
źródło
źródło
<div>
do przechowywania tekstu nie jest dobrym rozwiązaniem. Może to pomóc w projektowaniu, a nawet może być akceptowalne w przypadku tekstu tylko do odczytu (co całkowicie przeczy celowicontenteditable
), ale nie jest dobre do wprowadzania tekstu przez użytkownika. Div (nawet z możliwością zadowalania) nie jest standardowym elementem wejściowym jak zwykły element formularza, dlatego nie będzie traktowany jak jeden, a zatem jego zawartość nie zostanie zapisana przez przeglądarki w przypadku awarii. Korzystanie z div prowadzi do utraty danych . Zobacz ten przykład .Odpowiedzi:
Wprowadzenie
Po pierwsze, istnieje wiele rozwiązań zaproponowanych w innych postach. Myślę, że ten jest obecnie (w 2013 r.) Tym, który może być kompatybilny z największą liczbą przeglądarek, ponieważ nie wymaga żadnych właściwości CSS3. Jednak metoda nie będzie działać w przeglądarkach, które nie obsługują
contentdeditable
, bądź ostrożny.Rozwiązanie z div
contenteditable
Zgodnie z propozycją @Getz , możesz użyć div za pomocą,
contenteditable
a następnie ukształtować go za pomocą div. Oto przykład z dwoma blokami, które unoszą się w lewym górnym rogu i prawym górnym rogu głównego div:Jak widać, musisz trochę pograć z granicami, jeśli chcesz uzyskać taki sam wynik, jak zażądałeś w swoim poście. Główny div ma po każdej stronie niebieską ramkę. Następnie należy przykleić czerwone bloki, aby ukryć górne granice głównej div, i musisz zastosować do nich obramowanie tylko po poszczególnych stronach ( dolny i lewy dla prawego bloku, dolny i prawy dla lewej).
Następnie możesz pobrać treść za pomocą Javascript, na przykład po naciśnięciu przycisku „ Prześlij ”. I myślę, że można także obsługiwać resztę (CSS
font-size
,color
etc.) :)Pełna próbka kodu
źródło
You can't apply a border color for the editable section keeping the two corner div's background-color:white
. Czyż nie Nadal to wygra. +1bad things
tylko o nich . To byłyby skutki uboczne sytuacji, o którą właśnie zapytałem i co zrobiłeś w skrzypcach. Ale z pewnością jest to naprawdę dobre rozwiązanie. Dzięki za wyjaśnienie.W najbliższej przyszłości możemy użyć tzw
css-shapes
. Div zcontenteditable
zestawem atrybutów wtrue
połączeniu zcss-shapes
może nadać obszarowi tekstowemu dowolny kształt.Obecnie Chrome Canary już obsługuje
css-shapes
. Przykładem możliwym w przypadku kształtów css jest:Tutaj używają kształtu wielokąta do zdefiniowania przepływu tekstu. Powinno być możliwe utworzenie dwóch wielokątów pasujących do pożądanego kształtu dla obszaru tekstowego.
Więcej informacji na temat
css-shapes
zostało napisane na stronie: http://sarasoueidan.com/blog/css-shapes/Wielokąt utworzony przy pomocy: http://betravis.github.io/shape-tools/polygon-drawing/
Wynik
http://jsfiddle.net/A8cPj/1/
źródło
Może jest to możliwe dzięki edycji treści ?
To nie jest obszar tekstowy, ale jeśli uda ci się stworzyć div z tym kształtem, może działać.
Myślę, że nie jest to możliwe tylko w obszarze tekstowym ...
Mały przykład: http://jsfiddle.net/qgfP6/5/
źródło
Możesz pracować z zadowalającym div, z dwoma rogami div:
źródło
Możesz to również zrobić z regionami CSS
(Platforma internetowa)
[Obecnie obsługiwany w WebKit Nightly, Safari 6.1+ i iOS7 i już dostępny w Chrome i operze po włączeniu flagi: włącza eksperymentalne funkcje platformy internetowej - caniuse , platforma internetowa ]
SKRZYPCE
Możesz więc nadać temu kształtowi kształt, przepuszczając tekst przez 2 regiony i edytując go, dodając contentableable do treści.
Narzut
(Odpowiedni) CSS
Wynik:
Aby uzyskać więcej informacji o regionach - oto dobry artykuł: regiony CSS3: bogaty układ strony z HTML i CSS3
źródło
Długa linia tekstu w polu upuści kursor poza środkowe krawędzie i nie mogę tego naprawić.
źródło
To nie jest możliwe, panie! Obszar tekstowy to zazwyczaj prostokąt lub kwadrat, w którym można pisać.
Aby jednak zrobić coś takiego, możesz użyć 2 obszarów tekstowych, a następnie nadać im określoną szerokość i wysokość. W przeciwnym razie nie sądzę, że to się stanie!
Drugą metodą byłoby stworzenie edytowalnego elementu.
http://jsfiddle.net/afzaal_ahmad_zeeshan/at2ke/
Kod to:
Za pomocą tego możesz edytować dowolny element! Możesz nadać mu wymiary, a zadziała! Otrzymasz to tylko jako obszar tekstowy.
Odniesienie: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_Editable
źródło
div
s zamiast textarea. Ponieważ textarea nie może być zmieniony w kształt! :) @Markasoftware Więc mylisz się, oddając głos na tę odpowiedź! .. ponieważ jest to taka sama odpowiedź jak jego. Jedyne, czego tu nie ma, to obraz i kod do edytowania div z tym kształtem!Jeśli połączysz z tym kształty CSS,
contenteditable
możesz to zrobić w przeglądarkach internetowych.Najpierw musisz włączyć flagę: enable-experimental-web-platform-features
Następnie uruchom ponownie przeglądarkę internetową, a następnie sprawdź ten FIDDLE !
Ta metoda działa również w przypadku niestandardowych kształtów.
Narzut
CSS
Skąd więc mam ten wielokąt?
Wejdź na tę stronę i stwórz własny kształt!
Uwagi na temat włączania flagi: ( stąd )
źródło
box-sizing
.)Za pomocą narzędzia Google Web Designer można tworzyć złożone kształty
HTML5-canvas and CSS
.Więcej dostaniesz inne narzędzia, takie jak narzędzia do pisania, aby wprowadzić tekst w tych kształtach.
Ponieważ plik wyjściowy zawiera dużo kodu, stanowi skrzypce przykładowej wersji demonstracyjnej utworzonej za pomocą narzędzia Google Web Designer
FIDDLE DEMO >>
źródło
<textarea>
(tj. Pola edytowalnego tekstu), ale o nieprostokątnym kształcie. Bez części „edytowalnej” nie ma tutaj dużego wyzwania - ludzie piszą tekst w HTML od czasu wprowadzenia pływających obrazów w HTML 2.0.Jeśli z jakiegoś powodu naprawdę potrzebujesz obsługi przeglądarek, które go nie mają
contenteditable
, prawdopodobnie możesz zrobić to samo w JavaScript, używając zdarzeń, chociaż jest to bardzo niechlujne obejście.Pseudo kod:
źródło